Patch from hunter_rus, untested

git-svn-id: https://svn.eduke32.com/eduke32@605 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2008-02-01 03:36:54 +00:00
parent 3835a0ca9a
commit 71cd8fd6c3
6 changed files with 39 additions and 35 deletions

View file

@ -158,6 +158,7 @@ typedef struct BPACK
typedef struct BPACK { typedef struct BPACK {
unsigned int mdanimtims; unsigned int mdanimtims;
int oldmdtims;
short mdanimcur; short mdanimcur;
short angoff; short angoff;
short pitch, roll; short pitch, roll;

View file

@ -637,7 +637,7 @@ void editinput(void)
goalz += mousz; goalz += mousz;
if (keystatus[buildkeys[8]] > 0) //A (stand high) 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)); horiz = max(-100,horiz-((keystatus[buildkeys[4]]+1)*synctics*2));
else else
{ {
@ -648,7 +648,7 @@ void editinput(void)
} }
if (keystatus[buildkeys[9]] > 0) //Z (stand low) 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)); horiz = min(300,horiz+((keystatus[buildkeys[4]]+1)*synctics*2));
else else
{ {
@ -673,7 +673,7 @@ void editinput(void)
goalz = posz; goalz = posz;
if (keystatus[buildkeys[8]] > 0) //A 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)); 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[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)); horiz = min(300,horiz+((keystatus[buildkeys[4]]+1)*synctics*2));
} }
@ -1445,7 +1445,7 @@ void editinput(void)
if (keystatus[0x2e] > 0) //C if (keystatus[0x2e] > 0) //C
{ {
keystatus[0x2e] = 0; keystatus[0x2e] = 0;
if (keystatus[0x38] > 0) //Alt-C if ((keystatus[0x38]|keystatus[0xb8]) > 0) //Alt-C
{ {
if (somethingintab < 255) if (somethingintab < 255)
{ {
@ -5807,7 +5807,7 @@ CANCEL:
} }
if (bad == 2) if (bad == 2)
{ {
char *f; char *f;int res;
keystatus[0x1c] = 0; keystatus[0x1c] = 0;
boardfilename[i] = '.'; boardfilename[i] = '.';
@ -5835,16 +5835,16 @@ CANCEL:
fixspritesectors(); //Do this before saving! fixspritesectors(); //Do this before saving!
updatesector(startposx,startposy,&startsectnum); updatesector(startposx,startposy,&startsectnum);
ExtPreSaveMap(); ExtPreSaveMap();
saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); res=saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum);
ExtSaveMap(f); ExtSaveMap(f);
printmessage16("Board saved."); printmessage16((res==0)?"Board saved.":"Saving board failed.");
Bstrcpy(boardfilename, selectedboardfilename); Bstrcpy(boardfilename, selectedboardfilename);
} }
bad = 0; bad = 0;
} }
else if (ch == 's' || ch == 'S') //S else if (ch == 's' || ch == 'S') //S
{ {
char *f; char *f;int res;
bad = 0; bad = 0;
printmessage16("Saving board..."); printmessage16("Saving board...");
showframe(1); showframe(1);
@ -5859,9 +5859,9 @@ CANCEL:
if (!f) f = boardfilename; else f++; if (!f) f = boardfilename; else f++;
} }
ExtPreSaveMap(); ExtPreSaveMap();
saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum); res=saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum);
ExtSaveMap(f); ExtSaveMap(f);
printmessage16("Board saved."); printmessage16((res==0)?"Board saved.":"Saving board failed.");
showframe(1); showframe(1);
} }
else if (ch == 'q' || ch == 'Q') //Q else if (ch == 'q' || ch == 'Q') //Q

View file

@ -357,6 +357,7 @@ static int defsparser(scriptfile *script)
if (!kzfindfile(buf)) if (!kzfindfile(buf))
{ {
initprintf("Error: file '%s' does not exist\n",fn); initprintf("Error: file '%s' does not exist\n",fn);
pathsearchmode = i;
break; 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 defined(POLYMOST) && defined(USE_OPENGL)
if (palmapbits&&fnB) { if (palmapbits&&fnB)
{
int i; int i;
for (i=0;i<=25;i++) for (i=0;i<=25;i++)
if (!(palbits&(1<<i))&&(palmapbits&checkpalmaps(i))) if (!(palbits&(1<<i))&&(palmapbits&checkpalmaps(i)))

View file

@ -7383,6 +7383,7 @@ int loadmaphack(char *filename)
} }
spriteext[whichsprite].pitch = (short)pitch; spriteext[whichsprite].pitch = (short)pitch;
} }
break;
case T_ROLL: // roll <xx> case T_ROLL: // roll <xx>
{ {
int roll; int roll;
@ -7397,6 +7398,7 @@ int loadmaphack(char *filename)
} }
spriteext[whichsprite].roll = (short)roll; spriteext[whichsprite].roll = (short)roll;
} }
break;
case T_MDXOFF: // mdxoff <xx> case T_MDXOFF: // mdxoff <xx>
{ {
int i; int i;
@ -7411,6 +7413,7 @@ int loadmaphack(char *filename)
} }
spriteext[whichsprite].xoff = i; spriteext[whichsprite].xoff = i;
} }
break;
case T_MDYOFF: // mdyoff <xx> case T_MDYOFF: // mdyoff <xx>
{ {
int i; int i;
@ -7425,6 +7428,7 @@ int loadmaphack(char *filename)
} }
spriteext[whichsprite].yoff = i; spriteext[whichsprite].yoff = i;
} }
break;
case T_MDZOFF: // mdzoff <xx> case T_MDZOFF: // mdzoff <xx>
{ {
int i; int i;
@ -7585,12 +7589,12 @@ int saveboard(char *filename, int *daposx, int *daposy, int *daposz,
spri=tspri; spri=tspri;
for (j=0;j<MAXSTATUS;j++)
for (j=0;j<MAXSPRITES;j++)
{ {
int i = headspritestat[j]; if (sprite[j].statnum != MAXSTATUS)
while (i != -1)
{ {
Bmemcpy(spri,&sprite[i],sizeof(spritetype)); Bmemcpy(spri,&sprite[j],sizeof(spritetype));
spri->x = B_LITTLE32(spri->x); spri->x = B_LITTLE32(spri->x);
spri->y = B_LITTLE32(spri->y); spri->y = B_LITTLE32(spri->y);
spri->z = B_LITTLE32(spri->z); 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->lotag = B_LITTLE16(spri->lotag);
spri->hitag = B_LITTLE16(spri->hitag); spri->hitag = B_LITTLE16(spri->hitag);
spri->extra = B_LITTLE16(spri->extra); spri->extra = B_LITTLE16(spri->extra);
i = nextspritestat[i];spri++; spri++;
} }
} }

View file

@ -203,10 +203,10 @@ int addtileP(int model,int tile,int pallet)
if (curextra==MAXTILES+EXTRATILES-2)return curextra; if (curextra==MAXTILES+EXTRATILES-2)return curextra;
if (tile2model[tile].modelid==-1){tile2model[tile].pal=pallet;return tile;} if (tile2model[tile].modelid==-1){tile2model[tile].pal=pallet;return tile;}
if (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; tile=tile2model[tile].next;
if(tile2model[tile].pal==pallet)return tile; if (tile2model[tile].pal==pallet)return tile;
} }
tile2model[tile].next=curextra; tile2model[tile].next=curextra;
tile2model[curextra].pal=pallet; tile2model[curextra].pal=pallet;
@ -1046,13 +1046,10 @@ static void updateanimation(md2model *m, spritetype *tspr)
int fps; int fps;
m->cframe = m->nframe = tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].framenum; 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; spriteext[tspr->owner].mdanimtims+=max(0,mdtims-omdtims);
m->interpol = 0; spriteext[tspr->owner].oldmdtims=mdtims;
spriteext[tspr->owner].mdanimtims = mdtims;
spriteext[tspr->picnum].mdanimtims = mdtims;
return;
} }
for (anim = m->animations; for (anim = m->animations;
@ -1064,14 +1061,14 @@ static void updateanimation(md2model *m, spritetype *tspr)
{ {
if (spritesmooth[tspr->owner].mdsmooth == 0) if (spritesmooth[tspr->owner].mdsmooth == 0)
{ {
spriteext[tspr->owner].mdanimtims = mdtims; spriteext[tspr->owner].mdanimtims = 0;
m->interpol = 0; m->interpol = 0;
spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdsmooth = 1;
spritesmooth[tspr->owner].mdcurframe = m->cframe; 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)) 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; m->interpol = 0;
spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdsmooth = 1;
spritesmooth[tspr->owner].mdoldframe = spritesmooth[tspr->owner].mdcurframe; 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)) 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; m->interpol = 0;
spritesmooth[tspr->owner].mdsmooth = 1; spritesmooth[tspr->owner].mdsmooth = 1;
spritesmooth[tspr->owner].mdoldframe = spritesmooth[tspr->owner].mdcurframe; 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"); //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); //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].mdanimcur = (short)anim->startframe;
spriteext[tspr->owner].mdanimtims = mdtims; spriteext[tspr->owner].mdanimtims = 0;
m->interpol = 0; m->interpol = 0;
if (!r_animsmoothing || (tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].smoothduration == 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 else
fps = anim->fpssc; 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) if (spritesmooth[tspr->owner].mdsmooth)
j = 65536; j = 65536;
else else
j = ((anim->endframe+1-anim->startframe)<<16); j = ((anim->endframe+1-anim->startframe)<<16);
//Just in case you play the game for a VERY int time... //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 //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); spriteext[tspr->owner].mdanimtims += j/((fps*timerticspersec)/120);
k = i; 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); //OSD_Printf("smoothing... cframe %i nframe %i\n", m->cframe, m->nframe);
if (k > 65535) if (k > 65535)
{ {
spriteext[tspr->owner].mdanimtims = mdtims; spriteext[tspr->owner].mdanimtims = 0;
m->interpol = 0; m->interpol = 0;
spritesmooth[tspr->owner].mdsmooth = 0; spritesmooth[tspr->owner].mdsmooth = 0;
m->cframe = m->nframe = (anim) ? anim->startframe : spritesmooth[tspr->owner].mdcurframe; 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); bglEnable(GL_TEXTURE_2D);
pc[0] = pc[1] = pc[2] = ((float)(numpalookups-min(max((globalshade * shadescale)+m->shadeoff,0),numpalookups)))/((float)numpalookups); 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[0] *= (float)hictinting[globalpal].r / 255.0;
pc[1] *= (float)hictinting[globalpal].g / 255.0; pc[1] *= (float)hictinting[globalpal].g / 255.0;

View file

@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define VERSION " 1.4.0 svn" #define VERSION " 1.4.0 svn"
#define HEAD "EDuke32"VERSION" (shareware mode)" #define HEAD "EDuke32"VERSION" (shareware)"
#define HEAD2 "EDuke32"VERSION #define HEAD2 "EDuke32"VERSION
#include "compat.h" #include "compat.h"