diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index d05bebd5c..81159311c 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #endif -#define BUILDDATE " 20080905" +#define BUILDDATE " 20080907" #define VERSION " 1.2.0devel" static int floor_over_floor; @@ -3178,10 +3178,10 @@ static void DoSpriteOrnament(int i) short hitsect, hitwall, hitsprite; hitscan(sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].sectnum, - sintable[(sprite[i].ang+2560+1024)&2047], - sintable[(sprite[i].ang+2048+1024)&2047], - 0, - &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1); + sintable[(sprite[i].ang+2560+1024)&2047], + sintable[(sprite[i].ang+2048+1024)&2047], + 0, + &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1); sprite[i].x = hitx; sprite[i].y = hity; @@ -3270,8 +3270,7 @@ void rendertext(short startspr) if (quitevent) quitevent = 0; } - // vertical gap in "relative" pixels (256 z-units for yrepeat=64) - if (keystatus[KEYSC_UP]) + if (keystatus[KEYSC_UP]) // vertical gap in pixels (32 x-units) { keystatus[KEYSC_UP]=0; if (vgap<255) vgap++; @@ -3282,8 +3281,7 @@ void rendertext(short startspr) if (vgap>0) vgap--; } - // horizontal gap in half "relative" pixels (16 x-units for xrepeat=64) - if (keystatus[KEYSC_RIGHT]) + if (keystatus[KEYSC_RIGHT]) // horizontal gap in half pixels { keystatus[KEYSC_RIGHT]=0; if (hgap<255) hgap++; @@ -3294,7 +3292,7 @@ void rendertext(short startspr) if (hgap>0) hgap--; } - if (keystatus[KEYSC_INSERT]) // space gap in half "relative" pixels + if (keystatus[KEYSC_INSERT]) // space gap in half pixels { keystatus[KEYSC_INSERT]=0; if (spcgap[basetidx]<255) spcgap[basetidx]++; @@ -3327,33 +3325,6 @@ void rendertext(short startspr) if (sprite[curspr].pal>0) sprite[curspr].pal--; } - t=0; - if (keystatus[KEYSC_gUP]) // offsets - { - keystatus[KEYSC_gUP]=0; t=1; - if (sprite[curspr].yoffset<127) sprite[curspr].yoffset++; - } - if (keystatus[KEYSC_gDOWN]) - { - keystatus[KEYSC_gDOWN]=0; t=1; - if (sprite[curspr].yoffset>-128) sprite[curspr].yoffset--; - } - if (keystatus[KEYSC_gLEFT]) - { - keystatus[KEYSC_gLEFT]=0; t=1; - if (sprite[curspr].xoffset<127) sprite[curspr].xoffset++; - } - if (keystatus[KEYSC_gRIGHT]) - { - keystatus[KEYSC_gRIGHT]=0; t=1; - if (sprite[curspr].xoffset>-128) sprite[curspr].xoffset--; - } - if (t==1) - { - Bsprintf(tempbuf,"Offset: %d,%d",sprite[curspr].xoffset,sprite[curspr].yoffset); - message(tempbuf); - } - drawrooms(posx,posy,posz,ang,horiz,cursectnum); #ifdef SUPERBUILD ExtAnalyzeSprites(); @@ -3458,6 +3429,7 @@ void rendertext(short startspr) sprite[i].pal = sprite[curspr].pal; sprite[i].xrepeat = sprite[curspr].xrepeat; sprite[i].yrepeat = sprite[curspr].yrepeat; + sprite[i].xoffset = 0, sprite[i].yoffset = 0; sprite[i].ang = daang; sprite[i].xvel = 0; sprite[i].yvel = 0; sprite[i].zvel = 0; sprite[i].owner = -1; @@ -3469,20 +3441,7 @@ void rendertext(short startspr) sprite[i].xoffset = -(((picanm[sprite[i].picnum])>>8)&255); sprite[i].yoffset = -(((picanm[sprite[i].picnum])>>16)&255); - // Tweaking the position of some letters that are still a bit off - if (basetile == STARTALPHANUM) - { - if (ch=='^') sprite[i].yoffset = 1; - if (ch=='q' || ch=='Q') sprite[i].yoffset = -2; - if (ch==';') sprite[i].yoffset = -3; - } - else if (basetile == MINIFONT) - { - if (ch=='\'') sprite[i].yoffset = 3; - if (ch=='q' || ch=='Q') sprite[i].yoffset = -1; - if (ch==':') sprite[i].yoffset = 1; - if (ch=='"') sprite[i].yoffset = 3; - } + // TODO: tweaking the position of some letters that are still a bit off DoSpriteOrnament(i); @@ -3562,7 +3521,7 @@ void rendertext(short startspr) static void Keys3d(void) { - int i,count,rate,nexti,changedir; + int i,count,nexti,changedir; int j, k, tempint = 0, hiz, loz; int hihit, lohit; char smooshyalign=0, repeatpanalign=0, buffer[80]; @@ -5026,22 +4985,41 @@ static void Keys3d(void) // DoWater(horiz); - if (totalclock != clockval[clockcnt]) + if (framerateon) { - rate=(120*AVERAGEFRAMES)/(totalclock-clockval[clockcnt]); - clockval[clockcnt] = totalclock; - if (framerateon) + 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 x = (xdimgame <= 640); - int p = 32>>x; + int thisSec = ms/1000; + int x = (xdim <= 640); + int chars = Bsprintf(tempbuf, "%2u ms (%3u fps)", howlong, LastCount); - Bsprintf(tempbuf,"%4d",max(rate,0)); - printext256(xdimgame-p-1+1,0+2,0,-1,tempbuf,x); - printext256(xdimgame-p-1,0+1,(rate < 40) ? COLOR_RED : COLOR_WHITE,-1,tempbuf,x); - enddrawing(); + if (!x) + { + printext256(windowx2-(chars<<3)+1,windowy1+2,0,-1,tempbuf,x); + printext256(windowx2-(chars<<3),windowy1+1,COLOR_WHITE,-1,tempbuf,x); + } + else + { + printext256(windowx2-(chars<<2)+1,windowy1+2,0,-1,tempbuf,x); + printext256(windowx2-(chars<<2),windowy1+1,COLOR_WHITE,-1,tempbuf,x); + } + + if (LastSec < thisSec) + { + LastCount = FrameCount / (thisSec - LastSec); + LastSec = thisSec; + FrameCount = 0; + } + FrameCount++; } + LastMS = ms; } - clockcnt = ((clockcnt+1)&(AVERAGEFRAMES-1)); tempbuf[0] = 0; if (bstatus&4 && !(bstatus&(1|2)) && !unrealedlook) //PK @@ -6576,13 +6554,15 @@ static void Keys2d(void) if (sprite[i].picnum == 5 /*&& zoom >= 256*/ && sprite[i].sectnum != MAXSECTORS) { - radius = mulscale15(sprite[i].hitag,zoom); + radius = mulscale14(sprite[i].hitag,zoom); col = 6; if (i+16384 == pointhighlight) if (totalclock & 32) col += (2<<2); -// drawlinepat = 0xf0f0f0f0; + drawlinepat = 0xf0f0f0f0; drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col); -// drawlinepat = 0xffffffff; + drawlinepat = 0xffffffff; +// radius = mulscale15(sprite[i].hitag,zoom); + // drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col); } } enddrawing(); @@ -9716,15 +9696,12 @@ static void FuncMenuOpts(void) printext16(8,ydim-STATUS2DSIZ+72,11,-1,snotbuf,0); Bsprintf(snotbuf,"Global Z coord shift"); printext16(8,ydim-STATUS2DSIZ+80,11,-1,snotbuf,0); - Bsprintf(snotbuf,"Up-size selected sectors"); + Bsprintf(snotbuf,"Resize selection"); printext16(8,ydim-STATUS2DSIZ+88,11,-1,snotbuf,0); - Bsprintf(snotbuf,"Down-size selected sects"); - printext16(8,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0); Bsprintf(snotbuf,"Global shade divide"); - printext16(8,ydim-STATUS2DSIZ+104,11,-1,snotbuf,0); - + printext16(8,ydim-STATUS2DSIZ+96,11,-1,snotbuf,0); Bsprintf(snotbuf,"Global visibility divide"); - printext16(200,ydim-STATUS2DSIZ+48,11,-1,snotbuf,0); + printext16(8,ydim-STATUS2DSIZ+104,11,-1,snotbuf,0); } static void FuncMenu(void) @@ -9765,6 +9742,7 @@ static void FuncMenu(void) } keystatus[KEYSC_UP] = 0; } +#if 0 if (keystatus[KEYSC_LEFT]) { /* if (col == 2) @@ -9784,12 +9762,13 @@ static void FuncMenu(void) col = 0; xpos = 8; rowmax = 7; - dispwidth = 23; + dispwidth = 24; disptext[dispwidth] = 0; if (row > rowmax) row = rowmax; } keystatus[KEYSC_LEFT] = 0; } + if (keystatus[KEYSC_RIGHT]) { if (col == 0) @@ -9814,6 +9793,7 @@ static void FuncMenu(void) } */ keystatus[KEYSC_RIGHT] = 0; } +#endif if (keystatus[KEYSC_ENTER]) { keystatus[KEYSC_ENTER] = 0; @@ -9932,35 +9912,36 @@ static void FuncMenu(void) break; case 5: { - for (i=Bsprintf(disptext,"Up-size selected sectors"); i < dispwidth; i++) disptext[i] = ' '; + for (i=Bsprintf(disptext,"Resize selection"); i < dispwidth; i++) disptext[i] = ' '; if (editval) { - j=getnumber16("Size multiplier: ",1,8,0); - if (j!=1) + j=getnumber16("Percentage of original: ",100,1000,0); + if (j!=100) { int w, currsector, start_wall, end_wall; + double size = (j/100.f); for (i = 0; i < highlightsectorcnt; i++) { currsector = highlightsector[i]; - sector[currsector].ceilingz *= j; - sector[currsector].floorz *= j; + sector[currsector].ceilingz *= size; + sector[currsector].floorz *= size; // Do all the walls in the sector start_wall = sector[currsector].wallptr; end_wall = start_wall + sector[currsector].wallnum; for (w = start_wall; w < end_wall; w++) { - wall[w].x *= j; - wall[w].y *= j; - wall[w].yrepeat = min(wall[w].yrepeat/j,255); + wall[w].x *= size; + wall[w].y *= size; + wall[w].yrepeat = min(wall[w].yrepeat/size,255); } w = headspritesect[highlightsector[i]]; while (w >= 0) { - sprite[w].x *= j; - sprite[w].y *= j; - sprite[w].z *= j; - sprite[w].xrepeat = min(max(sprite[w].xrepeat*j,1),255); - sprite[w].yrepeat = min(max(sprite[w].yrepeat*j,1),255); + sprite[w].x *= size; + sprite[w].y *= size; + sprite[w].z *= size; + sprite[w].xrepeat = min(max(sprite[w].xrepeat*size,1),255); + sprite[w].yrepeat = min(max(sprite[w].yrepeat*size,1),255); w = nextspritesect[w]; } } @@ -9971,46 +9952,6 @@ static void FuncMenu(void) } break; case 6: - { - for (i=Bsprintf(disptext,"Down-size selected sects"); i < dispwidth; i++) disptext[i] = ' '; - if (editval) - { - j=getnumber16("Size divisor: ",1,8,0); - if (j!=1) - { - int w, currsector, start_wall, end_wall; - for (i = 0; i < highlightsectorcnt; i++) - { - currsector = highlightsector[i]; - sector[currsector].ceilingz /= j; - sector[currsector].floorz /= j; - // Do all the walls in the sector - start_wall = sector[currsector].wallptr; - end_wall = start_wall + sector[currsector].wallnum; - for (w = start_wall; w < end_wall; w++) - { - wall[w].x /= j; - wall[w].y /= j; - wall[w].yrepeat = min(wall[w].yrepeat*j,255); - } - w = headspritesect[highlightsector[i]]; - while (w >= 0) - { - sprite[w].x /= j; - sprite[w].y /= j; - sprite[w].z /= j; - sprite[w].xrepeat = min(max(sprite[w].xrepeat/j,1),255); - sprite[w].yrepeat = min(max(sprite[w].yrepeat/j,1),255); - w = nextspritesect[w]; - } - } - printmessage16("Map scaled"); - } - else printmessage16("Aborted"); - } - } - break; - case 7: { for (i=Bsprintf(disptext,"Global shade divide"); i < dispwidth; i++) disptext[i] = ' '; if (editval) @@ -10033,12 +9974,7 @@ static void FuncMenu(void) } } break; - } - break; - case 1: - switch (row) - { - case 0: + case 7: { for (i=Bsprintf(disptext,"Global visibility divide"); i < dispwidth; i++) disptext[i] = ' '; if (editval) diff --git a/polymer/eduke32/source/duke3d.h b/polymer/eduke32/source/duke3d.h index 3ad467513..cb2038f76 100644 --- a/polymer/eduke32/source/duke3d.h +++ b/polymer/eduke32/source/duke3d.h @@ -477,7 +477,7 @@ typedef struct { short somethingonplayer,on_crane,i,one_parallax_sectnum; short over_shoulder_on,random_club_frame,fist_incs; short one_eighty_count,cheat_phase; - short dummyplayersprite,extra_extra8,quick_kick; + short dummyplayersprite,extra_extra8,quick_kick,last_quick_kick; short heat_amount,actorsqu,timebeforeexit,customexitsound; short weaprecs[16],weapreccnt; diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 7ff322733..16ec84670 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -2560,17 +2560,62 @@ static void coolgaugetext(int snum) static void ShowFrameRate(void) { - static int frameval[AVERAGEFRAMES], framecnt = 0; - - if (totalclock != frameval[framecnt]) + // adapted from ZDoom because I like it better than what we had + // applicable ZDoom code available under GPL from csDoom + if (ud.tickrate == 1) { - framerate=(timer*AVERAGEFRAMES)/(totalclock-frameval[framecnt]); - frameval[framecnt] = totalclock; - if (ud.tickrate) + 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); + int chars = Bsprintf(tempbuf, "%2u ms (%3u fps)", howlong, LastCount); + + if (!x) + { + printext256(windowx2-(chars<<3)+1,windowy1+2,0,-1,tempbuf,x); + printext256(windowx2-(chars<<3),windowy1+1,COLOR_WHITE,-1,tempbuf,x); + } + else + { + printext256(windowx2-(chars<<2)+1,windowy1+2,0,-1,tempbuf,x); + printext256(windowx2-(chars<<2),windowy1+1,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) + { + framerate = LastCount = FrameCount / (thisSec - LastSec); + LastSec = thisSec; + FrameCount = 0; + } + FrameCount++; + } + LastMS = ms; + } + else if (ud.tickrate == 2) + { + static int frameval[AVERAGEFRAMES], framecnt = 0; + + if (totalclock != frameval[framecnt]) { 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); @@ -2582,45 +2627,35 @@ static void ShowFrameRate(void) printext256(4L*p,0,COLOR_WHITE,-1,".",0); } } + framecnt = ((framecnt+1)&(AVERAGEFRAMES-1)); } - framecnt = ((framecnt+1)&(AVERAGEFRAMES-1)); } static void ShowCoordinates(int snum) { - int y = 8; + int y = 16; if ((gametype_flags[ud.coop] & GAMETYPE_FLAG_FRAGBAR)) { if (ud.multimode > 4) - y = 24; + y = 32; else if (ud.multimode > 1) - y = 16; + y = 24; } - sprintf(tempbuf,"X= %d",g_player[snum].ps->posx); + sprintf(tempbuf,"XYZ= (%d,%d,%d)",g_player[snum].ps->posx,g_player[snum].ps->posy,g_player[snum].ps->posz); printext256(250L,y,31,-1,tempbuf,0); - sprintf(tempbuf,"Y= %d",g_player[snum].ps->posy); + Bsprintf(tempbuf,"A/H= %d,%d",g_player[snum].ps->ang,g_player[snum].ps->horiz); printext256(250L,y+9L,31,-1,tempbuf,0); - Bsprintf(tempbuf,"Z= %d",g_player[snum].ps->posz); - printext256(250L,y+18L,31,-1,tempbuf,0); - Bsprintf(tempbuf,"A= %d",g_player[snum].ps->ang); - printext256(250L,y+27L,31,-1,tempbuf,0); - Bsprintf(tempbuf,"H= %d",g_player[snum].ps->horiz); - printext256(250L,y+36L,31,-1,tempbuf,0); Bsprintf(tempbuf,"ZV= %d",g_player[snum].ps->poszv); - printext256(250L,y+45L,31,-1,tempbuf,0); + printext256(250L,y+18L,31,-1,tempbuf,0); Bsprintf(tempbuf,"OG= %d",g_player[snum].ps->on_ground); - printext256(250L,y+54L,31,-1,tempbuf,0); - Bsprintf(tempbuf,"AM= %d",g_player[snum].ps->ammo_amount[GROW_WEAPON]); - printext256(250L,y+63L,31,-1,tempbuf,0); - Bsprintf(tempbuf,"LFW= %d",g_player[snum].ps->last_full_weapon); - printext256(250L,y+72L,31,-1,tempbuf,0); + printext256(250L,y+27L,31,-1,tempbuf,0); Bsprintf(tempbuf,"SECTL= %d",sector[g_player[snum].ps->cursectnum].lotag); - printext256(250L,y+81L,31,-1,tempbuf,0); + printext256(250L,y+36L,31,-1,tempbuf,0); Bsprintf(tempbuf,"SEED= %d",randomseed); - printext256(250L,y+90L,31,-1,tempbuf,0); + printext256(250L,y+45L,31,-1,tempbuf,0); Bsprintf(tempbuf,"THOLD= %d",g_player[snum].ps->transporter_hold); - printext256(250L,y+99L+7,31,-1,tempbuf,0); + printext256(250L,y+54L+7,31,-1,tempbuf,0); } static void operatefta(void) diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index 476523cc6..bec2d4ba3 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -776,6 +776,7 @@ const memberlabel_t playerlabels[]= { "max_player_health", PLAYER_MAX_PLAYER_HEALTH, 0, 0 }, { "max_shield_amount", PLAYER_MAX_SHIELD_AMOUNT, 0, 0 }, { "max_ammo_amount", PLAYER_MAX_AMMO_AMOUNT, LABEL_HASPARM2, MAX_WEAPONS }, + { "last_quick_kick", PLAYER_LAST_QUICK_KICK, 0, 0 }, { "", -1, 0, 0 } // END OF LIST }; diff --git a/polymer/eduke32/source/gamedef.h b/polymer/eduke32/source/gamedef.h index b59fe3cac..09272c0b1 100644 --- a/polymer/eduke32/source/gamedef.h +++ b/polymer/eduke32/source/gamedef.h @@ -73,14 +73,14 @@ extern const memberlabel_t userdeflabels[]; extern const memberlabel_t inputlabels[]; extern const memberlabel_t tsprlabels[]; -extern void DoUserDef(int iSet, int lLabelID, int lVar2); -extern void DoThisProjectile(int iSet, int lVar1, int lLabelID, int lVar2); -extern void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2); -extern void DoInput(int iSet, int lVar1, int lLabelID, int lVar2); -extern void DoWall(int iSet, int lVar1, int lLabelID, int lVar2); -extern void DoSector(int iSet, int lVar1, int lLabelID, int lVar2); -extern void DoActor(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2); -extern void DoTsprite(int iSet, int lVar1, int lLabelID, int lVar2); +extern void DoUserDef(int iSet, int lLabelID, int lVar2); +extern void DoThisProjectile(int iSet, int lVar1, int lLabelID, int lVar2); +extern void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2); +extern void DoInput(int iSet, int lVar1, int lLabelID, int lVar2); +extern void DoWall(int iSet, int lVar1, int lLabelID, int lVar2); +extern void DoSector(int iSet, int lVar1, int lLabelID, int lVar2); +extern void DoActor(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2); +extern void DoTsprite(int iSet, int lVar1, int lLabelID, int lVar2); extern void DoProjectile(int iSet, int lVar1, int lLabelID, int lVar2); #define CON_ERROR OSD_ERROR "Line %d, %s: " @@ -270,6 +270,7 @@ enum playerlabels PLAYER_MAX_PLAYER_HEALTH, PLAYER_MAX_SHIELD_AMOUNT, PLAYER_MAX_AMMO_AMOUNT, + PLAYER_LAST_QUICK_KICK, PLAYER_END }; diff --git a/polymer/eduke32/source/gamestructures.c b/polymer/eduke32/source/gamestructures.c index ca567f86f..62d0ef657 100644 --- a/polymer/eduke32/source/gamestructures.c +++ b/polymer/eduke32/source/gamestructures.c @@ -2505,6 +2505,15 @@ void DoPlayer(int iSet, int lVar1, int lLabelID, int lVar2, int lParm2) SetGameVarID(lVar2, g_player[iPlayer].ps->max_ammo_amount[lParm2], g_i, g_p); return; + case PLAYER_LAST_QUICK_KICK: + if (iSet) + { + g_player[iPlayer].ps->last_quick_kick=lValue; + return; + } + SetGameVarID(lVar2, g_player[iPlayer].ps->last_quick_kick, g_i, g_p); + return; + default: return; } diff --git a/polymer/eduke32/source/mapster32.h b/polymer/eduke32/source/mapster32.h index f4d0f8bb5..8f4011a93 100644 --- a/polymer/eduke32/source/mapster32.h +++ b/polymer/eduke32/source/mapster32.h @@ -43,11 +43,10 @@ extern short editstatus, searchit; extern int searchx, searchy, osearchx, osearchy; //search input extern short searchsector, searchwall, searchstat; //search output -#define AVERAGEFRAMES 128 #define COLOR_RED 248 #define COLOR_WHITE 31 -static int ototalclock = 0, clockval[AVERAGEFRAMES], clockcnt = 0; +static int ototalclock = 0; #define NUMOPTIONS 9 diff --git a/polymer/eduke32/source/osdcmds.c b/polymer/eduke32/source/osdcmds.c index c3add76ab..971e83d76 100644 --- a/polymer/eduke32/source/osdcmds.c +++ b/polymer/eduke32/source/osdcmds.c @@ -748,7 +748,7 @@ cvarmappings cvar[] = #endif { "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 0, 2 }, { "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 0, 1 }, - { "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_BOOL, 0, 0, 1 }, + { "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_INT, 0, 0, 2 }, { "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 0, 1 }, { "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 }, diff --git a/polymer/eduke32/source/player.c b/polymer/eduke32/source/player.c index 4f9fa054d..f631cd6fe 100644 --- a/polymer/eduke32/source/player.c +++ b/polymer/eduke32/source/player.c @@ -2143,7 +2143,7 @@ static void myospalw(int x, int y, int tilenum, int shade, int orientation, int } } -static int fistsign, last_quick_kick[MAXPLAYERS]; +static int fistsign; void displayweapon(int snum) { @@ -2200,7 +2200,7 @@ void displayweapon(int snum) if (GetGameVarID(g_iReturnVarID,p->i,snum) == 0) { j = 14-p->quick_kick; - if (j != 14 || last_quick_kick[snum]) + if (j != 14 || p->last_quick_kick) { if (sprite[p->i].pal == 1) pal = 1; @@ -3151,12 +3151,12 @@ static int doincrements(player_struct *p) if (p->quick_kick > 0 && sprite[p->i].pal != 1) { - last_quick_kick[snum] = p->quick_kick+1; + p->last_quick_kick = p->quick_kick+1; p->quick_kick--; if (p->quick_kick == 8) shoot(p->i,KNEE); } - else if (last_quick_kick[snum] > 0) last_quick_kick[snum]--; + else if (p->last_quick_kick > 0) p->last_quick_kick--; if (p->access_incs && sprite[p->i].pal != 1) { diff --git a/polymer/eduke32/source/startwin.game.c b/polymer/eduke32/source/startwin.game.c index 0f907e642..19281a415 100644 --- a/polymer/eduke32/source/startwin.game.c +++ b/polymer/eduke32/source/startwin.game.c @@ -238,13 +238,17 @@ static INT_PTR CALLBACK ConfigPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L if (i != CB_ERR) i = ComboBox_GetItemData((HWND)lParam, i); if (i != CB_ERR) { - for (j=0,dir=finddirs;dir != NULL;dir=dir->next,j++) - if (j == i) - { - if (i==0) settings.gamedir = NULL; - else settings.gamedir = dir->prev->name; - break; - } + if (i==0) + settings.gamedir = NULL; + else + { + for (j=1,dir=finddirs;dir != NULL;dir=dir->next,j++) + if (j == i) + { + settings.gamedir = dir->name; + break; + } + } } } return TRUE;