summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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 = ℑ
+ DestroySprite(&gSprites[mapObject->spriteId]);
+}