mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-30 21:31:03 +00:00
- another batch in SW.
This commit is contained in:
parent
727e2ceb29
commit
6eb6938bbe
9 changed files with 93 additions and 60 deletions
|
@ -110,7 +110,7 @@ void CopySectorMatch(short match)
|
|||
int ed,ss;
|
||||
SPRITEp dest_sp, src_sp;
|
||||
SECTORp dsectp,ssectp;
|
||||
short kill, nextkill;
|
||||
int kill;
|
||||
SPRITEp k;
|
||||
|
||||
StatIterator it(STAT_COPY_DEST);
|
||||
|
@ -130,7 +130,7 @@ void CopySectorMatch(short match)
|
|||
if (SP_TAG2(src_sp) == SPRITE_TAG2(ed) &&
|
||||
SP_TAG3(src_sp) == SPRITE_TAG3(ed))
|
||||
{
|
||||
short src_move, nextsrc_move;
|
||||
int src_move;
|
||||
ssectp = §or[src_sp->sectnum];
|
||||
|
||||
// !!!!!AAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHH
|
||||
|
@ -140,7 +140,8 @@ void CopySectorMatch(short match)
|
|||
|
||||
#if 1
|
||||
// kill all sprites in the dest sector that need to be
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[dest_sp->sectnum], kill, nextkill)
|
||||
SectIterator itsec(dest_sp->sectnum);
|
||||
while ((kill = itsec.NextIndex()) >= 0)
|
||||
{
|
||||
k = &sprite[kill];
|
||||
|
||||
|
@ -163,7 +164,8 @@ void CopySectorMatch(short match)
|
|||
|
||||
CopySectorWalls(dest_sp->sectnum, src_sp->sectnum);
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[src_sp->sectnum], src_move, nextsrc_move)
|
||||
itsec.Reset(src_sp->sectnum);
|
||||
while ((src_move = itsec.NextIndex()) >= 0)
|
||||
{
|
||||
// don't move ST1 Copy Tags
|
||||
if (SPRITE_TAG1(src_move) != SECT_COPY_SOURCE)
|
||||
|
|
|
@ -454,7 +454,7 @@ void WarpCopySprite(void)
|
|||
{
|
||||
SPRITEp sp1, sp2, sp;
|
||||
int sn, sn2;
|
||||
int spnum, next_spnum;
|
||||
int spnum;
|
||||
int xoff,yoff,zoff;
|
||||
short match;
|
||||
short sect1, sect2;
|
||||
|
@ -478,7 +478,8 @@ void WarpCopySprite(void)
|
|||
sect1 = sp1->sectnum;
|
||||
sect2 = sp2->sectnum;
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[sect1], spnum, next_spnum)
|
||||
SectIterator it(sect1);
|
||||
while ((spnum = it.NextIndex()) >= 0)
|
||||
{
|
||||
if (&sprite[spnum] == sp1)
|
||||
continue;
|
||||
|
@ -499,7 +500,8 @@ void WarpCopySprite(void)
|
|||
New->sectnum = sp2->sectnum;
|
||||
}
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[sect2], spnum, next_spnum)
|
||||
it.Reset(sect2);
|
||||
while ((spnum = it.NextIndex()) >= 0)
|
||||
{
|
||||
if (&sprite[spnum] == sp2)
|
||||
continue;
|
||||
|
@ -1900,7 +1902,9 @@ bool GameInterface::DrawAutomapPlayer(int cposx, int cposy, int czoom, int cang)
|
|||
// Draw sprites
|
||||
k = Player[screenpeek].PlayerSprite;
|
||||
for (i = 0; i < numsectors; i++)
|
||||
for (j = headspritesect[i]; j >= 0; j = nextspritesect[j])
|
||||
{
|
||||
SectIterator it(i);
|
||||
while ((j = it.NextIndex()) >= 0)
|
||||
{
|
||||
for (p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
|
@ -2074,7 +2078,8 @@ bool GameInterface::DrawAutomapPlayer(int cposx, int cposy, int czoom, int cang)
|
|||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -170,12 +170,12 @@ void
|
|||
JS_SpriteSetup(void)
|
||||
{
|
||||
SPRITEp sp;
|
||||
short SpriteNum = 0, NextSprite;
|
||||
int SpriteNum;
|
||||
USERp u;
|
||||
short i;
|
||||
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
short tag;
|
||||
|
||||
|
@ -288,7 +288,7 @@ void JS_InitMirrors(void)
|
|||
{
|
||||
short startwall, endwall;
|
||||
int i, j, s;
|
||||
short SpriteNum = 0, NextSprite;
|
||||
int SpriteNum;
|
||||
bool Found_Cam = false;
|
||||
|
||||
|
||||
|
@ -384,7 +384,8 @@ void JS_InitMirrors(void)
|
|||
Found_Cam = false;
|
||||
if (TEST_BOOL1(&sprite[mirror[mirrorcnt].camera]))
|
||||
{
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
if (sp->picnum >= CAMSPRITE && sp->picnum < CAMSPRITE + 8 &&
|
||||
|
@ -1390,7 +1391,7 @@ void
|
|||
UnlockKeyLock(short key_num, short hit_sprite)
|
||||
{
|
||||
SPRITEp sp;
|
||||
int SpriteNum = 0, NextSprite = 0, color = 0;
|
||||
int SpriteNum = 0, color = 0;
|
||||
|
||||
// Get palette by looking at key number
|
||||
switch (key_num - 1)
|
||||
|
@ -1421,7 +1422,8 @@ UnlockKeyLock(short key_num, short hit_sprite)
|
|||
break;
|
||||
}
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
|
|
@ -2114,9 +2114,10 @@ void
|
|||
DoFlagScore(int16_t pal)
|
||||
{
|
||||
SPRITEp sp;
|
||||
int SpriteNum = 0, NextSprite = 0;
|
||||
int SpriteNum;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
|
|
@ -7533,7 +7533,7 @@ InitMultiPlayerInfo(void)
|
|||
SPRITEp sp;
|
||||
short pnum, start0;
|
||||
unsigned stat;
|
||||
short SpriteNum, NextSprite, tag;
|
||||
int SpriteNum, tag;
|
||||
static short MultiStatList[] =
|
||||
{
|
||||
STAT_MULTI_START,
|
||||
|
@ -7541,7 +7541,8 @@ InitMultiPlayerInfo(void)
|
|||
};
|
||||
|
||||
// this routine is called before SpriteSetup - process start positions NOW
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
|
|
@ -89,10 +89,11 @@ int COVERinsertsprite(short sectnum, short stat)
|
|||
bool
|
||||
FAF_Sector(short sectnum)
|
||||
{
|
||||
short SpriteNum, Next;
|
||||
int SpriteNum;
|
||||
SPRITEp sp;
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[sectnum], SpriteNum, Next)
|
||||
SectIterator it(sectnum);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
@ -687,7 +688,7 @@ GetUpperLowerSector(short match, int x, int y, short *upper, short *lower)
|
|||
int i;
|
||||
short sectorlist[16];
|
||||
int sln = 0;
|
||||
short SpriteNum, Next;
|
||||
int SpriteNum;
|
||||
SPRITEp sp;
|
||||
|
||||
// keep a list of the last stacked sectors the view was in and
|
||||
|
@ -700,7 +701,8 @@ GetUpperLowerSector(short match, int x, int y, short *upper, short *lower)
|
|||
{
|
||||
bool found = false;
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[GlobStackSect[i]], SpriteNum, Next)
|
||||
SectIterator it(GlobStackSect[i]);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
@ -730,7 +732,8 @@ GetUpperLowerSector(short match, int x, int y, short *upper, short *lower)
|
|||
{
|
||||
bool found = false;
|
||||
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[i], SpriteNum, Next)
|
||||
SectIterator it(i);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
|
|
@ -1134,14 +1134,15 @@ int DoSpawnSpot(short SpriteNum)
|
|||
void
|
||||
DoSpawnSpotsForKill(short match)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
USERp u;
|
||||
|
||||
if (match < 0)
|
||||
return;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_SPAWN_SPOT], sn, next_sn)
|
||||
StatIterator it(STAT_SPAWN_SPOT);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
|
||||
|
@ -1163,14 +1164,15 @@ DoSpawnSpotsForKill(short match)
|
|||
void
|
||||
DoSpawnSpotsForDamage(short match)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
USERp u;
|
||||
|
||||
if (match < 0)
|
||||
return;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_SPAWN_SPOT], sn, next_sn)
|
||||
StatIterator it(STAT_SPAWN_SPOT);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
|
||||
|
@ -1191,7 +1193,7 @@ DoSpawnSpotsForDamage(short match)
|
|||
void
|
||||
DoSoundSpotMatch(short match, short sound_num, short sound_type)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
int flags;
|
||||
short snd2play;
|
||||
|
@ -1202,7 +1204,8 @@ DoSoundSpotMatch(short match, short sound_num, short sound_type)
|
|||
|
||||
ASSERT(sound_num >= 0);
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_SOUND_SPOT], sn, next_sn)
|
||||
StatIterator it(STAT_SOUND_SPOT);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
|
||||
|
@ -1278,10 +1281,11 @@ DoSoundSpotMatch(short match, short sound_num, short sound_type)
|
|||
void
|
||||
DoSoundSpotStopSound(short match)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_SOUND_SPOT], sn, next_sn)
|
||||
StatIterator it(STAT_SOUND_SPOT);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
|
||||
|
@ -1296,10 +1300,11 @@ DoSoundSpotStopSound(short match)
|
|||
void
|
||||
DoStopSoundSpotMatch(short match)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_STOP_SOUND_SPOT], sn, next_sn)
|
||||
StatIterator it(STAT_STOP_SOUND_SPOT);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
|
||||
|
@ -1528,11 +1533,12 @@ void DoDeleteSpriteMatch(short match)
|
|||
void
|
||||
DoChangorMatch(short match)
|
||||
{
|
||||
short sn, next_sn;
|
||||
int sn;
|
||||
SPRITEp sp;
|
||||
SECTORp sectp;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_CHANGOR], sn, next_sn)
|
||||
StatIterator it(STAT_CHANGOR);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[sn];
|
||||
sectp = §or[sp->sectnum];
|
||||
|
|
|
@ -1648,7 +1648,8 @@ void PreMapCombineFloors(void)
|
|||
{
|
||||
dasect = sectlist[sectlistplc++];
|
||||
|
||||
for (j=headspritesect[dasect]; j>=0; j=nextspritesect[j])
|
||||
SectIterator it(dasect);
|
||||
while ((j = it.NextIndex()) >= 0)
|
||||
{
|
||||
sprite[j].x += dx;
|
||||
sprite[j].y += dy;
|
||||
|
@ -1758,14 +1759,15 @@ SpriteSetupPost(void)
|
|||
{
|
||||
SPRITEp ds;
|
||||
USERp u;
|
||||
short SpriteNum, NextSprite;
|
||||
int SpriteNum;
|
||||
int i;
|
||||
int cz,fz;
|
||||
|
||||
// Post processing of some sprites after gone through the main SpriteSetup()
|
||||
// routine
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_FLOOR_PAN], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_FLOOR_PAN);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
SectIterator it(sprite[SpriteNum].sectnum);
|
||||
while ((i = it.NextIndex()) >= 0)
|
||||
|
@ -1803,7 +1805,7 @@ void
|
|||
SpriteSetup(void)
|
||||
{
|
||||
SPRITEp sp;
|
||||
short SpriteNum = 0, NextSprite;
|
||||
int SpriteNum;
|
||||
USERp u;
|
||||
short i, num;
|
||||
int cz,fz;
|
||||
|
@ -1827,7 +1829,8 @@ SpriteSetup(void)
|
|||
// Call my little sprite setup routine first
|
||||
JS_SpriteSetup();
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[0], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_DEFAULT);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
@ -4752,7 +4755,8 @@ getzrangepoint(int x, int y, int z, short sectnum,
|
|||
*florhit = sectnum + 16384;
|
||||
|
||||
// Go through sprites of only the current sector
|
||||
for (j = headspritesect[sectnum]; j >= 0; j = nextspritesect[j])
|
||||
SectIterator it(sectnum);
|
||||
while ((j = it.NextIndex()) >= 0)
|
||||
{
|
||||
spr = &sprite[j];
|
||||
cstat = spr->cstat;
|
||||
|
|
|
@ -351,14 +351,15 @@ TrackClonePoint(short SpriteNum)
|
|||
|
||||
void QuickJumpSetup(short stat, short lotag, short type)
|
||||
{
|
||||
short SpriteNum = 0, NextSprite, ndx;
|
||||
int SpriteNum = 0, ndx;
|
||||
TRACK_POINTp tp;
|
||||
TRACKp t;
|
||||
SPRITEp nsp;
|
||||
short start_sprite, end_sprite;
|
||||
|
||||
// make short quick jump tracks
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[stat], SpriteNum, NextSprite)
|
||||
StatIterator it(stat);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
|
||||
// find an open track
|
||||
|
@ -416,14 +417,15 @@ void QuickJumpSetup(short stat, short lotag, short type)
|
|||
|
||||
void QuickScanSetup(short stat, short lotag, short type)
|
||||
{
|
||||
short SpriteNum = 0, NextSprite, ndx;
|
||||
int SpriteNum = 0, ndx;
|
||||
TRACK_POINTp tp;
|
||||
TRACKp t;
|
||||
SPRITEp nsp;
|
||||
short start_sprite, end_sprite;
|
||||
|
||||
// make short quick jump tracks
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[stat], SpriteNum, NextSprite)
|
||||
StatIterator it(stat);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
|
||||
// find an open track
|
||||
|
@ -477,13 +479,14 @@ void QuickScanSetup(short stat, short lotag, short type)
|
|||
|
||||
void QuickExitSetup(short stat, short type)
|
||||
{
|
||||
short SpriteNum = 0, NextSprite, ndx;
|
||||
int SpriteNum = 0, ndx;
|
||||
TRACK_POINTp tp;
|
||||
TRACKp t;
|
||||
SPRITEp nsp;
|
||||
short start_sprite, end_sprite;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[stat], SpriteNum, NextSprite)
|
||||
StatIterator it(stat);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
|
||||
// find an open track
|
||||
|
@ -532,13 +535,14 @@ void QuickExitSetup(short stat, short type)
|
|||
|
||||
void QuickLadderSetup(short stat, short lotag, short type)
|
||||
{
|
||||
short SpriteNum = 0, NextSprite, ndx;
|
||||
int SpriteNum = 0, ndx;
|
||||
TRACK_POINTp tp;
|
||||
TRACKp t;
|
||||
SPRITEp nsp;
|
||||
short start_sprite, end_sprite;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[stat], SpriteNum, NextSprite)
|
||||
StatIterator it(stat);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
|
||||
// find an open track
|
||||
|
@ -594,7 +598,7 @@ void QuickLadderSetup(short stat, short lotag, short type)
|
|||
void
|
||||
TrackSetup(void)
|
||||
{
|
||||
short SpriteNum = 0, NextSprite, ndx;
|
||||
int SpriteNum = 0, ndx;
|
||||
TRACK_POINTp tp;
|
||||
TRACKp t;
|
||||
TRACK_POINTp New;
|
||||
|
@ -623,7 +627,8 @@ TrackSetup(void)
|
|||
t = &Track[ndx];
|
||||
|
||||
// find the first point and save it
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_TRACK + ndx], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_TRACK + ndx);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
if (LOW_TAG_SPRITE(SpriteNum) == TRACK_START)
|
||||
{
|
||||
|
@ -660,7 +665,8 @@ TrackSetup(void)
|
|||
int dist, low_dist = 999999;
|
||||
|
||||
// find the closest point to the last point
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_TRACK + ndx], SpriteNum, NextSprite)
|
||||
StatIterator it(STAT_TRACK + ndx);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
dist = Distance((tp + t->NumPoints - 1)->x, (tp + t->NumPoints - 1)->y, sprite[SpriteNum].x, sprite[SpriteNum].y);
|
||||
|
||||
|
@ -705,9 +711,10 @@ TrackSetup(void)
|
|||
SPRITEp
|
||||
FindBoundSprite(short tag)
|
||||
{
|
||||
short sn, next_sn;
|
||||
short sn;
|
||||
|
||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_ST1], sn, next_sn)
|
||||
StatIterator it(STAT_ST1);
|
||||
while ((sn = it.NextIndex()) >= 0)
|
||||
{
|
||||
if (sprite[sn].hitag == tag)
|
||||
{
|
||||
|
@ -1037,7 +1044,7 @@ SetupSectorObject(short sectnum, short tag)
|
|||
{
|
||||
SPRITEp sp;
|
||||
SECTOR_OBJECTp sop;
|
||||
short object_num, SpriteNum, NextSprite;
|
||||
int object_num, SpriteNum;
|
||||
short j;
|
||||
short New;
|
||||
USERp u;
|
||||
|
@ -1131,7 +1138,8 @@ SetupSectorObject(short sectnum, short tag)
|
|||
SET(u->Flags2, SPR2_SPRITE_FAKE_BLOCK); // for damage test
|
||||
|
||||
// check for any ST1 sprites laying on the center sector
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[sectnum], SpriteNum, NextSprite)
|
||||
SectIterator it(sectnum);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
|
||||
|
@ -2831,14 +2839,15 @@ PlaceSectorObject(SECTOR_OBJECTp sop, int newx, int newy)
|
|||
|
||||
void VehicleSetSmoke(SECTOR_OBJECTp sop, ANIMATORp animator)
|
||||
{
|
||||
short SpriteNum, NextSprite;
|
||||
short SpriteNum;
|
||||
SECTORp *sectp;
|
||||
SPRITEp sp;
|
||||
USERp u;
|
||||
|
||||
for (sectp = sop->sectp; *sectp; sectp++)
|
||||
{
|
||||
TRAVERSE_SPRITE_SECT(headspritesect[*sectp - sector], SpriteNum, NextSprite)
|
||||
SectIterator it(*sectp - sector);
|
||||
while ((SpriteNum = it.NextIndex()) >= 0)
|
||||
{
|
||||
sp = &sprite[SpriteNum];
|
||||
u = User[SpriteNum];
|
||||
|
|
Loading…
Reference in a new issue