Fix object finders

This commit is contained in:
Alexander Batalov 2023-05-23 17:16:13 +03:00
parent eb2fc275ee
commit 4c9debb028
1 changed files with 22 additions and 21 deletions

View File

@ -2133,27 +2133,18 @@ Object* objectFindFirst()
{
gObjectFindElevation = 0;
ObjectListNode* objectListNode;
for (gObjectFindTile = 0; gObjectFindTile < HEX_GRID_SIZE; gObjectFindTile++) {
objectListNode = gObjectListHeadByTile[gObjectFindTile];
if (objectListNode) {
break;
ObjectListNode* objectListNode = gObjectListHeadByTile[gObjectFindTile];
while (objectListNode != NULL) {
Object* object = objectListNode->obj;
if (!artIsObjectTypeHidden(FID_TYPE(object->fid))) {
gObjectFindLastObjectListNode = objectListNode;
return object;
}
objectListNode = objectListNode->next;
}
}
if (gObjectFindTile == HEX_GRID_SIZE) {
gObjectFindLastObjectListNode = NULL;
return NULL;
}
while (objectListNode != NULL) {
if (artIsObjectTypeHidden(FID_TYPE(objectListNode->obj->fid)) == 0) {
gObjectFindLastObjectListNode = objectListNode;
return objectListNode->obj;
}
objectListNode = objectListNode->next;
}
gObjectFindLastObjectListNode = NULL;
return NULL;
}
@ -2167,9 +2158,14 @@ Object* objectFindNext()
ObjectListNode* objectListNode = gObjectFindLastObjectListNode->next;
while (gObjectFindTile < HEX_GRID_SIZE) {
while (true) {
if (objectListNode == NULL) {
objectListNode = gObjectListHeadByTile[gObjectFindTile++];
gObjectFindTile++;
if (gObjectFindTile >= HEX_GRID_SIZE) {
break;
}
objectListNode = gObjectListHeadByTile[gObjectFindTile];
}
while (objectListNode != NULL) {
@ -2219,9 +2215,14 @@ Object* objectFindNextAtElevation()
ObjectListNode* objectListNode = gObjectFindLastObjectListNode->next;
while (gObjectFindTile < HEX_GRID_SIZE) {
while (true) {
if (objectListNode == NULL) {
objectListNode = gObjectListHeadByTile[gObjectFindTile++];
gObjectFindTile++;
if (gObjectFindTile >= HEX_GRID_SIZE) {
break;
}
objectListNode = gObjectListHeadByTile[gObjectFindTile];
}
while (objectListNode != NULL) {