mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
99 lines
2.7 KiB
C
99 lines
2.7 KiB
C
#ifndef AC_WEATHER_H
|
|
#define AC_WEATHER_H
|
|
|
|
#include "types.h"
|
|
#include "m_actor.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern int aWeather_ChangingWeather();
|
|
|
|
extern ACTOR_PROFILE Weather_Profile;
|
|
|
|
typedef struct ac_weather_priv_s{
|
|
xyz_t pos;
|
|
xyz_t speed;
|
|
f32 currentY;
|
|
f32 unk1C;
|
|
s16 timer;
|
|
s16 work[5];
|
|
u8 use;
|
|
u8 id;
|
|
u8 status;
|
|
}aWeather_Priv;
|
|
|
|
typedef struct weather_actor_s WEATHER_ACTOR;
|
|
|
|
typedef void (*CHANGE_WEATHER_PROC)(ACTOR* weather, s16 status, s16 level);
|
|
typedef int (*GET_WEATHER_PRV_NUM)(ACTOR* weather);
|
|
typedef void (*REMOVE_WEATHER_PRV)(ACTOR* weather, int id);
|
|
typedef aWeather_Priv* (*GET_WEATHER_PRV)(u8 status, s16 timer, xyz_t* pos, xyz_t* speed, ACTOR* weather, int id);
|
|
typedef int (*WEATHER_SOUND_EFFECT)();
|
|
typedef void (*CHANGE_WEATER_INSTANCE_PROC)(WEATHER_ACTOR* weather, s16 status, s16 level);
|
|
|
|
typedef struct ac_weather_clip_s{
|
|
WEATHER_ACTOR* actor;
|
|
CHANGE_WEATHER_PROC change_weather;
|
|
GET_WEATHER_PRV_NUM get_priv_num;
|
|
REMOVE_WEATHER_PRV remove_priv;
|
|
GET_WEATHER_PRV get_priv;
|
|
WEATHER_SOUND_EFFECT stop_sound;
|
|
WEATHER_SOUND_EFFECT start_sound;
|
|
CHANGE_WEATER_INSTANCE_PROC change_weather_instance;
|
|
}aWeather_Clip_c;
|
|
|
|
|
|
typedef void (*MK_WEATHER_PROC)(ACTOR*,GAME*);
|
|
typedef void (*CT_WEATHER_PROC)(aWeather_Priv*, GAME*);
|
|
typedef void (*MV_WEATHER_PROC)(aWeather_Priv*, GAME*);
|
|
typedef void (*MT_WEATHER_PROC)(aWeather_Priv*, GAME*);
|
|
typedef void (*ST_WEATHER_PROC)(GAME*);
|
|
typedef void (*DW_WEATHER_PROC)(aWeather_Priv*, GAME*);
|
|
|
|
typedef struct ac_weather_profile_s{
|
|
MK_WEATHER_PROC make;
|
|
CT_WEATHER_PROC constructor;
|
|
MV_WEATHER_PROC move;
|
|
ST_WEATHER_PROC set;
|
|
DW_WEATHER_PROC draw;
|
|
}aWeather_Profile_c;
|
|
|
|
struct weather_actor_s{
|
|
/* 0x000 */ ACTOR actor_class;
|
|
/* 0x174 */ aWeather_Profile_c* current_profile;
|
|
/* 0x178 */ s16 current_status;
|
|
/* 0x17A */ s16 next_status;
|
|
/* 0x17C */ s16 counter;
|
|
/* 0x17E */ s16 current_level;
|
|
/* 0x180 */ s16 current_aim_level;
|
|
/* 0x182 */ s16 next_level;
|
|
/* 0x184 */ u8* ptr;
|
|
/* 0x188 */ xyz_t pos;
|
|
/* 0x194 */ aWeather_Priv* priv;
|
|
/* 0x198 */ void* t;
|
|
/* 0x19C */ u8 request_change;
|
|
/* 0x19E */ s16 unk19E;
|
|
/* 0x1A0 */ aWeather_Clip_c clip;
|
|
/* 0x1C0 */ s16 timer;
|
|
/* 0x1C2 */ s16 timer2;
|
|
/* 0x1C4 */ xyz_t wind_info;
|
|
/* 0x1D0 */ s16 lightning_timer;
|
|
/* 0x1D2 */ s16 lightning_timer2;
|
|
/* 0x1D4 */ s16 current_sound_effect;
|
|
/* 0x1D6 */ s16 umbrella_flag;
|
|
/* 0x1D8 */ s16 current_yAngle;
|
|
/* 0x1DA */ s16 sound_flag;
|
|
/* 0x1DC */ s16 start_sound_effect;
|
|
/* 0x1DE */ s16 stop_sound_effect;
|
|
/* 0x1E0 */ s16 basement_event;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|