From 71cd8fd6c3ed0fa060ecb4f6b87194177796f1c3 Mon Sep 17 00:00:00 2001 From: terminx Date: Fri, 1 Feb 2008 03:36:54 +0000 Subject: [PATCH] Patch from hunter_rus, untested git-svn-id: https://svn.eduke32.com/eduke32@605 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/build/include/build.h | 1 + polymer/build/src/build.c | 22 +++++++++++----------- polymer/build/src/defs.c | 4 +++- polymer/build/src/engine.c | 14 +++++++++----- polymer/build/src/mdsprite.c | 31 ++++++++++++++----------------- polymer/eduke32/source/duke3d.h | 2 +- 6 files changed, 39 insertions(+), 35 deletions(-) diff --git a/polymer/build/include/build.h b/polymer/build/include/build.h index 77b796d58..43badba53 100644 --- a/polymer/build/include/build.h +++ b/polymer/build/include/build.h @@ -158,6 +158,7 @@ typedef struct BPACK typedef struct BPACK { unsigned int mdanimtims; + int oldmdtims; short mdanimcur; short angoff; short pitch, roll; diff --git a/polymer/build/src/build.c b/polymer/build/src/build.c index 19fbc3c26..b90db4564 100644 --- a/polymer/build/src/build.c +++ b/polymer/build/src/build.c @@ -637,7 +637,7 @@ void editinput(void) goalz += mousz; if (keystatus[buildkeys[8]] > 0) //A (stand high) { - if (keystatus[0x1d] > 0) + if ((keystatus[0x1d]|keystatus[0x9d]) > 0) horiz = max(-100,horiz-((keystatus[buildkeys[4]]+1)*synctics*2)); else { @@ -648,7 +648,7 @@ void editinput(void) } if (keystatus[buildkeys[9]] > 0) //Z (stand low) { - if (keystatus[0x1d] > 0) + if ((keystatus[0x1d]|keystatus[0x9d]) > 0) horiz = min(300,horiz+((keystatus[buildkeys[4]]+1)*synctics*2)); else { @@ -673,7 +673,7 @@ void editinput(void) goalz = posz; if (keystatus[buildkeys[8]] > 0) //A { - if (keystatus[0x1d] > 0) + if ((keystatus[0x1d]|keystatus[0x9d]) > 0) { horiz = max(-100,horiz-((keystatus[buildkeys[4]]+1)*synctics*2)); } @@ -690,7 +690,7 @@ void editinput(void) } if (keystatus[buildkeys[9]] > 0) //Z (stand low) { - if (keystatus[0x1d] > 0) + if ((keystatus[0x1d]|keystatus[0x9d]) > 0) { horiz = min(300,horiz+((keystatus[buildkeys[4]]+1)*synctics*2)); } @@ -1445,7 +1445,7 @@ void editinput(void) if (keystatus[0x2e] > 0) //C { keystatus[0x2e] = 0; - if (keystatus[0x38] > 0) //Alt-C + if ((keystatus[0x38]|keystatus[0xb8]) > 0) //Alt-C { if (somethingintab < 255) { @@ -5807,7 +5807,7 @@ CANCEL: } if (bad == 2) { - char *f; + char *f;int res; keystatus[0x1c] = 0; boardfilename[i] = '.'; @@ -5835,16 +5835,16 @@ CANCEL: fixspritesectors(); //Do this before saving! updatesector(startposx,startposy,&startsectnum); ExtPreSaveMap(); - saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); + res=saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); ExtSaveMap(f); - printmessage16("Board saved."); + printmessage16((res==0)?"Board saved.":"Saving board failed."); Bstrcpy(boardfilename, selectedboardfilename); } bad = 0; } else if (ch == 's' || ch == 'S') //S { - char *f; + char *f;int res; bad = 0; printmessage16("Saving board..."); showframe(1); @@ -5859,9 +5859,9 @@ CANCEL: if (!f) f = boardfilename; else f++; } ExtPreSaveMap(); - saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); + res=saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); ExtSaveMap(f); - printmessage16("Board saved."); + printmessage16((res==0)?"Board saved.":"Saving board failed."); showframe(1); } else if (ch == 'q' || ch == 'Q') //Q diff --git a/polymer/build/src/defs.c b/polymer/build/src/defs.c index 4af0ca389..99d40bfb5 100644 --- a/polymer/build/src/defs.c +++ b/polymer/build/src/defs.c @@ -357,6 +357,7 @@ static int defsparser(scriptfile *script) if (!kzfindfile(buf)) { initprintf("Error: file '%s' does not exist\n",fn); + pathsearchmode = i; break; } } @@ -1433,7 +1434,8 @@ case T_REDPAL: case T_BLUEPAL: case T_BROWNPAL: case T_GREYPAL: case T_GREENPAL: } #if defined(POLYMOST) && defined(USE_OPENGL) - if (palmapbits&&fnB) { + if (palmapbits&&fnB) + { int i; for (i=0;i<=25;i++) if (!(palbits&(1< { int roll; @@ -7397,6 +7398,7 @@ int loadmaphack(char *filename) } spriteext[whichsprite].roll = (short)roll; } + break; case T_MDXOFF: // mdxoff { int i; @@ -7411,6 +7413,7 @@ int loadmaphack(char *filename) } spriteext[whichsprite].xoff = i; } + break; case T_MDYOFF: // mdyoff { int i; @@ -7425,6 +7428,7 @@ int loadmaphack(char *filename) } spriteext[whichsprite].yoff = i; } + break; case T_MDZOFF: // mdzoff { int i; @@ -7585,12 +7589,12 @@ int saveboard(char *filename, int *daposx, int *daposy, int *daposz, spri=tspri; - for (j=0;jx = B_LITTLE32(spri->x); spri->y = B_LITTLE32(spri->y); spri->z = B_LITTLE32(spri->z); @@ -7606,7 +7610,7 @@ int saveboard(char *filename, int *daposx, int *daposy, int *daposz, spri->lotag = B_LITTLE16(spri->lotag); spri->hitag = B_LITTLE16(spri->hitag); spri->extra = B_LITTLE16(spri->extra); - i = nextspritestat[i];spri++; + spri++; } } diff --git a/polymer/build/src/mdsprite.c b/polymer/build/src/mdsprite.c index a6765ee3e..9af420fc7 100644 --- a/polymer/build/src/mdsprite.c +++ b/polymer/build/src/mdsprite.c @@ -203,10 +203,10 @@ int addtileP(int model,int tile,int pallet) if (curextra==MAXTILES+EXTRATILES-2)return curextra; if (tile2model[tile].modelid==-1){tile2model[tile].pal=pallet;return tile;} if (tile2model[tile].pal==pallet)return tile; - while(tile2model[tile].next!=-1) + while (tile2model[tile].next!=-1) { tile=tile2model[tile].next; - if(tile2model[tile].pal==pallet)return tile; + if (tile2model[tile].pal==pallet)return tile; } tile2model[tile].next=curextra; tile2model[curextra].pal=pallet; @@ -1046,13 +1046,10 @@ static void updateanimation(md2model *m, spritetype *tspr) int fps; m->cframe = m->nframe = tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].framenum; - if (mdpause) + if (!mdpause&&spriteext[tspr->owner].oldmdtims!=mdtims) { -// spriteext[tspr->owner].mdanimtims = mdtims; - m->interpol = 0; - spriteext[tspr->owner].mdanimtims = mdtims; - spriteext[tspr->picnum].mdanimtims = mdtims; - return; + spriteext[tspr->owner].mdanimtims+=max(0,mdtims-omdtims); + spriteext[tspr->owner].oldmdtims=mdtims; } for (anim = m->animations; @@ -1064,14 +1061,14 @@ static void updateanimation(md2model *m, spritetype *tspr) { if (spritesmooth[tspr->owner].mdsmooth == 0) { - spriteext[tspr->owner].mdanimtims = mdtims; + spriteext[tspr->owner].mdanimtims = 0; m->interpol = 0; spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdcurframe = m->cframe; } if (r_animsmoothing && (tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].smoothduration != 0) && (spritesmooth[tspr->owner].mdcurframe != m->cframe)) { - spriteext[tspr->owner].mdanimtims = mdtims; + spriteext[tspr->owner].mdanimtims = 0; m->interpol = 0; spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdoldframe = spritesmooth[tspr->owner].mdcurframe; @@ -1080,7 +1077,7 @@ static void updateanimation(md2model *m, spritetype *tspr) } else if (r_animsmoothing && (tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].smoothduration != 0) && (spritesmooth[tspr->owner].mdcurframe != m->cframe)) { - spriteext[tspr->owner].mdanimtims = mdtims; + spriteext[tspr->owner].mdanimtims = 0; m->interpol = 0; spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdoldframe = spritesmooth[tspr->owner].mdcurframe; @@ -1098,7 +1095,7 @@ static void updateanimation(md2model *m, spritetype *tspr) //if (spriteext[tspr->owner].flags & SPREXT_NOMDANIM) OSD_Printf("SPREXT_NOMDANIM\n"); //OSD_Printf("smooth launched ! oldanim %i new anim %i\n", spriteext[tspr->owner].mdanimcur, anim->startframe); spriteext[tspr->owner].mdanimcur = (short)anim->startframe; - spriteext[tspr->owner].mdanimtims = mdtims; + spriteext[tspr->owner].mdanimtims = 0; m->interpol = 0; if (!r_animsmoothing || (tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].smoothduration == 0)) { @@ -1116,16 +1113,16 @@ static void updateanimation(md2model *m, spritetype *tspr) else fps = anim->fpssc; - i = (mdtims-spriteext[tspr->owner].mdanimtims)*((fps*timerticspersec)/120); + i = (spriteext[tspr->owner].mdanimtims)*((fps*timerticspersec)/120); if (spritesmooth[tspr->owner].mdsmooth) j = 65536; else j = ((anim->endframe+1-anim->startframe)<<16); //Just in case you play the game for a VERY int time... - if (i < 0) { i = 0; spriteext[tspr->owner].mdanimtims = mdtims; } + if (i < 0) { i = 0; spriteext[tspr->owner].mdanimtims = 0; } //compare with j*2 instead of j to ensure i stays > j-65536 for MDANIM_ONESHOT - if ((anim) && (i >= j+j) && (fps)) //Keep mdanimtims close to mdtims to avoid the use of MOD + if ((anim) && (i >= j+j) && (fps) && !mdpause) //Keep mdanimtims close to mdtims to avoid the use of MOD spriteext[tspr->owner].mdanimtims += j/((fps*timerticspersec)/120); k = i; @@ -1141,7 +1138,7 @@ static void updateanimation(md2model *m, spritetype *tspr) //OSD_Printf("smoothing... cframe %i nframe %i\n", m->cframe, m->nframe); if (k > 65535) { - spriteext[tspr->owner].mdanimtims = mdtims; + spriteext[tspr->owner].mdanimtims = 0; m->interpol = 0; spritesmooth[tspr->owner].mdsmooth = 0; m->cframe = m->nframe = (anim) ? anim->startframe : spritesmooth[tspr->owner].mdcurframe; @@ -1740,7 +1737,7 @@ static int md3draw(md3model *m, spritetype *tspr) bglEnable(GL_TEXTURE_2D); pc[0] = pc[1] = pc[2] = ((float)(numpalookups-min(max((globalshade * shadescale)+m->shadeoff,0),numpalookups)))/((float)numpalookups); - if (!(m->flags&1)) + if (!(m->flags&1)||sector[sprite[tspr->owner].sectnum].floorpal!=0) { pc[0] *= (float)hictinting[globalpal].r / 255.0; pc[1] *= (float)hictinting[globalpal].g / 255.0; diff --git a/polymer/eduke32/source/duke3d.h b/polymer/eduke32/source/duke3d.h index 32d4d0a06..50f0bce7b 100644 --- a/polymer/eduke32/source/duke3d.h +++ b/polymer/eduke32/source/duke3d.h @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define VERSION " 1.4.0 svn" -#define HEAD "EDuke32"VERSION" (shareware mode)" +#define HEAD "EDuke32"VERSION" (shareware)" #define HEAD2 "EDuke32"VERSION #include "compat.h"