summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-07 16:09:59 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-07 16:09:59 -0400
commit341a4735bc3e702104574055b97f1d691668bc14 (patch)
treebfa070921f1b23b364856947cd4b57de4e9091cc /src
parentf128e4c4f0e1214801178e643223a77d8ec904f8 (diff)
RemoveFieldObjectsOutsideView
Diffstat (limited to 'src')
-rw-r--r--src/field_map_obj.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index b6a7f9c9a..0d04c4063 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -33,6 +33,7 @@ void sub_8096518(struct MapObject *, struct Sprite *);
/*static*/ void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
/*static*/ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
/*static*/ void sub_808E894(u16);
+/*static*/ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject);
// ROM data
@@ -739,3 +740,27 @@ void SpawnFieldObjectsInView(s16 cameraX, s16 cameraY)
}
}
}
+
+void RemoveFieldObjectsOutsideView(void)
+{
+ u8 i;
+ u8 j;
+ bool8 isActiveLinkPlayer;
+ struct MapObject *mapObject;
+
+ for (i = 0; i < ARRAY_COUNT(gMapObjects); i ++)
+ {
+ for (j = 0, isActiveLinkPlayer = FALSE; j < ARRAY_COUNT(gLinkPlayerMapObjects); j ++)
+ {
+ if (gLinkPlayerMapObjects[j].active && i == gLinkPlayerMapObjects[j].mapObjId)
+ isActiveLinkPlayer = TRUE;
+ }
+ if (!isActiveLinkPlayer)
+ {
+ mapObject = &gMapObjects[i];
+
+ if (mapObject->active && !mapObject->mapobj_bit_16)
+ RemoveFieldObjectIfOutsideView(mapObject);
+ }
+ }
+}