mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-16 01:11:44 +00:00
Continuously keep track of the number of sprites in the world.
New engine variable 'int32_t Numsprites', not yet saved into savegames or mapstates. (The capitalization is to distinguish it from the often-used 'numsprites' locals or structure member names. In the editor, get rid of updatenumsprites(). git-svn-id: https://svn.eduke32.com/eduke32@2478 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9c34845faa
commit
4d4221d71f
8 changed files with 38 additions and 64 deletions
|
@ -318,6 +318,7 @@ EXTERN int32_t numyaxbunches;
|
|||
EXTERN int16_t headsectbunch[2][YAX_MAXBUNCHES], nextsectbunch[2][MAXSECTORS];
|
||||
#endif
|
||||
|
||||
EXTERN int32_t Numsprites;
|
||||
EXTERN int16_t numsectors, numwalls;
|
||||
EXTERN char display_mirror;
|
||||
EXTERN int32_t totalclock;
|
||||
|
|
|
@ -82,7 +82,6 @@ extern int32_t autosave;
|
|||
extern int32_t mlook;
|
||||
extern int16_t prefixtiles[10];
|
||||
|
||||
extern int32_t numsprites;
|
||||
extern int32_t showfirstwall;
|
||||
|
||||
extern int32_t graphicsmode;
|
||||
|
|
|
@ -84,7 +84,6 @@ int32_t grid = 3, autogrid = 0, gridlock = 1, showtags = 2;
|
|||
int32_t zoom = 768, gettilezoom = 1;
|
||||
int32_t lastpm16time = 0;
|
||||
|
||||
int32_t numsprites;
|
||||
extern int32_t mapversion;
|
||||
|
||||
int16_t highlight[MAXWALLS+MAXSPRITES];
|
||||
|
@ -217,7 +216,6 @@ static int32_t getlinehighlight(int32_t xplc, int32_t yplc, int32_t line);
|
|||
int32_t fixspritesectors(void);
|
||||
static int32_t movewalls(int32_t start, int32_t offs);
|
||||
int32_t loadnames(const char *namesfile, int8_t root);
|
||||
void updatenumsprites(void);
|
||||
static void getclosestpointonwall(int32_t x, int32_t y, int32_t dawall, int32_t *nx, int32_t *ny,
|
||||
int32_t maybe_screen_coord_p);
|
||||
static void initcrc(void);
|
||||
|
@ -416,7 +414,6 @@ static void reset_default_mapstate(void)
|
|||
|
||||
numsectors = 0;
|
||||
numwalls = 0;
|
||||
numsprites = 0;
|
||||
|
||||
editorzrange[0] = INT32_MIN;
|
||||
editorzrange[1] = INT32_MAX;
|
||||
|
@ -1277,7 +1274,6 @@ void editinput(void)
|
|||
|
||||
correct_sprite_yoffset(i);
|
||||
|
||||
updatenumsprites();
|
||||
asksave = 1;
|
||||
|
||||
VM_OnEvent(EVENT_INSERTSPRITE3D, i);
|
||||
|
@ -1685,12 +1681,11 @@ static int32_t restore_highlighted_map(mapinfofull_t *mapinfo, int32_t forreal)
|
|||
{
|
||||
int32_t i, j, sect, onumsectors=numsectors, newnumsectors, newnumwalls;
|
||||
|
||||
updatenumsprites();
|
||||
if (numsectors+mapinfo->numsectors>MAXSECTORS || numwalls+mapinfo->numwalls>MAXWALLS
|
||||
#ifdef YAX_ENABLE
|
||||
|| numyaxbunches+mapinfo->numyaxbunches > YAX_MAXBUNCHES
|
||||
#endif
|
||||
|| numsprites+mapinfo->numsprites>MAXSPRITES)
|
||||
|| Numsprites+mapinfo->numsprites>MAXSPRITES)
|
||||
{
|
||||
mapinfofull_free(mapinfo);
|
||||
return -1;
|
||||
|
@ -1762,7 +1757,6 @@ static int32_t restore_highlighted_map(mapinfofull_t *mapinfo, int32_t forreal)
|
|||
mapinfofull_free(mapinfo);
|
||||
|
||||
numwalls = newnumwalls;
|
||||
updatenumsprites();
|
||||
|
||||
update_highlightsector();
|
||||
|
||||
|
@ -1948,7 +1942,7 @@ static void duplicate_selected_sprites(void)
|
|||
// sprite[j].sectnum = sprite[k].sectnum; //Don't let memcpy overwrite sector!
|
||||
// setsprite(j,(vec3_t *)&sprite[j]);
|
||||
}
|
||||
updatenumsprites();
|
||||
|
||||
printmessage16("Sprites duplicated and stamped.");
|
||||
asksave = 1;
|
||||
}
|
||||
|
@ -6136,7 +6130,7 @@ end_join_sectors:
|
|||
correct_sprite_yoffset(i);
|
||||
|
||||
printmessage16("Sprite inserted.");
|
||||
updatenumsprites();
|
||||
|
||||
asksave = 1;
|
||||
|
||||
VM_OnEvent(EVENT_INSERTSPRITE2D, i);
|
||||
|
@ -7036,7 +7030,7 @@ end_batch_insert_points:
|
|||
{
|
||||
deletesprite(pointhighlight&16383);
|
||||
printmessage16("Sprite deleted.");
|
||||
updatenumsprites();
|
||||
|
||||
update_highlight();
|
||||
asksave = 1;
|
||||
}
|
||||
|
@ -7721,7 +7715,6 @@ int32_t LoadBoard(const char *filename, uint32_t flags)
|
|||
i==0?"successfully": (i<4 ? "(moderate corruption)" : "(HEAVY corruption)"));
|
||||
}
|
||||
|
||||
updatenumsprites();
|
||||
startposx = pos.x; //this is same
|
||||
startposy = pos.y;
|
||||
startposz = pos.z;
|
||||
|
@ -8153,7 +8146,6 @@ static int32_t deletesector(int16_t sucksect)
|
|||
|
||||
while (headspritesect[sucksect] >= 0)
|
||||
deletesprite(headspritesect[sucksect]);
|
||||
updatenumsprites();
|
||||
|
||||
startwall = sector[sucksect].wallptr;
|
||||
endwall = startwall + sector[sucksect].wallnum - 1;
|
||||
|
@ -9615,7 +9607,7 @@ void printcoords16(int32_t posxe, int32_t posye, int16_t ange)
|
|||
char snotbuf[80];
|
||||
int32_t i, m;
|
||||
int32_t v8 = (numsectors > MAXSECTORSV7 || numwalls > MAXWALLSV7 ||
|
||||
numsprites > MAXSPRITESV7 || numyaxbunches > 0);
|
||||
Numsprites > MAXSPRITESV7 || numyaxbunches > 0);
|
||||
#if M32_UNDO
|
||||
Bsprintf(snotbuf,"x:%d y:%d ang:%d r%d",posxe,posye,ange,map_revision-1);
|
||||
#else
|
||||
|
@ -9644,20 +9636,20 @@ void printcoords16(int32_t posxe, int32_t posye, int16_t ange)
|
|||
{
|
||||
if (xdim >= 800)
|
||||
Bsprintf(&snotbuf[m], "/%d wal. %d/16k spr. %d/256 bn.",
|
||||
MAXWALLSV8, numsprites, numyaxbunches);
|
||||
MAXWALLSV8, Numsprites, numyaxbunches);
|
||||
else
|
||||
Bsprintf(&snotbuf[m], " wal. %d spr. %d/256 bn.",
|
||||
numsprites, numyaxbunches);
|
||||
Numsprites, numyaxbunches);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xdim >= 800)
|
||||
Bsprintf(&snotbuf[m], "/%d wal. %d/%d spr.",
|
||||
v8?MAXWALLSV8:MAXWALLSV7, numsprites,
|
||||
v8?MAXWALLSV8:MAXWALLSV7, Numsprites,
|
||||
v8?MAXSPRITESV8:MAXSPRITESV7);
|
||||
else
|
||||
Bsprintf(&snotbuf[m], "/%dk wal. %d/%dk spr.",
|
||||
(v8?MAXWALLSV8:MAXWALLSV7)/1000, numsprites,
|
||||
(v8?MAXWALLSV8:MAXWALLSV7)/1000, Numsprites,
|
||||
(v8?MAXSPRITESV8:MAXSPRITESV7)/1000);
|
||||
}
|
||||
}
|
||||
|
@ -9694,15 +9686,6 @@ void printcoords16(int32_t posxe, int32_t posye, int16_t ange)
|
|||
printext16(264, ydim-STATUS2DSIZ+128, v8?editorcolors[10]:whitecol, -1, snotbuf,0);
|
||||
}
|
||||
|
||||
void updatenumsprites(void)
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
numsprites = 0;
|
||||
for (i=0; i<MAXSPRITES; i++)
|
||||
numsprites += (sprite[i].statnum != MAXSTATUS);
|
||||
}
|
||||
|
||||
#define DOPRINT(Yofs, fmt, ...) \
|
||||
Bsprintf(snotbuf, fmt, ## __VA_ARGS__); \
|
||||
printext16(8+col*200, ydim/*-(row*96)*/-STATUS2DSIZ+Yofs, color, -1, snotbuf, 0);
|
||||
|
|
|
@ -1268,7 +1268,7 @@ int32_t clipmapinfo_load(const char *filename)
|
|||
|
||||
char fn[BMAX_PATH], loadedwhich[32]={0}, *lwcp=loadedwhich;
|
||||
int32_t slen, fi, fisec[10], fispr[10];
|
||||
int32_t ournumsectors=0, ournumwalls=0, ournumsprites=0, numsprites;
|
||||
int32_t ournumsectors=0, ournumwalls=0, ournumsprites=0;
|
||||
|
||||
clipmapinfo_init();
|
||||
|
||||
|
@ -1298,14 +1298,11 @@ int32_t clipmapinfo_load(const char *filename)
|
|||
i = loadboard(fn, 0, &px,&py,&pz, &ang,&cs);
|
||||
if (i<0)
|
||||
continue;
|
||||
|
||||
for (numsprites=0; numsprites<MAXSPRITES; numsprites++)
|
||||
if (sprite[numsprites].statnum == MAXSTATUS)
|
||||
break;
|
||||
// Numsprites will now be set!
|
||||
|
||||
if (ournumsectors+numsectors>MAXSECTORS ||
|
||||
ournumwalls+numwalls>MAXWALLS ||
|
||||
ournumsprites+numsprites>MAXSPRITES)
|
||||
ournumsprites+Numsprites>MAXSPRITES)
|
||||
{
|
||||
initprintf("clip map: warning: exceeded limits when loading %s, aborting.\n", fn);
|
||||
break;
|
||||
|
@ -1313,7 +1310,7 @@ int32_t clipmapinfo_load(const char *filename)
|
|||
|
||||
Bmemcpy(loadsector+ournumsectors, sector, numsectors*sizeof(sectortype));
|
||||
Bmemcpy(loadwall+ournumwalls, wall, numwalls*sizeof(walltype));
|
||||
Bmemcpy(loadsprite+ournumsprites, sprite, numsprites*sizeof(spritetype));
|
||||
Bmemcpy(loadsprite+ournumsprites, sprite, Numsprites*sizeof(spritetype));
|
||||
for (i=ournumsectors; i<ournumsectors+numsectors; i++)
|
||||
loadsector[i].wallptr += ournumwalls;
|
||||
for (i=ournumwalls; i<ournumwalls+numwalls; i++)
|
||||
|
@ -1326,12 +1323,12 @@ int32_t clipmapinfo_load(const char *filename)
|
|||
loadwall[i].nextsector += ournumsectors;
|
||||
}
|
||||
}
|
||||
for (i=ournumsprites; i<ournumsprites+numsprites; i++)
|
||||
for (i=ournumsprites; i<ournumsprites+Numsprites; i++)
|
||||
if (loadsprite[i].sectnum>=0)
|
||||
loadsprite[i].sectnum += ournumsectors;
|
||||
ournumsectors += numsectors;
|
||||
ournumwalls += numwalls;
|
||||
ournumsprites += numsprites;
|
||||
ournumsprites += Numsprites;
|
||||
|
||||
if (lwcp != loadedwhich)
|
||||
{
|
||||
|
@ -7598,7 +7595,10 @@ int32_t insertsprite(int16_t sectnum, int16_t statnum)
|
|||
int32_t newspritenum = insertspritestat(statnum);
|
||||
|
||||
if (newspritenum >= 0)
|
||||
{
|
||||
do_insertsprite_at_headofsect(newspritenum, sectnum);
|
||||
Numsprites++;
|
||||
}
|
||||
|
||||
return newspritenum;
|
||||
|
||||
|
@ -7632,6 +7632,7 @@ int32_t deletesprite(int16_t spritenum)
|
|||
sprite[spritenum].statnum = MAXSTATUS;
|
||||
|
||||
tailspritefree = spritenum;
|
||||
Numsprites--;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -8132,6 +8133,7 @@ void initspritelists(void)
|
|||
nextspritestat[MAXSPRITES-1] = -1;
|
||||
|
||||
tailspritefree = MAXSPRITES-1;
|
||||
Numsprites = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -10016,6 +10018,7 @@ int32_t saveboard(const char *filename, int32_t *daposx, int32_t *daposy, int32_
|
|||
numsprites++;
|
||||
}
|
||||
#endif
|
||||
assert(numsprites == Numsprites);
|
||||
|
||||
#ifdef YAX_ENABLE
|
||||
if (numyaxbunches > 0)
|
||||
|
|
|
@ -457,7 +457,6 @@ void create_map_snapshot(void)
|
|||
}
|
||||
|
||||
fixspritesectors();
|
||||
updatenumsprites();
|
||||
|
||||
mapstate->numsectors = numsectors;
|
||||
mapstate->numwalls = numwalls;
|
||||
|
@ -506,7 +505,7 @@ void create_map_snapshot(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (numsprites)
|
||||
if (Numsprites)
|
||||
{
|
||||
tempcrc = crc32once((uint8_t *)&sprite[0],sizeof(spritetype) * MAXSPRITES);
|
||||
|
||||
|
@ -520,11 +519,11 @@ void create_map_snapshot(void)
|
|||
else
|
||||
{
|
||||
int32_t i = 0;
|
||||
spritetype *tspri = (spritetype *)Bcalloc(1, sizeof(spritetype) * numsprites + 1),
|
||||
spritetype *tspri = (spritetype *)Bcalloc(1, sizeof(spritetype) * Numsprites + 1),
|
||||
*spri = &tspri[0];
|
||||
mapstate->sprites = (spritetype *)Bcalloc(1, sizeof(spritetype) * numsprites + QADDNSZ);
|
||||
mapstate->sprites = (spritetype *)Bcalloc(1, sizeof(spritetype) * Numsprites + QADDNSZ);
|
||||
|
||||
for (j=0; j<MAXSPRITES && i < numsprites; j++)
|
||||
for (j=0; j<MAXSPRITES && i < Numsprites; j++)
|
||||
{
|
||||
if (sprite[j].statnum != MAXSTATUS)
|
||||
{
|
||||
|
@ -534,7 +533,7 @@ void create_map_snapshot(void)
|
|||
}
|
||||
|
||||
mapstate->spritesiz = j = qlz_compress(&tspri[0], (char *)&mapstate->sprites[0],
|
||||
sizeof(spritetype) * numsprites, state_compress);
|
||||
sizeof(spritetype) * Numsprites, state_compress);
|
||||
mapstate->sprites = (spritetype *)Brealloc(mapstate->sprites, j);
|
||||
mapstate->spritecrc = tempcrc;
|
||||
Bfree(tspri);
|
||||
|
@ -596,11 +595,8 @@ int32_t map_undoredo(int32_t dir)
|
|||
|
||||
numsectors = mapstate->numsectors;
|
||||
numwalls = mapstate->numwalls;
|
||||
numsprites = mapstate->numsprites;
|
||||
map_revision = mapstate->revision;
|
||||
|
||||
initspritelists();
|
||||
|
||||
Bmemset(show2dsector, 0, sizeof(show2dsector));
|
||||
Bmemset(show2dsprite, 0, sizeof(show2dsprite));
|
||||
Bmemset(show2dwall, 0, sizeof(show2dwall));
|
||||
|
@ -617,14 +613,16 @@ int32_t map_undoredo(int32_t dir)
|
|||
qlz_decompress((const char *)&mapstate->sprites[0], &sprite[0], state_decompress);
|
||||
}
|
||||
|
||||
updatenumsprites();
|
||||
initspritelists();
|
||||
|
||||
for (i=0; i<numsprites; i++)
|
||||
for (i=0; i<mapstate->numsprites; i++)
|
||||
{
|
||||
if ((sprite[i].cstat & 48) == 48) sprite[i].cstat &= ~48;
|
||||
insertsprite(sprite[i].sectnum,sprite[i].statnum);
|
||||
}
|
||||
|
||||
assert(Numsprites == mapstate->numsprites);
|
||||
|
||||
#ifdef POLYMER
|
||||
if (qsetmode == 200 && rendmode == 4)
|
||||
polymer_loadboard();
|
||||
|
@ -4576,8 +4574,6 @@ ENDFOR1:
|
|||
cursor = insertsprite(sprite[startspr].sectnum,0);
|
||||
if (cursor < 0) goto ERROR_TOOMANYSPRITES;
|
||||
|
||||
updatenumsprites();
|
||||
|
||||
sp = &sprite[cursor];
|
||||
Bmemcpy(sp, &sprite[startspr], sizeof(spritetype));
|
||||
sp->yoffset = 0;
|
||||
|
@ -4676,7 +4672,7 @@ ENDFOR1:
|
|||
|
||||
sect = sprite[curspr].sectnum;
|
||||
updatesector(dax,day,§);
|
||||
if (numsprites < MAXSPRITES && sect >= 0)
|
||||
if (Numsprites < MAXSPRITES && sect >= 0)
|
||||
{
|
||||
i = insertsprite(sect,0);
|
||||
Bmemcpy(&sprite[i], &sprite[linebegspr], sizeof(spritetype));
|
||||
|
@ -4702,7 +4698,6 @@ ENDFOR1:
|
|||
curspr = i;
|
||||
doingspace = 0;
|
||||
|
||||
updatenumsprites();
|
||||
asksave = 1;
|
||||
|
||||
if (numletters >= stackallocsize)
|
||||
|
@ -4745,15 +4740,14 @@ ENDFOR1:
|
|||
numletters--;
|
||||
deletesprite(last);
|
||||
|
||||
updatenumsprites();
|
||||
asksave = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
numletters--;
|
||||
deletesprite(last);
|
||||
|
||||
curspr = linebegspr;
|
||||
updatenumsprites();
|
||||
asksave = 1;
|
||||
}
|
||||
}
|
||||
|
@ -4775,7 +4769,6 @@ ENDFOR1:
|
|||
ERROR_TOOMANYSPRITES:
|
||||
if (cursor < 0) message("Too many sprites in map!");
|
||||
else deletesprite(cursor);
|
||||
updatenumsprites();
|
||||
|
||||
ERROR_NOMEMORY:
|
||||
if (spritenums) Bfree(spritenums);
|
||||
|
@ -5221,7 +5214,7 @@ static void Keys3d(void)
|
|||
if (AIMING_AT_SPRITE)
|
||||
{
|
||||
deletesprite(searchwall);
|
||||
updatenumsprites();
|
||||
|
||||
message("Sprite %d deleted",searchwall);
|
||||
if (AmbienceToggle)
|
||||
{
|
||||
|
@ -10707,7 +10700,7 @@ void ExtPreCheckKeys(void) // just before drawrooms
|
|||
|
||||
if (graphicsmode && !m32_sideview && zoom >= 256)
|
||||
{
|
||||
for (i=ii=0; i<MAXSPRITES && ii < numsprites; i++)
|
||||
for (i=ii=0; i<MAXSPRITES && ii < Numsprites; i++)
|
||||
{
|
||||
if ((sprite[i].cstat & 48) != 0 || sprite[i].statnum == MAXSTATUS) continue;
|
||||
ii++;
|
||||
|
|
|
@ -1666,7 +1666,7 @@ badindex:
|
|||
int32_t dasectnum = Gv_GetVarX(*insptr++), ret;
|
||||
|
||||
X_ERROR_INVALIDSECT(dasectnum);
|
||||
if (numsprites >= MAXSPRITES)
|
||||
if (Numsprites >= MAXSPRITES)
|
||||
{
|
||||
M32_ERROR("Maximum number of sprites reached.");
|
||||
continue;
|
||||
|
@ -1675,7 +1675,6 @@ badindex:
|
|||
ret = insertsprite(dasectnum, 0);
|
||||
vm.g_i = ret;
|
||||
vm.g_sp = &sprite[ret];
|
||||
numsprites++;
|
||||
}
|
||||
continue;
|
||||
|
||||
|
@ -1689,7 +1688,7 @@ badindex:
|
|||
{
|
||||
M32_ERROR("Tried to duplicate nonexistent sprite %d", ospritenum);
|
||||
}
|
||||
if ((tw==CON_DUPSPRITE && numsprites >= MAXSPRITES) ||
|
||||
if ((tw==CON_DUPSPRITE && Numsprites >= MAXSPRITES) ||
|
||||
(tw==CON_DUPSPRITE && spritesortcnt >= MAXSPRITESONSCREEN))
|
||||
{
|
||||
M32_ERROR("Maximum number of sprites reached.");
|
||||
|
@ -1709,7 +1708,6 @@ badindex:
|
|||
Bmemcpy(&sprite[nspritenum], &sprite[ospritenum], sizeof(spritetype));
|
||||
vm.g_i = nspritenum;
|
||||
vm.g_sp = &sprite[nspritenum];
|
||||
numsprites++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1730,8 +1728,6 @@ badindex:
|
|||
X_ERROR_INVALIDSPRI(daspritenum);
|
||||
ret = deletesprite(daspritenum);
|
||||
g_iReturnVar = ret;
|
||||
if (ret==0)
|
||||
numsprites--;
|
||||
}
|
||||
continue;
|
||||
|
||||
|
|
|
@ -554,7 +554,7 @@ static void Gv_AddSystemVars(void)
|
|||
|
||||
Gv_NewVar("numwalls",(intptr_t)&numwalls, GAMEVAR_SYSTEM | GAMEVAR_SHORTPTR | GAMEVAR_READONLY);
|
||||
Gv_NewVar("numsectors",(intptr_t)&numsectors, GAMEVAR_SYSTEM | GAMEVAR_SHORTPTR | GAMEVAR_READONLY);
|
||||
Gv_NewVar("numsprites",(intptr_t)&numsprites, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY);
|
||||
Gv_NewVar("numsprites",(intptr_t)&Numsprites, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY);
|
||||
{
|
||||
static int32_t numtiles;
|
||||
Gv_NewVar("numtiles",(intptr_t)&numtiles, GAMEVAR_SYSTEM | GAMEVAR_INTPTR | GAMEVAR_READONLY);
|
||||
|
|
|
@ -40,7 +40,6 @@ uint8_t default_buildkeys[NUMBUILDKEYS] =
|
|||
};
|
||||
|
||||
extern char changechar(char dachar, int32_t dadir, char smooshyalign, char boundcheck);
|
||||
extern void updatenumsprites(void);
|
||||
|
||||
static char autospritehelp=0, autosecthelp=0;
|
||||
//static int32_t lastmessagetime=-1;
|
||||
|
|
Loading…
Reference in a new issue