mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-25 07:26:54 -05:00
79 lines
2.7 KiB
C
79 lines
2.7 KiB
C
#ifndef POKEDIAMOND_FIELD_MOVE_H
|
|
#define POKEDIAMOND_FIELD_MOVE_H
|
|
|
|
#include "global.h"
|
|
|
|
#include "field_system.h"
|
|
#include "task.h"
|
|
|
|
typedef struct FieldMoveUseData {
|
|
TaskManager *taskManager;
|
|
u16 partySlot;
|
|
u16 fieldMoveIdx;
|
|
} FieldMoveUseData;
|
|
|
|
typedef struct FieldMoveCheckData {
|
|
u32 mapId;
|
|
FieldSystem *fieldSystem;
|
|
LocalMapObject *facingObject;
|
|
u16 flag;
|
|
} FieldMoveCheckData;
|
|
|
|
typedef void (*FieldMoveUseFunc)(struct FieldMoveUseData *useData, const struct FieldMoveCheckData *checkData);
|
|
typedef u32 (*FieldMoveCheckFunc)(const struct FieldMoveCheckData *checkData);
|
|
|
|
typedef enum FieldMoveFuncType {
|
|
FIELD_MOVE_FUNC_USE,
|
|
FIELD_MOVE_FUNC_CHECK
|
|
} FieldMoveFuncType;
|
|
|
|
#define FIELD_MOVE_CHECK_TREE_F 0
|
|
#define FIELD_MOVE_CHECK_UNK1_F 1
|
|
#define FIELD_MOVE_CHECK_WATER_F 2
|
|
#define FIELD_MOVE_CHECK_ROCK_F 3
|
|
#define FIELD_MOVE_CHECK_DEFOG_F 4
|
|
#define FIELD_MOVE_CHECK_BREAKROCK_F 5
|
|
#define FIELD_MOVE_CHECK_WATERFALL_F 6
|
|
#define FIELD_MOVE_CHECK_ROCKCLIMB_F 7
|
|
#define FIELD_MOVE_CHECK_FLASH_F 8
|
|
#define FIELD_MOVE_CHECK_UNK9_F 9
|
|
#define FIELD_MOVE_CHECK_UNK10_F 10
|
|
#define FIELD_MOVE_CHECK_UNK11_F 11
|
|
#define FIELD_MOVE_CHECK_UNK12_F 12
|
|
#define FIELD_MOVE_CHECK_WHIRLPOOL_F 13
|
|
#define FIELD_MOVE_CHECK_HEADBUTT_F 14
|
|
|
|
typedef enum FieldMoveCheckFlags {
|
|
FIELD_MOVE_CHECK_TREE = (1 << FIELD_MOVE_CHECK_TREE_F),
|
|
FIELD_MOVE_CHECK_UNK1 = (1 << FIELD_MOVE_CHECK_UNK1_F),
|
|
FIELD_MOVE_CHECK_WATER = (1 << FIELD_MOVE_CHECK_WATER_F),
|
|
FIELD_MOVE_CHECK_ROCK = (1 << FIELD_MOVE_CHECK_ROCK_F),
|
|
FIELD_MOVE_CHECK_DEFOG = (1 << FIELD_MOVE_CHECK_DEFOG_F),
|
|
FIELD_MOVE_CHECK_BREAKROCK = (1 << FIELD_MOVE_CHECK_BREAKROCK_F),
|
|
FIELD_MOVE_CHECK_WATERFALL = (1 << FIELD_MOVE_CHECK_WATERFALL_F),
|
|
FIELD_MOVE_CHECK_ROCKCLIMB = (1 << FIELD_MOVE_CHECK_ROCKCLIMB_F),
|
|
FIELD_MOVE_CHECK_FLASH = (1 << FIELD_MOVE_CHECK_FLASH_F),
|
|
FIELD_MOVE_CHECK_UNK9 = (1 << FIELD_MOVE_CHECK_UNK9_F),
|
|
FIELD_MOVE_CHECK_UNK10 = (1 << FIELD_MOVE_CHECK_UNK10_F),
|
|
FIELD_MOVE_CHECK_UNK11 = (1 << FIELD_MOVE_CHECK_UNK11_F),
|
|
FIELD_MOVE_CHECK_UNK12 = (1 << FIELD_MOVE_CHECK_UNK12_F),
|
|
FIELD_MOVE_CHECK_WHIRLPOOL = (1 << FIELD_MOVE_CHECK_WHIRLPOOL_F),
|
|
FIELD_MOVE_CHECK_HEADBUTT = (1 << FIELD_MOVE_CHECK_HEADBUTT_F)
|
|
} FieldMoveCheckFlags;
|
|
|
|
typedef struct FieldMoveFuncData {
|
|
FieldMoveUseFunc use;
|
|
FieldMoveCheckFunc check;
|
|
} FieldMoveFuncData;
|
|
|
|
typedef struct FieldUseMoveEnvironment {
|
|
u32 magic;
|
|
LocalMapObject *facingObject;
|
|
FieldMoveUseData useData;
|
|
} FieldUseMoveEnvironment;
|
|
|
|
void *FieldMove_GetMoveFunc(FieldMoveFuncType funcType, u16 fieldMoveIndex);
|
|
void FieldMove_InitCheckData(FieldSystem *fieldSystem, FieldMoveCheckData *checkData);
|
|
|
|
#endif // POKEDIAMOND_FIELD_MOVE_H
|