summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-06 18:12:44 -0400
committerscnorton <scnorton@biociphers.org>2017-09-06 18:12:44 -0400
commit398186d7c42b009218ff1fea17f7b474e1c6389e (patch)
tree6bf1c581c4609a4e6afb1f025afe36240128214e /src
parent942400ddbf15ca8ac9d56279e971dd6f4e1c800d (diff)
RemoveFieldObjectInternal
Diffstat (limited to 'src')
-rw-r--r--src/field_map_obj.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 7420895ab..52f798f9b 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -21,6 +21,8 @@ static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
static bool8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
/*static*/ void FieldObjectHandleDynamicGraphicsId(struct MapObject *);
/*static*/ void RemoveFieldObjectInternal (struct MapObject *);
+/*static*/ u16 GetFieldObjectFlagIdByFieldObjectId(u8);
+/*static*/ struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
// ROM data
@@ -422,3 +424,21 @@ void RemoveFieldObject(struct MapObject *mapObject)
mapObject->active = FALSE;
RemoveFieldObjectInternal(mapObject);
}
+
+void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 index;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &index))
+ {
+ FlagSet(GetFieldObjectFlagIdByFieldObjectId(index));
+ RemoveFieldObject(&gMapObjects[index]);
+ }
+}
+
+void RemoveFieldObjectInternal(struct MapObject *mapObject)
+{
+ struct SpriteFrameImage image;
+ image.size = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->size;
+ gSprites[mapObject->spriteId].images = &image;
+ DestroySprite(&gSprites[mapObject->spriteId]);
+}