mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-27 05:55:39 -04:00
73 lines
2.7 KiB
C
73 lines
2.7 KiB
C
#ifndef POKEDIAMOND_MAP_OBJECT_H
|
|
#define POKEDIAMOND_MAP_OBJECT_H
|
|
|
|
#include "global.h"
|
|
#include "field_system.h"
|
|
#include "heap.h"
|
|
|
|
typedef struct LocalMapObject {
|
|
u8 padding[0x128]; //todo verify size
|
|
} LocalMapObject;
|
|
|
|
typedef struct ObjectEvent
|
|
{
|
|
u8 padding[0x20];
|
|
//todo fill out
|
|
//todo this should be in map_events_internal.h
|
|
} ObjectEvent;
|
|
|
|
typedef void (*LocalMapObject_UnkCallback)(LocalMapObject* object);
|
|
|
|
typedef enum MapObjectFlagBits {
|
|
MAPOBJECTFLAG_ACTIVE = (1 << 0),
|
|
MAPOBJECTFLAG_SINGLE_MOVEMENT = (1 << 1),
|
|
MAPOBJECTFLAG_UNK2 = (1 << 2),
|
|
MAPOBJECTFLAG_UNK3 = (1 << 3),
|
|
MAPOBJECTFLAG_UNK4 = (1 << 4),
|
|
MAPOBJECTFLAG_UNK5 = (1 << 5),
|
|
MAPOBJECTFLAG_MOVEMENT_PAUSED = (1 << 6),
|
|
MAPOBJECTFLAG_UNK7 = (1 << 7),
|
|
MAPOBJECTFLAG_UNK8 = (1 << 8),
|
|
MAPOBJECTFLAG_VISIBLE = (1 << 9),
|
|
MAPOBJECTFLAG_UNK10 = (1 << 10),
|
|
MAPOBJECTFLAG_UNK11 = (1 << 11),
|
|
MAPOBJECTFLAG_UNK12 = (1 << 12),
|
|
MAPOBJECTFLAG_UNK13 = (1 << 13),
|
|
MAPOBJECTFLAG_UNK14 = (1 << 14),
|
|
MAPOBJECTFLAG_UNK15 = (1 << 15),
|
|
MAPOBJECTFLAG_UNK16 = (1 << 16),
|
|
MAPOBJECTFLAG_UNK17 = (1 << 17),
|
|
MAPOBJECTFLAG_UNK18 = (1 << 18),
|
|
MAPOBJECTFLAG_UNK19 = (1 << 19),
|
|
MAPOBJECTFLAG_UNK20 = (1 << 20),
|
|
MAPOBJECTFLAG_UNK21 = (1 << 21),
|
|
MAPOBJECTFLAG_UNK22 = (1 << 22),
|
|
MAPOBJECTFLAG_IGNORE_HEIGHTS = (1 << 23),
|
|
MAPOBJECTFLAG_UNK24 = (1 << 24),
|
|
MAPOBJECTFLAG_UNK25 = (1 << 25),
|
|
MAPOBJECTFLAG_UNK26 = (1 << 26),
|
|
MAPOBJECTFLAG_UNK27 = (1 << 27),
|
|
MAPOBJECTFLAG_UNK28 = (1 << 28),
|
|
MAPOBJECTFLAG_UNK29 = (1 << 29),
|
|
MAPOBJECTFLAG_UNK30 = (1 << 30),
|
|
MAPOBJECTFLAG_UNK31 = (1 << 31),
|
|
} MapObjectFlagBits;
|
|
|
|
#define MAP_OBJECT_GFX_ID_INVALID 0xFFFF
|
|
|
|
MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, HeapID heapId);
|
|
void MapObjectManager_Delete(MapObjectManager *manager);
|
|
void sub_020573C8(MapObjectManager *manager, u32 unused, u32 a2, u32 objectCount, ObjectEvent *objectEvents);
|
|
LocalMapObject *MapObject_Create(MapObjectManager *manager, u32 x, u32 y, u32 direction, u32 sprite, u32 movement, u32 mapNo);
|
|
LocalMapObject *MapObject_CreateFromObjectEventWithId(MapObjectManager *manager, u16 id, u32 objectEventCount, u32 mapNo, const ObjectEvent *events);
|
|
void sub_02057614(LocalMapObject *object, u32 sprite);
|
|
void sub_02057634(LocalMapObject *object, u32 sprite);
|
|
void MapObject_Remove(LocalMapObject *object);
|
|
void MapObject_Delete(LocalMapObject *object);
|
|
void sub_020576A8(LocalMapObject *object);
|
|
void MapObjectManager_RemoveAllActiveObjects(MapObjectManager *manager);
|
|
void sub_02057750(MapObjectManager *manager);
|
|
void sub_020577A8(MapObjectManager *manager);
|
|
|
|
#endif //POKEDIAMOND_MAP_OBJECT_H
|