tmc/include/manager/diggingCaveEntranceManager.h

56 lines
1.8 KiB
C

#ifndef DIGGINGCAVEENTRANCEMANAGER_H
#define DIGGINGCAVEENTRANCEMANAGER_H
#include "manager.h"
typedef struct {
Manager base;
} DiggingCaveEntranceManager;
enum DiggingCaveEntranceType {
CAVE_LAKE_WOODS_ENTER,
CAVE_LAKE_WOODS_LEAVE,
CAVE_HYRULE_TOWN_ENTER,
CAVE_HYRULE_TOWN_LEAVE,
CAVE_EASTERN_HILL_ENTER,
CAVE_EASTERN_HILL_LEAVE,
CAVE_CRENEL_ENTER,
CAVE_CRENEL_LEAVE,
CAVE_VEIL_FALLS_ENTER,
CAVE_VEIL_FALLS_LEAVE,
CAVE_TRILBY_HIGHLANDS_ENTER,
CAVE_TRILBY_HIGHLANDS_LEAVE,
CAVE_CASTOR_WILDS_ENTER,
CAVE_CASTOR_WILDS_LEAVE,
CAVE_LAKE_HYLIA_NORTH_ENTER,
CAVE_LAKE_HYLIA_NORTH_LEAVE,
CAVE_LON_LON_RANCH_ENTER,
CAVE_LON_LON_RANCH_LEAVE,
CAVE_LAKE_HYLIA_CENTER_ENTER,
CAVE_LAKE_HYLIA_CENTER_LEAVE,
};
typedef struct {
u16 sourceTilePos; /**< Tile position for the entrance in the source room. */
u8 sourceRoom; /**< @see RoomID */
u8 type; /**< @see DiggingCaveEntranceType */
u8 targetArea; /**< @see AreaID */
u8 targetRoom; /**< @see RoomID */
u16 targetTilePos; /**< Tile position for the entrance in the target room. */
} DiggingCaveEntrance;
typedef struct {
const DiggingCaveEntrance* entrance;
u16 offsetX; /**< X offset from the player to the entrance. */
u16 offsetY; /**< Y offset from the player to the entrance. */
bool8 isDiggingCave;
u8 currentArea; /**< Area the player was in before the transition. */
u8 previousArea; /**< Previous value of currentArea. */
u8 targetRoom; /**< targetRoom | 0x80 ? */
} DiggingCaveEntranceTransition;
extern DiggingCaveEntranceTransition gDiggingCaveEntranceTransition;
extern const DiggingCaveEntrance* const diggingCaveEntrances[];
#endif // DIGGINGCAVEENTRANCEMANAGER_H