- Exhumed: Reduce repeated hashtable lookups when building chunks.

This commit is contained in:
Mitchell Richters 2023-04-16 17:00:00 +10:00
parent 04eb0fe926
commit 27b9b0d2f8
4 changed files with 16 additions and 6 deletions

View file

@ -2004,10 +2004,12 @@ void AIObject::Tick(RunListEvent* ev)
// int edi = nSprite | 0x4000;
const auto firepotSeqs = getFileSeqs("firepot");
if (nStat == kStatExplodeTrigger)
{
for (int i = 4; i < 8; i++) {
BuildCreatureChunk(pActor, getSequence("firepot", (i >> 2) + 1).getFirstTexID(), true);
BuildCreatureChunk(pActor, firepotSeqs->operator[]((i >> 2) + 1).getFirstTexID(), true);
}
runlist_RadialDamageEnemy(pActor, 200, 20);
@ -2015,7 +2017,7 @@ void AIObject::Tick(RunListEvent* ev)
else if (nStat == kStatExplodeTarget)
{
for (int i = 0; i < 8; i++) {
BuildCreatureChunk(pActor, getSequence("firepot", (i >> 1) + 3).getFirstTexID(), true);
BuildCreatureChunk(pActor, firepotSeqs->operator[]((i >> 1) + 3).getFirstTexID(), true);
}
}

View file

@ -638,9 +638,11 @@ void AIPlayer::Damage(RunListEvent* ev)
if (ev->isRadialEvent())
{
const auto joeSeqs = getFileSeqs("joe");
for (int i = 122; i <= 131; i++)
{
BuildCreatureChunk(pPlayerActor, getSequence("joe", i).getFirstTexID());
BuildCreatureChunk(pPlayerActor, joeSeqs->operator[](i).getFirstTexID());
}
StartDeathSeq(nPlayer, 1);

View file

@ -250,9 +250,11 @@ int GrabEgg()
void BlowChunks(DExhumedActor* pActor)
{
const auto spiderSeqs = getFileSeqs("spider");
for (int i = 0; i < 4; i++)
{
BuildCreatureChunk(pActor, getSequence("spider", i + 41).getFirstTexID());
BuildCreatureChunk(pActor, spiderSeqs->operator[](i + 41).getFirstTexID());
}
}
@ -273,9 +275,11 @@ void DestroyEgg(int nEgg)
}
else
{
const auto queeneggSeqs = getFileSeqs("queenegg");
for (int i = 0; i < 4; i++)
{
BuildCreatureChunk(pActor, getSequence("queenegg", (i % 2) + 24).getFirstTexID());
BuildCreatureChunk(pActor, queeneggSeqs->operator[]((i % 2) + 24).getFirstTexID());
}
}

View file

@ -419,9 +419,11 @@ void AISpider::Damage(RunListEvent* ev)
nCreaturesKilled++;
const auto spiderSeqs = getFileSeqs("spider");
for (int i = 0; i < 7; i++)
{
BuildCreatureChunk(spp, getSequence("spider", i + 41).getFirstTexID());
BuildCreatureChunk(spp, spiderSeqs->operator[](i + 41).getFirstTexID());
}
}
}