Fix overflow calculating maximum free slots for misc entities

This commit is contained in:
ζeh Matt 2024-01-12 17:48:39 +02:00
parent 7d8f13a97f
commit 3dc2a25121
No known key found for this signature in database
GPG Key ID: 18CE582C71A225B0
1 changed files with 8 additions and 5 deletions

View File

@ -341,11 +341,14 @@ EntityBase* CreateEntity(EntityType type)
if (EntityTypeIsMiscEntity(type))
{
// Misc sprites are commonly used for effects, if there are less than MAX_MISC_SPRITES
// free it will fail to keep slots for more relevant sprites.
// Also there can't be more than MAX_MISC_SPRITES sprites in this list.
uint16_t miscSlotsRemaining = MAX_MISC_SPRITES - GetMiscEntityCount();
if (miscSlotsRemaining >= _freeIdList.size())
// Misc sprites are commonly used for effects, give other entity types higher priority.
if (GetMiscEntityCount() >= MAX_MISC_SPRITES)
{
return nullptr;
}
// If there are less than MAX_MISC_SPRITES free slots, ensure other entities can be created.
if (_freeIdList.size() < MAX_MISC_SPRITES)
{
return nullptr;
}