diff --git a/polymer/eduke32/build/Makefile.shared b/polymer/eduke32/build/Makefile.shared index ef18888eb..861d672be 100644 --- a/polymer/eduke32/build/Makefile.shared +++ b/polymer/eduke32/build/Makefile.shared @@ -187,10 +187,10 @@ endif ifeq ($(PRETTY_OUTPUT),1) BUILD_STARTED = printf "\033[K\033[1;36mBuild started using \"$(CC) $(OURCFLAGS)\"\033[0m\n" BUILD_FINISHED = printf "\033[K\033[1;36mBuild successful:\033[0m\n" -COMPILE_STATUS = printf "\033[K\033[0;37mBuilding object \033[1;37m$@\033[0;37m...\033[0m\r" +COMPILE_STATUS = printf "\033[K\033[0mBuilding object \033[1m$@\033[0m...\033[0m\r" COMPILE_OK = printf "\033[K\033[0;32mBuilt object \033[1;32m$@\033[0;32m.\033[0m\n" COMPILE_FAILED = printf "\033[K\033[0;31mFailed building \033[1;31m$@\033[0;31m from\033[0m \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 -LINK_STATUS = printf "\033[K\033[0;37mLinking executable \033[1;37m$@\033[0;37m...\033[0m\r" +LINK_STATUS = printf "\033[K\033[0;0mLinking executable \033[1m$@\033[0;0m...\033[0m\r" LINK_OK = printf "\033[K\033[0;32mLinked executable \033[1;32m$@\033[0;32m.\033[0m\n" LINK_FAILED = printf "\033[K\033[0;31mFailed linking executable \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1 else diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index a98ddd857..d59952245 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -2743,6 +2743,15 @@ void overheadeditor(void) if (((bstatus&1) < (oldmousebstatus&1)) && (highlightsectorcnt < 0)) //after dragging { + int wallsdrawn = newnumwalls-numwalls; + + if (newnumwalls != -1) + { + newnumwalls = -1; + Bmemcpy(&wall[MAXWALLS-wallsdrawn],&wall[numwalls],sizeof(walltype) * wallsdrawn); + } + else wallsdrawn = -1; + j = 1; if (highlightcnt > 0) for (i=0;i 3) + if (sector[sectorofwall(wall[i].point2)].wallnum > 3) + if (!(wall[i].nextwall == -1 || + (sector[sectorofwall(wall[i].nextwall)].wallnum > 3 && + sector[sectorofwall(wall[wall[i].nextwall].point2)].wallnum > 3))) + { + printmessage16("Invalid operation, delete or join sector instead."); + goto SKIP; + } } + + for (i=numwalls-1;i>=0;i--) //delete points + { + if (wall[i].x == wall[wall[i].point2].x) + if (wall[i].y == wall[wall[i].point2].y) + if (sector[sectorofwall((short)i)].wallnum > 3) + if (sector[sectorofwall(wall[i].point2)].wallnum > 3) + if (wall[i].nextwall == -1 || + (sector[sectorofwall(wall[i].nextwall)].wallnum > 3 && + sector[sectorofwall(wall[wall[i].nextwall].point2)].wallnum > 3)) + { + deletepoint((short)i); + printmessage16("Point deleted."); + asksave = 1; + } + } + for (i=0;i 0) //drag points { if (highlightsectorcnt > 0) @@ -3030,9 +3068,9 @@ void overheadeditor(void) { gridlock = 1-gridlock, keystatus[0x26] = 0; if (gridlock == 0) - printmessage16("Grid locking OFF"); + printmessage16("Grid locking off"); else - printmessage16("Grid locking ON"); + printmessage16("Grid locking on"); } if (keystatus[0x24]) // J (join sectors) @@ -3040,12 +3078,58 @@ void overheadeditor(void) if (joinsector[0] >= 0) { joinsector[1] = -1; + for (i=0;i= endwall) + { + printmessage16("Join non-adjacent sectors? (Y/N)"); + showframe(1); + bflushchars(); ch = 0; + while (keystatus[1] == 0) + { + if (handleevents()) + { + if (quitevent) + { + quitevent = 0; + } + } + idle(); + + ch = bgetchar(); + + if (ch == 'Y' || ch == 'y') + { + joinsector[1] = i; + break; + } + else if (ch == 'N' || ch == 'n' || ch == 13 || ch == ' ') + { + joinsector[1] = joinsector[0]; + break; + } + } + break; + } + else + { + joinsector[1] = i; + break; + } } + } + if ((joinsector[1] >= 0) && (joinsector[0] != joinsector[1])) { newnumwalls = numwalls; @@ -4151,6 +4235,15 @@ void overheadeditor(void) } else if (linehighlight >= 0) { + int wallsdrawn = newnumwalls-numwalls; + + if (newnumwalls != -1) + { + newnumwalls = -1; + Bmemcpy(&wall[MAXWALLS-wallsdrawn],&wall[numwalls],sizeof(walltype) * wallsdrawn); + } + else wallsdrawn = -1; + getclosestpointonwall(mousxplc,mousyplc,(int)linehighlight,&dax,&day); adjustmark(&dax,&day,newnumwalls); insertpoint(linehighlight,dax,day); @@ -4190,6 +4283,14 @@ void overheadeditor(void) // } //} + if (wallsdrawn != -1) + { + Bmemcpy(&wall[numwalls],&wall[MAXWALLS-wallsdrawn],sizeof(walltype) * wallsdrawn); + newnumwalls = numwalls + wallsdrawn; + for (i=numwalls;i MAXSECTORSV7 || numwalls > MAXWALLSV7 || numsprites > MAXSPRITESV7); - printext16(8, ydim-STATUS2DSIZ+128+2, 9, 0, snotbuf,0); - Bsprintf(snotbuf,"%d/%d sect. %d/%d walls %d/%d spri.", - numsectors,m?MAXSECTORSV8:MAXSECTORSV7, - numwalls,m?MAXWALLSV8:MAXWALLSV7, - numsprites,m?MAXSPRITESV8:MAXSPRITESV7); + numsectors,m?MAXSECTORSV8:MAXSECTORSV7, + numwalls,m?MAXWALLSV8:MAXWALLSV7, + numsprites,m?MAXSPRITESV8:MAXSPRITESV7); + i = 0; while ((snotbuf[i] != 0) && (i < 46)) i++; diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index 511463b70..b9c016c66 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -8003,11 +8003,10 @@ int loadpics(char *filename, int askedsize) artsize += ((dasiz+15)&0xfffffff0); } kclose(fil); - - numtilefiles++; } + numtilefiles++; } - while (k != numtilefiles); + while (k != numtilefiles && k < 64); clearbuf(&gotpic[0],(int)((MAXTILES+31)>>5),0L); @@ -11140,8 +11139,8 @@ void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride) if (j < 0) { - col = 7; - if (i == linehighlight) if (totalclock & 16) col += (2<<2); + col = 15; + if (i == linehighlight) if (totalclock & 16) col -= (2<<2); } else { diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index 2898dea03..7d0519b7a 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -44,7 +44,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #endif -#define BUILDDATE " 20081024" +#define BUILDDATE " 20081031" #define VERSION " 1.2.0devel" static int floor_over_floor; diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index aeb11346e..7e64c4396 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -161,6 +161,10 @@ int leveltexttime = 0; int r_maxfps = 0; unsigned int g_FrameDelay = 0; +#ifdef RENDERTYPEWIN +extern char forcegl; +#endif + int kopen4loadfrommod(char *filename, char searchfirst) { static char fn[BMAX_PATH]; @@ -2604,73 +2608,47 @@ static void coolgaugetext(int snum) } } -#define AVERAGEFRAMES 128 #define COLOR_RED 248 #define COLOR_WHITE 31 +#define LOW_FPS 30 static void ShowFrameRate(void) { // adapted from ZDoom because I like it better than what we had // applicable ZDoom code available under GPL from csDoom - if (ud.tickrate == 1) + static int FrameCount = 0; + static int LastCount = 0; + static int LastSec = 0; + static int LastMS = 0; + int ms = getticks(); + int howlong = ms - LastMS; + if (howlong >= 0) { - static int FrameCount = 0; - static int LastCount = 0; - static int LastSec = 0; - static int LastMS = 0; - int ms = getticks(); - int howlong = ms - LastMS; - if (howlong >= 0) + int thisSec = ms/1000; + int x = (xdim <= 640); + if (ud.tickrate) { - int thisSec = ms/1000; - int x = (xdim <= 640); int chars = Bsprintf(tempbuf, "%2u ms (%3u fps)", howlong, LastCount); printext256(windowx2-(chars<<(3-x))+1,windowy1+2,0,-1,tempbuf,x); - printext256(windowx2-(chars<<(3-x)),windowy1+1,COLOR_WHITE,-1,tempbuf,x); + printext256(windowx2-(chars<<(3-x)),windowy1+1,(LastCount < LOW_FPS) ? COLOR_RED : COLOR_WHITE,-1,tempbuf,x); - if (numplayers > 1) - if ((totalclock - lastpackettime) > 1) - { - for (howlong = (totalclock - lastpackettime);howlong>0 && howlong<(xdim>>2);howlong--) - printext256(4L*howlong,0,COLOR_WHITE,-1,".",0); - } - - if (LastSec < thisSec) + if (numplayers > 1 && (totalclock - lastpackettime) > 1) { - framerate = LastCount = FrameCount / (thisSec - LastSec); - LastSec = thisSec; - FrameCount = 0; + for (howlong = (totalclock - lastpackettime);howlong>0 && howlong<(xdim>>2);howlong--) + printext256(4L*howlong,0,COLOR_WHITE,-1,".",0); } - FrameCount++; } - LastMS = ms; - } - else if (ud.tickrate == 2) - { - static int frameval[AVERAGEFRAMES], framecnt = 0; - if (totalclock != frameval[framecnt]) + if (LastSec < thisSec) { - int x = (xdim <= 640); - int p = 32>>x; - - framerate=(timer*AVERAGEFRAMES)/(totalclock-frameval[framecnt]); - frameval[framecnt] = totalclock; - - Bsprintf(tempbuf,"%4d",max(framerate,0)); - printext256(windowx2-p+1,windowy1+2,0,-1,tempbuf,x); - printext256(windowx2-p,windowy1+1,(framerate < 40) ? COLOR_RED : COLOR_WHITE,-1,tempbuf,x); - - if (numplayers > 1) - if ((totalclock - lastpackettime) > 1) - { - for (p = (totalclock - lastpackettime);p>0 && p<(xdim>>2);p--) - printext256(4L*p,0,COLOR_WHITE,-1,".",0); - } + framerate = LastCount = FrameCount / (thisSec - LastSec); + LastSec = thisSec; + FrameCount = 0; } - framecnt = ((framecnt+1)&(AVERAGEFRAMES-1)); + FrameCount++; } + LastMS = ms; } static void ShowCoordinates(int snum) @@ -3949,26 +3927,27 @@ void displayrest(int smoothratio) { if (ud.screen_size == 4) { - i = scale(tilesizy[ud.althud ? SHIELD : INVENTORYBOX]+2,ud.statusbarscale,100); - j = scale(scale(6,ud.config.ScreenWidth,320),ud.statusbarscale,100); + i = scale(ud.althud?tilesizy[BIGALPHANUM]+10:tilesizy[INVENTORYBOX]+2,ud.statusbarscale,100); +// j = scale(scale(6,ud.config.ScreenWidth,320),ud.statusbarscale,100); } else if (ud.screen_size > 2) { i = scale(tilesizy[BOTTOMSTATUSBAR]+1,ud.statusbarscale,100); - j = scale(2,ud.config.ScreenWidth,320); + // j = scale(2,ud.config.ScreenWidth,320); } else { i = 2; - j = scale(2,ud.config.ScreenWidth,320); + // j = scale(2,ud.config.ScreenWidth,320); } + j = scale(2,ud.config.ScreenWidth,320); Bsprintf(tempbuf,"T:^15%d:%02d.%02d", (g_player[myconnectindex].ps->player_par/(26*60)), (g_player[myconnectindex].ps->player_par/26)%60, ((g_player[myconnectindex].ps->player_par%26)*38)/10 ); - gametext_z(9,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-7-7-7,tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); + gametext_z(13,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-textsc(21),tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); if (ud.player_skill > 3 || (ud.multimode > 1 && !GTFLAGS(GAMETYPE_FLAG_PLAYERSFRIENDLY))) Bsprintf(tempbuf,"K:^15%d",(ud.multimode>1 &&!GTFLAGS(GAMETYPE_FLAG_PLAYERSFRIENDLY))?g_player[myconnectindex].ps->frag-g_player[myconnectindex].ps->fraggedself:g_player[myconnectindex].ps->actors_killed); @@ -3983,12 +3962,12 @@ void displayrest(int smoothratio) g_player[myconnectindex].ps->max_actors_killed>g_player[myconnectindex].ps->actors_killed? g_player[myconnectindex].ps->max_actors_killed:g_player[myconnectindex].ps->actors_killed); } - gametext_z(9,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-7-7,tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); + gametext_z(13,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-textsc(14),tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); if (g_player[myconnectindex].ps->secret_rooms == g_player[myconnectindex].ps->max_secret_rooms) Bsprintf(tempbuf,"S:%d/%d", g_player[myconnectindex].ps->secret_rooms,g_player[myconnectindex].ps->max_secret_rooms); else Bsprintf(tempbuf,"S:^15%d/%d", g_player[myconnectindex].ps->secret_rooms,g_player[myconnectindex].ps->max_secret_rooms); - gametext_z(9,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-7,tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); + gametext_z(13,STARTALPHANUM, j,scale(200-i,ud.config.ScreenHeight,200)-textsc(7),tempbuf,0,10,26,0, 0, xdim-1, ydim-1, 65536); } if (g_player[myconnectindex].ps->gm&MODE_TYPE) @@ -9607,6 +9586,14 @@ static void checkcommandline(int argc, const char **argv) i++; continue; } +#ifdef RENDERTYPEWIN + if (!Bstrcasecmp(c+1,"forcegl")) + { + forcegl = 1; + i++; + continue; + } +#endif } if (firstnet > 0) @@ -10774,6 +10761,10 @@ void app_main(int argc,const char **argv) checkcommandline(argc,argv); +#ifdef RENDERTYPEWIN + if (forcegl) initprintf("GL driver blacklist disabled.\n"); +#endif + g_player[0].ps = (player_struct *) Bcalloc(1, sizeof(player_struct)); g_player[0].sync = (input_t *) Bcalloc(1, sizeof(input_t)); diff --git a/polymer/eduke32/source/global.c b/polymer/eduke32/source/global.c index 60320e88a..d2e4d92fb 100644 --- a/polymer/eduke32/source/global.c +++ b/polymer/eduke32/source/global.c @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. //------------------------------------------------------------------------- #include "duke3d.h" -char *s_builddate = "20081024"; +char *s_builddate = "20081031"; char *MusicPtr = NULL; int Musicsize; diff --git a/polymer/eduke32/source/premap.c b/polymer/eduke32/source/premap.c index b1e51291e..73f1de12c 100644 --- a/polymer/eduke32/source/premap.c +++ b/polymer/eduke32/source/premap.c @@ -1733,7 +1733,9 @@ int enterlevel(int g) p[2]='g'; p[3]='g'; p[4]=0; + fil = kopen4loadfrommod(levname,0); + if (fil > -1) { kclose(fil); @@ -1748,11 +1750,14 @@ int enterlevel(int g) Bfree(map[ud.m_level_number].musicfn1); map[ud.m_level_number].musicfn1 = NULL; } + p[1]='m'; p[2]='i'; p[3]='d'; p[4]=0; + fil = kopen4loadfrommod(levname,0); + if (fil == -1) Bsprintf(levname,"dethtoll.mid"); else kclose(fil);