pokeheartgold/include/map_matrix.h
2021-12-22 14:27:49 -05:00

48 lines
1.5 KiB
C

#ifndef POKEHEARTGOLD_MAP_MATRIX_H
#define POKEHEARTGOLD_MAP_MATRIX_H
#include "save.h"
#include "heap.h"
#define MAP_MATRIX_MAX_SIZE 799
#define MAP_MATRIX_MAX_NAME_LENGTH 16
typedef struct MAPDATA {
u16 models[MAP_MATRIX_MAX_SIZE];
} MAPDATA;
typedef struct MAPMATRIXDATA {
u8 height;
u8 width;
u16 headers[MAP_MATRIX_MAX_SIZE];
u8 altitudes[MAP_MATRIX_MAX_SIZE];
MAPDATA maps;
u8 name[MAP_MATRIX_MAX_NAME_LENGTH];
} MAPMATRIXDATA;
typedef struct MAPMATRIX {
u8 width;
u8 height;
u8 matrix_id;
MAPMATRIXDATA data;
} MAPMATRIX;
MAPMATRIX* MapMatrix_New(void);
void MapMatrix_Load(u32 map_no, MAPMATRIX* map_matrix);
void MapMatrix_Free(MAPMATRIX* map_matrix);
u16 MapMatrix_GetMapModelNo(s32 map_no, MAPMATRIX* map_matrix);
u8 MapMatrix_GetWidth(MAPMATRIX* map_matrix);
u8 MapMatrix_GetHeight(MAPMATRIX* map_matrix);
u16 MapMatrix_GetMapHeader(MAPMATRIX* map_matrix, s32 x, s32 y);
u8 MapMatrix_GetMatrixId(MAPMATRIX* map_matrix);
u8 MapMatrix_GetMapAltitude(MAPMATRIX* map_matrix, u8 matrix_id, u16 x, u16 y, int matrix_width);
MAPDATA* MapMatrix_MapData_New(HeapID heap_id);
void MapMatrix_MapData_Free(MAPDATA* map_data);
u16 GetMapModelNo(u32 map_no, MAPMATRIX* map_matrix);
void RemoveMahoganyTownAntennaTree(MAPMATRIX* map_matrix);
BOOL ShouldUseAlternateLakeOfRage(SAVEDATA* savedata, u32 map_no);
void SetLakeOfRageWaterLevel(MAPMATRIX* map_matrix, BOOL lower_water_level);
void PlaceSafariZoneAreas(MAPMATRIX* map_matrix, SAVEDATA* savedata);
#endif