Huge, awesome patch from Hunter_rus

git-svn-id: https://svn.eduke32.com/eduke32@728 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2008-05-16 19:51:38 +00:00
parent 26de39bc2e
commit 310c7240e1
11 changed files with 3176 additions and 1905 deletions

View file

@ -38,12 +38,14 @@ extern int zmode, kensplayerheight;
extern short defaultspritecstat; extern short defaultspritecstat;
extern short temppicnum, tempcstat, templotag, temphitag, tempextra; extern short temppicnum, tempcstat, templotag, temphitag, tempextra;
extern unsigned char tempshade, temppal, tempxrepeat, tempyrepeat; extern unsigned char temppal, tempxrepeat, tempyrepeat;
signed char tempshade;
extern unsigned char somethingintab; extern unsigned char somethingintab;
extern unsigned char buildkeys[NUMBUILDKEYS]; extern unsigned char buildkeys[NUMBUILDKEYS];
extern int ydim16, xdimgame, ydimgame, bppgame, xdim2d, ydim2d, forcesetup; extern int ydim16, xdimgame, ydimgame, bppgame, xdim2d, ydim2d, forcesetup;
extern char unrealedlook, quickmapcycling;
extern int ExtInit(void); extern int ExtInit(void);

File diff suppressed because it is too large Load diff

View file

@ -199,6 +199,10 @@ int loadsetup(const char *fn)
if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL); if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL);
if (readconfig(fp, "mousenavigation", val, VL) > 0) unrealedlook = Batoi(val);
if (readconfig(fp, "quickmapcycling", val, VL) > 0) quickmapcycling = Batoi(val);
for (i=0;i<256;i++)remap[i]=i; for (i=0;i<256;i++)remap[i]=i;
remapinit=1; remapinit=1;
if (readconfig(fp, "remap", val, VL) > 0) if (readconfig(fp, "remap", val, VL) > 0)
@ -299,6 +303,12 @@ int writesetup(const char *fn)
"; Mouse sensitivity\n" "; Mouse sensitivity\n"
"mousesensitivity = %g\n" "mousesensitivity = %g\n"
"\n" "\n"
"; Mouse navigation\n"
"mousenavigation = %d\n"
"\n"
"; Quick map cycling\n"
"quickmapcycling = %d\n"
"\n"
#if 1 #if 1
"; Key Settings\n" "; Key Settings\n"
"; Here's a map of all the keyboard scan codes: NOTE: values are listed in hex!\n" "; Here's a map of all the keyboard scan codes: NOTE: values are listed in hex!\n"
@ -358,7 +368,7 @@ int writesetup(const char *fn)
#if 0 #if 0
option[7]>>4, option[2], option[7]>>4, option[2],
#endif #endif
option[3], msens, option[3], msens, unrealedlook, quickmapcycling,
#if 1 #if 1
keys[0], keys[1], keys[2], keys[3], keys[4], keys[5], keys[0], keys[1], keys[2], keys[3], keys[4], keys[5],
keys[6], keys[7], keys[8], keys[9], keys[10], keys[11], keys[6], keys[7], keys[8], keys[9], keys[10], keys[11],

View file

@ -11011,6 +11011,7 @@ void draw2dgrid(int posxe, int posye, short ange, int zoome, short gride)
// //
char spritecol2d[MAXTILES][2]; char spritecol2d[MAXTILES][2];
int showfirstwall=0;
void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride) void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride)
{ {
@ -11061,6 +11062,7 @@ void draw2dscreen(int posxe, int posye, short ange, int zoome, short gride)
if ((i == linehighlight) || ((linehighlight >= 0) && (i == wall[linehighlight].nextwall))) if ((i == linehighlight) || ((linehighlight >= 0) && (i == wall[linehighlight].nextwall)))
if (totalclock & 16) col += (2<<2); if (totalclock & 16) col += (2<<2);
} }
if (showfirstwall && (sector[searchsector].wallptr==i||sector[searchsector].wallptr==wall[i].nextwall))col = 14;
xp1 = mulscale14(wal->x-posxe,zoome); xp1 = mulscale14(wal->x-posxe,zoome);
yp1 = mulscale14(wal->y-posye,zoome); yp1 = mulscale14(wal->y-posye,zoome);
@ -11474,6 +11476,30 @@ void printext256(int xpos, int ypos, short col, short backcol, char *name, char
for (i=0;name[i];i++) for (i=0;name[i];i++)
{ {
if (name[i] == '^' && isdigit(name[i+1]))
{
char smallbuf[8];
int bi=0;
while (isdigit(name[i+1]) && bi<8)
{
smallbuf[bi++]=name[i+1];
i++;
}
smallbuf[bi++]=0;
if (col)col = atol(smallbuf);
if (gammabrightness)
{
p = curpalette[col];
}
else
{
p.r = britable[curbrightness][ curpalette[col].r ];
p.g = britable[curbrightness][ curpalette[col].g ];
p.b = britable[curbrightness][ curpalette[col].b ];
}
continue;
}
letptr = &fontptr[name[i]<<3]; letptr = &fontptr[name[i]<<3];
xx = stx-fontsize; xx = stx-fontsize;
yy = ypos+7 + 2; //+1 is hack! yy = ypos+7 + 2; //+1 is hack!
@ -11511,6 +11537,19 @@ void printext256(int xpos, int ypos, short col, short backcol, char *name, char
begindrawing(); //{{{ begindrawing(); //{{{
for (i=0;name[i];i++) for (i=0;name[i];i++)
{ {
if (name[i] == '^' && isdigit(name[i+1]))
{
char smallbuf[8];
int bi=0;
while (isdigit(name[i+1]) && bi<8)
{
smallbuf[bi++]=name[i+1];
i++;
}
smallbuf[bi++]=0;
if (col)col = atol(smallbuf);
continue;
}
letptr = &fontptr[name[i]<<3]; letptr = &fontptr[name[i]<<3];
ptr = (char *)(ylookup[ypos+7]+(stx-fontsize)+frameplace); ptr = (char *)(ylookup[ypos+7]+(stx-fontsize)+frameplace);
for (y=7;y>=0;y--) for (y=7;y>=0;y--)

View file

@ -441,7 +441,7 @@ void applypalmap(char *pic, char *palmap, int size, int pal)
} }
} }
static void applypalmapSkin(char *pic, int sizx, int sizy, int pal) static void applypalmapSkin(char *pic, int sizx, int sizy, md2model *m, int number, int pal, int surf)
{ {
int stage; int stage;
@ -449,11 +449,12 @@ static void applypalmapSkin(char *pic, int sizx, int sizy, int pal)
for (stage=0;stage<MAXPALCONV;stage++) for (stage=0;stage<MAXPALCONV;stage++)
{ {
int pal1=0,pal2=pal; int pal1=0,pal2=pal;
mdskinmap_t *sk; mdskinmap_t *sk=modelhead->skinmap;
getpalmap(&stage,&pal1,&pal2); getpalmap(&stage,&pal1,&pal2);
if (!pal1)return; if (!pal1)return;
for (sk = modelhead->skinmap; sk; sk = sk->next) mdloadskin((md2model *)m,number,pal1,surf);
for (; sk; sk = sk->next)
if ((int)sk->palette == pal1&&sk->palmap)break; if ((int)sk->palette == pal1&&sk->palmap)break;
if (!sk||sk->size!=sizx*sizy)continue; if (!sk||sk->size!=sizx*sizy)continue;
@ -461,7 +462,7 @@ static void applypalmapSkin(char *pic, int sizx, int sizy, int pal)
} }
} }
static int daskinloader(int filh, int *fptr, int *bpl, int *sizx, int *sizy, int *osizx, int *osizy, char *hasalpha, int pal, char effect) static int daskinloader(int filh, int *fptr, int *bpl, int *sizx, int *sizy, int *osizx, int *osizy, char *hasalpha, int pal, char effect, md2model *m, int number, int surf)
{ {
int picfillen, j,y,x; int picfillen, j,y,x;
char *picfil,*cptr,al=255; char *picfil,*cptr,al=255;
@ -498,7 +499,7 @@ static int daskinloader(int filh, int *fptr, int *bpl, int *sizx, int *sizy, int
{ free(picfil); free(pic); return -1; } { free(picfil); free(pic); return -1; }
free(picfil); free(picfil);
applypalmapSkin((char *)pic,tsizx,tsizy,pal); applypalmapSkin((char *)pic,tsizx,tsizy,m,number,pal,surf);
cptr = &britable[gammabrightness ? 0 : curbrightness][0]; cptr = &britable[gammabrightness ? 0 : curbrightness][0];
r=(glinfo.bgra)?hictinting[pal].b:hictinting[pal].r; r=(glinfo.bgra)?hictinting[pal].b:hictinting[pal].r;
g=hictinting[pal].g; g=hictinting[pal].g;
@ -763,7 +764,7 @@ int mdloadskin(md2model *m, int number, int pal, int surf)
cachefil = -1; // the compressed version will be saved to disk cachefil = -1; // the compressed version will be saved to disk
if ((filh = kopen4load(fn, 0)) < 0) return -1; if ((filh = kopen4load(fn, 0)) < 0) return -1;
if (daskinloader(filh,&fptr,&bpl,&xsiz,&ysiz,&osizx,&osizy,&hasalpha,pal,(globalnoeffect)?0:hictinting[pal].f)) if (daskinloader(filh,&fptr,&bpl,&xsiz,&ysiz,&osizx,&osizy,&hasalpha,pal,(globalnoeffect)?0:hictinting[pal].f,m,number,surf))
{ {
kclose(filh); kclose(filh);
initprintf("Failed loading skin file \"%s\"\n", fn); initprintf("Failed loading skin file \"%s\"\n", fn);
@ -1617,8 +1618,6 @@ static int md3draw(md3model *m, spritetype *tspr)
} }
for (surfi=0;surfi<m->head.numsurfs;surfi++) for (surfi=0;surfi<m->head.numsurfs;surfi++)
{ {
int pal1;
s = &m->head.surfs[surfi]; s = &m->head.surfs[surfi];
v0 = &s->xyzn[m->cframe*s->numverts]; v0 = &s->xyzn[m->cframe*s->numverts];
v1 = &s->xyzn[m->nframe*s->numverts]; v1 = &s->xyzn[m->nframe*s->numverts];
@ -1680,9 +1679,6 @@ static int md3draw(md3model *m, spritetype *tspr)
mat[3] = mat[7] = mat[11] = 0.f; mat[15] = 1.f; bglLoadMatrixf(mat); mat[3] = mat[7] = mat[11] = 0.f; mat[15] = 1.f; bglLoadMatrixf(mat);
// PLAG: End // PLAG: End
for (pal1=SPECPAL;pal1<=REDPAL;pal1++)
mdloadskin((md2model *)m,tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].skinnum,pal1,surfi);
i = mdloadskin((md2model *)m,tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].skinnum,globalpal,surfi); if (!i) continue; i = mdloadskin((md2model *)m,tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].skinnum,globalpal,surfi); if (!i) continue;
//i = mdloadskin((md2model *)m,tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].skinnum,surfi); //hack for testing multiple surfaces per MD3 //i = mdloadskin((md2model *)m,tile2model[Ptile2tile(tspr->picnum,sprite[tspr->owner].pal)].skinnum,surfi); //hack for testing multiple surfaces per MD3
bglBindTexture(GL_TEXTURE_2D, i); bglBindTexture(GL_TEXTURE_2D, i);

View file

@ -1249,7 +1249,7 @@ void writexcache(char *fn, int len, int dameth, char effect, texcacheheader *hea
unsigned int padx=0, pady=0; unsigned int padx=0, pady=0;
GLuint gi; GLuint gi;
if (!glinfo.texcompr || !glusetexcompr || !glusetexcache) return; if (!glinfo.texcompr || !glusetexcompr || !glusetexcache) {initprintf("\n");return;}
if (!bglCompressedTexImage2DARB || !bglGetCompressedTexImageARB) if (!bglCompressedTexImage2DARB || !bglGetCompressedTexImageARB)
{ {
// lacking the necessary extensions to do this // lacking the necessary extensions to do this
@ -4118,6 +4118,7 @@ void polymost_drawrooms()
{ {
short hitsect, hitwall, hitsprite; short hitsect, hitwall, hitsprite;
int vx, vy, vz, hitx, hity, hitz; int vx, vy, vz, hitx, hity, hitz;
int cz, fz;
ox2 = (searchx-ghalfx)/1.2; oy2 = (searchy-ghoriz)/ 1.2; oz2 = ghalfx; ox2 = (searchx-ghalfx)/1.2; oy2 = (searchy-ghoriz)/ 1.2; oz2 = ghalfx;
@ -4139,9 +4140,12 @@ void polymost_drawrooms()
hitallsprites = 1; hitallsprites = 1;
hitscan(globalposx,globalposy,globalposz,globalcursectnum, //Start position hitscan(globalposx,globalposy,globalposz,globalcursectnum, //Start position
vx>>12,vy>>12,vz>>8,&hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,0xffff0030); vx>>12,vy>>12,vz>>8,&hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,0xffff0030);
getzsofslope(hitsect,hitx,hity,&cz,&fz);
hitallsprites = 0; hitallsprites = 0;
searchsector = hitsect; searchsector = hitsect;
if (hitz<cz) searchstat = 1;else
if (hitz>fz) searchstat = 2;else
if (hitwall >= 0) if (hitwall >= 0)
{ {
searchwall = hitwall; searchstat = 0; searchwall = hitwall; searchstat = 0;
@ -5547,6 +5551,31 @@ int polymost_printext256(int xpos, int ypos, short col, short backcol, char *nam
bglBegin(GL_QUADS); bglBegin(GL_QUADS);
for (c=0; name[c]; c++) for (c=0; name[c]; c++)
{ {
if (name[c] == '^' && isdigit(name[c+1]))
{
char smallbuf[8];
int bi=0;
while (isdigit(name[c+1]) && bi<8)
{
smallbuf[bi++]=name[c+1];
c++;
}
smallbuf[bi++]=0;
if (col)col = atol(smallbuf);
if (gammabrightness)
{
p = curpalette[col];
}
else
{
p.r = britable[curbrightness][ curpalette[col].r ];
p.g = britable[curbrightness][ curpalette[col].g ];
p.b = britable[curbrightness][ curpalette[col].b ];
}
bglColor4ub(p.r,p.g,p.b,255);
continue;
}
tx = (float)(name[c]%32)/32.0; tx = (float)(name[c]%32)/32.0;
ty = (float)((name[c]/32) + (fontsize*8))/16.0; ty = (float)((name[c]/32) + (fontsize*8))/16.0;
@ -5932,8 +5961,6 @@ void polymost_precache(int dapicnum, int dapalnum, int datype)
for (i=0;i<=j;i++) for (i=0;i<=j;i++)
{ {
int pal1;
for (pal1=SPECPAL;pal1<=REDPAL;pal1++)mdloadskin((md2model*)models[mid],0,pal1,i);
mdloadskin((md2model*)models[mid], 0, dapalnum, i); mdloadskin((md2model*)models[mid], 0, dapalnum, i);
} }
} }

View file

@ -2393,10 +2393,15 @@ static void moveweapons(void)
} }
for (f=1;f<=hittype[i].projectile.velmult;f++) for (f=1;f<=hittype[i].projectile.velmult;f++)
{
dax = s->x;
day = s->y;
daz = s->z;
j = movesprite(i, j = movesprite(i,
(k*(sintable[(s->ang+512)&2047]))>>14, (k*(sintable[(s->ang+512)&2047]))>>14,
(k*(sintable[s->ang&2047]))>>14,ll,qq); (k*(sintable[s->ang&2047]))>>14,ll,qq);
if (j)break;
}
if (!(hittype[i].projectile.workslike & PROJECTILE_FLAG_BOUNCESOFFWALLS) && s->yvel >= 0) if (!(hittype[i].projectile.workslike & PROJECTILE_FLAG_BOUNCESOFFWALLS) && s->yvel >= 0)
if (FindDistance2D(s->x-sprite[s->yvel].x,s->y-sprite[s->yvel].y) < 256) if (FindDistance2D(s->x-sprite[s->yvel].x,s->y-sprite[s->yvel].y) < 256)

File diff suppressed because it is too large Load diff

View file

@ -6676,6 +6676,10 @@ void animatesprites(int x,int y,int a,int smoothratio)
#if defined(POLYMOST) && defined(USE_OPENGL) #if defined(POLYMOST) && defined(USE_OPENGL)
if (bpp > 8 && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD)) if (bpp > 8 && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{ {
int v=getangle(t->xvel,t->zvel>>4);
if (v>1023)v-=2048;
spriteext[i].pitch=v;
t->cstat &= ~4; t->cstat &= ~4;
break; break;
} }

View file

@ -172,7 +172,7 @@ int ReadGameVars(int fil)
{ {
//Bsprintf(g_szBuf,"Reading value array for %s (%d)",aGameVars[i].szLabel,sizeof(int) * MAXPLAYERS); //Bsprintf(g_szBuf,"Reading value array for %s (%d)",aGameVars[i].szLabel,sizeof(int) * MAXPLAYERS);
//AddLog(g_szBuf); //AddLog(g_szBuf);
if (kdfread(aGameArrays[i].plValues,sizeof(intptr_t) * aGameArrays[i].size, 1, fil) != 1) goto corrupt; if (kdfread(aGameArrays[i].plValues,sizeof(intptr_t) * aGameArrays[i].size, 1, fil) < 1) goto corrupt;
} }
// Bsprintf(g_szBuf,"CP:%s %d",__FILE__,__LINE__); // Bsprintf(g_szBuf,"CP:%s %d",__FILE__,__LINE__);

View file

@ -1,203 +1,205 @@
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
/* /*
Copyright (C) 2004, 2007 - EDuke32 developers Copyright (C) 2004, 2007 - EDuke32 developers
This file is part of EDuke32 This file is part of EDuke32
EDuke32 is free software; you can redistribute it and/or EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2 modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation. as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
#include "compat.h" #include "compat.h"
#define TICSPERFRAME 3 #define TICSPERFRAME 3
// #define VULGARITY // #define VULGARITY
char *defsfilename = "duke3d.def"; char *defsfilename = "duke3d.def";
extern char keystatus[]; extern char keystatus[];
extern short defaultspritecstat; extern short defaultspritecstat;
extern int posx, posy, posz, horiz, qsetmode; extern int posx, posy, posz, horiz, qsetmode;
extern short ang, cursectnum; extern short ang, cursectnum;
extern short ceilingheinum, floorheinum; extern short ceilingheinum, floorheinum;
extern char names[MAXTILES][25]; extern char names[MAXTILES][25];
extern int ydim16, xdimgame, ydimgame, bppgame, xdim2d, ydim2d; extern int ydim16, xdimgame, ydimgame, bppgame, xdim2d, ydim2d;
extern int zmode, kensplayerheight, zlock; extern int zmode, kensplayerheight, zlock;
extern short editstatus, searchit; extern short editstatus, searchit;
extern int searchx, searchy, osearchx, osearchy; //search input extern int searchx, searchy, osearchx, osearchy; //search input
extern short searchsector, searchwall, searchstat; //search output extern short searchsector, searchwall, searchstat; //search output
extern short temppicnum, tempcstat, templotag, temphitag, tempextra; extern short temppicnum, tempcstat, templotag, temphitag, tempextra;
extern unsigned char tempshade, temppal, tempvis, tempxrepeat, tempyrepeat, somethingintab; extern unsigned char temppal, tempvis, tempxrepeat, tempyrepeat, somethingintab;
extern signed char tempshade;
static int ototalclock = 0, clockval[16], clockcnt = 0;
static int ototalclock = 0, clockval[16], clockcnt = 0;
#define NUMOPTIONS 9
#define NUMKEYS 19 #define NUMOPTIONS 9
#define NUMKEYS 19
char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0,0};
unsigned char keys[NUMBUILDKEYS] = char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0,0};
{ unsigned char keys[NUMBUILDKEYS] =
0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39, {
0x1e,0x2c,0xd1,0xc9,0x47,0x49, 0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,
0x9c,0x1c,0xd,0xc,0xf,0x29 0x1e,0x2c,0xd1,0xc9,0x47,0x49,
}; 0x9c,0x1c,0xd,0xc,0xf,0x29
};
int nextvoxid = 0;
int nextvoxid = 0;
extern int whitecol;
extern char vgapal16[4*256]; extern int whitecol;
extern void AutoAlignWalls(int nWall0, int ply); extern char vgapal16[4*256];
extern char changechar(char dachar, int dadir, char smooshyalign, char boundcheck); extern void AutoAlignWalls(int nWall0, int ply);
extern void _printmessage16(char name[82]); extern char changechar(char dachar, int dadir, char smooshyalign, char boundcheck);
extern void updatenumsprites(void); extern void _printmessage16(char name[82]);
extern void updatenumsprites(void);
extern int lastpm16time, synctics;
extern int halfxdim16, midydim16, zoom; extern int lastpm16time, synctics;
extern void fixrepeats(short i); extern int halfxdim16, midydim16, zoom;
extern void fixrepeats(short i);
char autospritehelp=0,autosecthelp=0;
short MinRate=24, MinD=3; char autospritehelp=0,autosecthelp=0;
int xoldtimerhandler, lastmessagetime; short MinRate=24, MinD=3;
int xoldtimerhandler, lastmessagetime=-1;
char tempbuf[1024]; //1024
int numsprite[MAXSPRITES]; char tempbuf[1024]; //1024
int multisprite[MAXSPRITES]; int numsprite[MAXSPRITES];
char lo[32]; int multisprite[MAXSPRITES];
char levelname[255]; char lo[32];
short curwall=0,curwallnum=0; char levelname[255];
short cursearchsprite=0,cursearchspritenum=0,cursector_lotag=0,cursectornum=0; short curwall=0,curwallnum=0;
short search_lotag=0,search_hitag=0; short cursearchsprite=0,cursearchspritenum=0,cursector_lotag=0,cursectornum=0;
char wallsprite=0; short search_lotag=0,search_hitag=0;
char helpon=0; char wallsprite=0;
//static char onwater=0; char helpon=0;
unsigned char onnames=4, usedcount=1; //static char onwater=0;
short cursprite; unsigned char onnames=4, usedcount=1;
int mousxplc, mousyplc, ppointhighlight; short cursprite;
int counter=0; int mousxplc, mousyplc, ppointhighlight;
unsigned char nosprites=0,purpleon=0,skill=4; int counter=0;
unsigned char framerateon=1,tabgraphic=2,shadepreview=0,autosave=1,sidemode=0; unsigned char nosprites=0,purpleon=0,skill=4;
extern int vel, svel, hvel, angvel; unsigned char framerateon=1,tabgraphic=2,shadepreview=0,autosave=1,sidemode=0;
int xvel, yvel, timoff; extern int vel, svel, hvel, angvel;
int xvel, yvel, timoff;
static void SearchSectorsForward();
static void SearchSectorsBackward(); static void SearchSectorsForward();
static inline void SpriteName(short spritenum, char *lo2); static void SearchSectorsBackward();
static void PrintStatus(char *string,int num,char x,char y,char color); static inline void SpriteName(short spritenum, char *lo2);
static void SetBOSS1Palette(); static void PrintStatus(char *string,int num,char x,char y,char color);
// static void SetSLIMEPalette(); static void SetBOSS1Palette();
static void SetWATERPalette(); // static void SetSLIMEPalette();
static void SetGAMEPalette(); static void SetWATERPalette();
static void kensetpalette(char *vgapal); static void SetGAMEPalette();
static void kensetpalette(char *vgapal);
extern short grid;
extern short grid;
static void EditSpriteData(short spritenum);
static void EditWallData(short wallnum); static void EditSpriteData(short spritenum);
static void EditSectorData(short sectnum); static void EditWallData(short wallnum);
static void FuncMenu(void); static void EditSectorData(short sectnum);
static void FuncMenu(void);
char GAMEpalette[768];
char WATERpalette[768]; char GAMEpalette[768];
char SLIMEpalette[768]; char WATERpalette[768];
char TITLEpalette[768]; char SLIMEpalette[768];
char REALMSpalette[768]; char TITLEpalette[768];
char BOSS1palette[768]; char REALMSpalette[768];
char BOSS1palette[768];
char num_tables;
char num_tables;
int updownunits=1024;
extern short highlightsector[MAXSECTORS], highlightsectorcnt; int updownunits=1024;
extern short highlight[MAXWALLS]; extern short highlightsector[MAXSECTORS], highlightsectorcnt;
extern short pointhighlight, linehighlight, highlightcnt; extern short highlight[MAXWALLS];
extern short asksave; extern short pointhighlight, linehighlight, highlightcnt;
extern short asksave;
char getmessage[162], getmessageleng;
int getmessagetimeoff, charsperline; char getmessage[162], getmessageleng;
extern int startposx, startposy, startposz; int getmessagetimeoff, charsperline;
extern short startang, startsectnum; extern int startposx, startposy, startposz;
extern short startang, startsectnum;
int autosavetimer;
extern int numsprites; int autosavetimer;
extern char spritecol2d[MAXTILES][2]; extern int numsprites;
extern char custom2dcolors; extern int showfirstwall;
extern char mlook; extern char spritecol2d[MAXTILES][2];
extern char custom2dcolors;
int intro=0; extern char mlook;
extern int ydim16, halfxdim16, midydim16, zoom;
extern intptr_t frameplace; int intro=0;
extern char pow2char[8]; extern int ydim16, halfxdim16, midydim16, zoom;
extern intptr_t frameplace;
static int acurpalette=0; extern char pow2char[8];
extern void showsectordata(short sectnum); static int acurpalette=0;
extern void showwalldata(short wallnum);
extern void showspritedata(short spritenum); extern void showsectordata(short sectnum);
extern int checksectorpointer(short i, short sectnum); extern void showwalldata(short wallnum);
extern void showspritedata(short spritenum);
extern double msens; extern int checksectorpointer(short i, short sectnum);
void ContextHelp(short spritenum); extern double msens;
void ResetKeys();
void ContextHelp(short spritenum);
extern void fixspritesectors(void); void ResetKeys();
#define KEY_PRESSED(sc) KB_KeyPressed((sc))
extern void fixspritesectors(void);
// This table defines the various zoom levels, the numbers being the pixel width #define KEY_PRESSED(sc) KB_KeyPressed((sc))
// and height of the sprite when plotted on the screen. Probably zooms in too far
// for some, but I'm a blind old git :-( // This table defines the various zoom levels, the numbers being the pixel width
// and height of the sprite when plotted on the screen. Probably zooms in too far
#define FUCKING_GOOD_EYESIGHT 16 // for some, but I'm a blind old git :-(
static const int ZoomToThumbSize[] = #define FUCKING_GOOD_EYESIGHT 16
{
FUCKING_GOOD_EYESIGHT, 32, 64, 128, 192, 256, 384, 512 static const int ZoomToThumbSize[] =
} ; {
FUCKING_GOOD_EYESIGHT, 32, 64, 128, 192, 256, 384, 512
#define NUM_ZOOMS (sizeof(ZoomToThumbSize)/sizeof(ZoomToThumbSize[0])) } ;
#define INITIAL_ZOOM 2 #define NUM_ZOOMS (sizeof(ZoomToThumbSize)/sizeof(ZoomToThumbSize[0]))
typedef struct #define INITIAL_ZOOM 2
{
int *pIds ; // ptr to list of tile Ids typedef struct
int nIds ; // num of tile ids {
char *szText ; // description to present to user. int *pIds ; // ptr to list of tile Ids
char key1 ; // key1 and key2 are two alternative keypresses used to int nIds ; // num of tile ids
char key2 ; // select tile set. Bodge to do eary upper/lower case handling char *szText ; // description to present to user.
} TileGroup; char key1 ; // key1 and key2 are two alternative keypresses used to
char key2 ; // select tile set. Bodge to do eary upper/lower case handling
#define MAX_TILE_GROUPS 32 } TileGroup;
#define MAX_TILE_GROUP_ENTRIES 1024
#define MAX_TILE_GROUPS 32
TileGroup s_TileGroups[MAX_TILE_GROUPS]; #define MAX_TILE_GROUP_ENTRIES 1024
static unsigned int tile_groups = 0; TileGroup s_TileGroups[MAX_TILE_GROUPS];
#define FIRST_USER_ART_TILE 3584 static unsigned int tile_groups = 0;
// Some atomic tiles are sprinkled in the V1.3d's area but
// this is where the main atomic tiles start :- #define FIRST_USER_ART_TILE 3584
#define FIRST_ATOMIC_TILE 4096 // Some atomic tiles are sprinkled in the V1.3d's area but
#define FIRST_EXTENDED_TILE 6144 // this is where the main atomic tiles start :-
#define SECOND_EXTENDED_TILE 9216 #define FIRST_ATOMIC_TILE 4096
#define FIRST_EXTENDED_TILE 6144
extern short localartfreq[MAXTILES]; #define SECOND_EXTENDED_TILE 9216
extern short localartlookup[MAXTILES], localartlookupnum;
extern int lockclock; extern short localartfreq[MAXTILES];
extern void clearkeys(void); extern short localartlookup[MAXTILES], localartlookupnum;
extern int lockclock;
extern void clearkeys(void);