mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
54 lines
2.5 KiB
C
54 lines
2.5 KiB
C
#ifndef POKEPLATINUM_BERRY_PATCH_MANAGER_H
|
|
#define POKEPLATINUM_BERRY_PATCH_MANAGER_H
|
|
|
|
#include "constants/heap.h"
|
|
|
|
#include "struct_decls/struct_02061AB4_decl.h"
|
|
|
|
#include "field/field_system_decl.h"
|
|
|
|
#include "berry_patches.h"
|
|
|
|
enum BerryWateringState {
|
|
BERRY_WATERING_STATE_INIT = 0, // Initial state - setting up watering mode
|
|
BERRY_WATERING_STATE_WATERING, // Watering the current patch
|
|
BERRY_WATERING_STATE_INPUT, // Waiting for player input (movement keys)
|
|
BERRY_WATERING_STATE_ANIMATION, // Playing watering animation
|
|
BERRY_WATERING_STATE_CLEANUP, // Cleaning up and exiting watering mode
|
|
};
|
|
|
|
enum BerryPatchFlags {
|
|
BERRY_PATCH_FLAG_INVALID = 0x0, // Not a berry patch or NULL
|
|
BERRY_PATCH_FLAG_EMPTY = 0x1, // Patch is empty, can plant
|
|
BERRY_PATCH_FLAG_CAN_MULCH = 0x2, // Patch can have mulch applied
|
|
BERRY_PATCH_FLAG_HAS_BERRY = 0x4, // Patch has berry growing
|
|
};
|
|
|
|
typedef struct BerryPatchManager {
|
|
enum HeapID heapID;
|
|
BerryGrowthData *growthData;
|
|
NNSG3dRenderObj renderObj;
|
|
NNSG3dResMdl *model;
|
|
NNSG3dResFileHeader *resource;
|
|
} BerryPatchManager;
|
|
|
|
BerryPatchManager *BerryPatchManager_New(FieldSystem *fieldSystem, enum HeapID heapID);
|
|
void BerryPatchManager_Free(BerryPatchManager *manager);
|
|
void BerryPatches_ElapseTime(FieldSystem *fieldSystem, int minutes);
|
|
void BerryPatches_UpdateGrowthStates(FieldSystem *fieldSystem);
|
|
BOOL BerryPatches_HarvestBerry(FieldSystem *fieldSystem, MapObject *mapObject);
|
|
void BerryPatches_SetMulchType(FieldSystem *fieldSystem, MapObject *mapObject, u16 mulchItemID);
|
|
void BerryPatches_PlantBerry(FieldSystem *fieldSystem, MapObject *mapObject, u16 berryItemID);
|
|
void BerryPatches_ResetMoisture(FieldSystem *fieldSystem, MapObject *mapObject);
|
|
int BerryPatches_GetGrowthStage(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
int BerryPatches_GetBerryID(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
u16 BerryPatches_GetItemID(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
u16 BerryPatches_GetMulchItemID(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
int BerryPatches_GetMoisture(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
int BerryPatches_GetYield(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
u32 BerryPatches_GetPatchFlags(const FieldSystem *fieldSystem, const MapObject *mapObject);
|
|
void BerryPatches_StartWatering(FieldSystem *fieldSystem);
|
|
void BerryPatches_EndWatering(FieldSystem *fieldSystem);
|
|
|
|
#endif // POKEPLATINUM_BERRY_PATCH_MANAGER_H
|