ac_weather work

This commit is contained in:
Prakxo
2023-11-03 11:56:43 +01:00
parent 0722205afb
commit aae583e085
10 changed files with 878 additions and 3 deletions
+78
View File
@@ -12,6 +12,84 @@ extern int aWeather_ChangingWeather();
extern ACTOR_PROFILE Weather_Profile;
typedef struct ac_weather_priv_s{
xyz_t pos;
xyz_t speed;
f32 unk18;
f32 unk1C;
s16 timer;
s16 work[5];
u8 use;
s8 id;
u8 status;
}aWeather_Priv;
typedef struct weather_actor_s WEATHER_ACTOR;
typedef void (*CHANGE_WEATHER_PROC)(WEATHER_ACTOR* weather, s16 status, s16 level);
typedef int (*GET_WEATHER_PRV_NUM)(WEATHER_ACTOR* weather);
typedef void (*REMOVE_WEATHER_PRV)(WEATHER_ACTOR* weather, int id);
typedef aWeather_Priv* (*GET_WEATHER_PRV)(u8 status, s16 timer, xyz_t* pos, xyz_t* speed, WEATHER_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
+17
View File
@@ -0,0 +1,17 @@
#ifndef AC_WEATHER_FINE_H
#define AC_WEATHER_FINE_H
#include "types.h"
#include "m_actor.h"
#include "ac_weather.h"
#ifdef __cplusplus
extern "C" {
#endif
extern aWeather_Profile_c iam_weather_fine;
#ifdef __cplusplus
}
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef AC_WEATHER_LEAF_H
#define AC_WEATHER_LEAF_H
#include "types.h"
#include "m_actor.h"
#include "ac_weather.h"
#ifdef __cplusplus
extern "C" {
#endif
extern aWeather_Profile_c iam_weather_leaf;
#ifdef __cplusplus
}
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef AC_WEATHER_RAIN_H
#define AC_WEATHER_RAIN_H
#include "types.h"
#include "m_actor.h"
#include "ac_weather.h"
#ifdef __cplusplus
extern "C" {
#endif
extern aWeather_Profile_c iam_weather_rain;
#ifdef __cplusplus
}
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef AC_WEATHER_SAKURA_H
#define AC_WEATHER_SAKURA_H
#include "types.h"
#include "m_actor.h"
#include "ac_weather.h"
#ifdef __cplusplus
extern "C" {
#endif
extern aWeather_Profile_c iam_weather_sakura;
#ifdef __cplusplus
}
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef AC_WEATHER_SNOW_H
#define AC_WEATHER_SNOW_H
#include "types.h"
#include "m_actor.h"
#include "ac_weather.h"
#ifdef __cplusplus
extern "C" {
#endif
extern aWeather_Profile_c iam_weather_snow;
#ifdef __cplusplus
}
#endif
+2 -1
View File
@@ -9,6 +9,7 @@
#include "ef_effect_control.h"
#include "m_demo.h"
#include "bg_item_h.h"
#include "ac_weather.h"
#include "ac_npc.h"
#include "ac_tools.h"
#include "ac_aprilfool_control.h"
@@ -41,7 +42,7 @@ typedef struct clip_s {
/* 0x06C */ void* _06C;
/* 0x070 */ aSI_Clip_c* shop_indoor_clip;
/* 0x074 */ bIT_Clip_c* bg_item_clip;
/* 0x078 */ void* _078;
/* 0x078 */ aWeather_Clip_c* weather_clip;
/* 0x07C */ aINS_Clip_c* insect_clip;
/* 0x080 */ aMR_Clip_c* my_room_clip;
/* 0x084 */ void* _084;
+5 -2
View File
@@ -209,7 +209,8 @@ typedef struct common_data_s {
/* 0x02666C */ s16 weather;
/* 0x02666E */ s16 weather_intensity;
/* 0x026670 */ lbRTC_time_c weather_time;
/* 0x026678 */ u8 _26678[0x26684 - 0x26678];
/* 0x026678 */ s_xyz wind;
/* 0x026680 */ f32 wind_speed;
/* 0x026684 */ mEv_event_common_u special_event_common;
/* 0x02669C */ mQst_not_saved_c quest;
/* 0x0266A4 */ int scene_from_title_demo; /* next scene to be loaded when title demo finishes */
@@ -282,7 +283,9 @@ typedef struct common_data_s {
/* 0x028898 */ f32 balloon_spawn_percent; /* chance that a balloon will spawn */
/* 0x02889C */ int tanuki_shop_status; /* adjusted based on any current events happening to Nook's shop */
/* 0x0288A0 */ u8 pad_connected; /* is gamepad 0 connected? */
/* 0x0288A1 */ u8 _288a1[0x02DB40 - 0x0288A1];
/* 0x0288A1 */ u8 unk288A1;
/* 0x0288A2 */ s16 current_sound_effect;
/* 0x0288A4 */ u8 _288a4[0x02DB40 - 0x0288A4];
/* 0x02DB40 */ u8 auto_nwrite_set; /* when true, saved nwrite time will be utilized. Seems to be used to keep same date for fishing tourney stuff. */
/* 0x02DB42 */ u16 select_last_select_no;
/* 0x02DB44 */ u16 select_last_top_no;