2024-01-10 20:55:08 +03:00
|
|
|
#ifndef FOX_MAP_H
|
|
|
|
#define FOX_MAP_H
|
|
|
|
|
2024-03-24 11:01:28 +03:00
|
|
|
#include <libultra/types.h>
|
2024-02-17 01:04:22 +03:00
|
|
|
#include "sf64level.h"
|
2024-01-10 20:55:08 +03:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
/* 0x0 */ f32 angle;
|
|
|
|
/* 0x4 */ f32 x;
|
|
|
|
/* 0x8 */ f32 y;
|
|
|
|
/* 0xC */ f32 scale;
|
|
|
|
} ObjPosition;
|
|
|
|
|
2024-02-19 16:05:11 +03:00
|
|
|
typedef enum {
|
|
|
|
/* 0 */ PL_PATH_BLU,
|
|
|
|
/* 1 */ PL_PATH_YLW,
|
|
|
|
/* 2 */ PL_PATH_RED,
|
|
|
|
/* 3 */ PL_WARP_YLW,
|
|
|
|
/* 4 */ PL_WARP_RED,
|
|
|
|
} PathType;
|
|
|
|
|
2024-01-10 20:55:08 +03:00
|
|
|
typedef struct {
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x00 */ PathType type;
|
|
|
|
/* 0x04 */ PlanetId start;
|
|
|
|
/* 0x08 */ PlanetId end;
|
|
|
|
/* 0x0C */ s32 length;
|
2024-01-10 20:55:08 +03:00
|
|
|
/* 0x10 */ char pad10[0x4];
|
|
|
|
/* 0x14 */ s32 unk_14;
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x18 */ s32 alpha;
|
|
|
|
} PlanetPath; // size = 0x1C
|
|
|
|
|
2024-09-13 06:59:33 +03:00
|
|
|
typedef enum PlanetAnim {
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0 */ PL_ANIM_STATIC,
|
|
|
|
/* 1 */ PL_ANIM_BILLBOARD,
|
|
|
|
/* 2 */ PL_ANIM_ROTATE_Y,
|
|
|
|
/* 3 */ PL_ANIM_ROTATE_Z,
|
|
|
|
/* 4 */ PL_ANIM_SPIN,
|
|
|
|
} PlanetAnim;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
/* 0x0 */ f32 radius;
|
|
|
|
/* 0x4 */ f32 incl;
|
|
|
|
/* 0x8 */ f32 tilt;
|
|
|
|
} OrbitParams;
|
2024-01-10 20:55:08 +03:00
|
|
|
|
|
|
|
typedef struct {
|
2024-02-17 01:04:22 +03:00
|
|
|
/* 0x00 */ PlanetId id;
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x04 */ OrbitParams orbit;
|
2024-01-24 17:45:55 +03:00
|
|
|
/* 0x10 */ Vec3f pos;
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x1C */ f32 longitude;
|
2024-01-10 20:55:08 +03:00
|
|
|
/* 0x20 */ f32 scale;
|
|
|
|
/* 0x24 */ s32 alpha;
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x28 */ PlanetAnim anim;
|
|
|
|
/* 0x2C */ PlanetId dest1;
|
|
|
|
/* 0x30 */ PlanetId dest2;
|
|
|
|
/* 0x34 */ PlanetId warp;
|
2024-01-10 20:55:08 +03:00
|
|
|
} Planet; // size = 0x38
|
|
|
|
|
|
|
|
typedef struct {
|
2024-02-19 16:05:11 +03:00
|
|
|
/* 0x0 */ u8* texture;
|
2024-01-10 20:55:08 +03:00
|
|
|
/* 0x4 */ s32 width;
|
|
|
|
/* 0x8 */ s32 height;
|
2024-01-24 17:45:55 +03:00
|
|
|
/* 0xC */ f32 xPos;
|
2024-02-19 16:05:11 +03:00
|
|
|
} TitleCard; // size = 0x10
|
2024-01-10 20:55:08 +03:00
|
|
|
|
2024-09-13 06:59:33 +03:00
|
|
|
typedef enum MapStates {
|
|
|
|
/* 0 */ MAP_PROLOGUE,
|
|
|
|
/* 1 */ MAP_LYLAT_CARD,
|
|
|
|
/* 2 */ MAP_ZOOM_PLANET,
|
|
|
|
/* 3 */ MAP_IDLE,
|
|
|
|
/* 4 */ MAP_LEVEL_START,
|
|
|
|
/* 5 */ MAP_ZOOM_PLANET_PATH, // After level ends
|
|
|
|
/* 6 */ MAP_PATH_CHANGE, // Path selection by the player
|
|
|
|
/* 7 */ MAP_GAME_OVER
|
|
|
|
} MapStates;
|
|
|
|
|
|
|
|
typedef enum PlanetStatus {
|
|
|
|
/* 0 */ PLANET_UNCLEARED,
|
|
|
|
/* 1 */ PLANET_CLEARED,
|
|
|
|
/* 2 */ PLANET_MEDAL
|
|
|
|
} PlanetStatus;
|
|
|
|
|
|
|
|
typedef enum PlanetExplosions {
|
|
|
|
/* 0 */ EXPLOSIONS_CORNERIA,
|
|
|
|
/* 1 */ EXPLOSIONS_KATINA,
|
|
|
|
/* 2 */ EXPLOSIONS_SECTOR_Y,
|
|
|
|
/* 3 */ EXPLOSIONS_MAX
|
|
|
|
} PlanetExplosions;
|
|
|
|
|
|
|
|
typedef enum PlanetSaveSlotTypes {
|
|
|
|
/* 0 */ SAVETYPE_PLAYED,
|
|
|
|
/* 1 */ SAVETYPE_MEDAL,
|
|
|
|
/* 2 */ SAVETYPE_CLEAR
|
|
|
|
} PlanetSaveSlotTypes;
|
|
|
|
|
2024-01-10 20:55:08 +03:00
|
|
|
#endif
|