mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-14 21:39:04 -04:00
93 lines
2.0 KiB
C
93 lines
2.0 KiB
C
#ifndef M_KANKYO_H
|
|
#define M_KANKYO_H
|
|
|
|
#include "types.h"
|
|
#include "m_lights.h"
|
|
#include "game.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum weather {
|
|
mEnv_WEATHER_CLEAR,
|
|
mEnv_WEATHER_RAIN,
|
|
mEnv_WEATHER_SNOW,
|
|
mEnv_WEATHER_SAKURA,
|
|
mEnv_WEATHER_LEAVES,
|
|
|
|
mEnv_WEATHER_NUM
|
|
};
|
|
|
|
enum weather_intensity {
|
|
mEnv_WEATHER_INTENSITY_NONE,
|
|
mEnv_WEATHER_INTENSITY_LIGHT,
|
|
mEnv_WEATHER_INTENSITY_NORMAL,
|
|
mEnv_WEATHER_INTENSITY_HEAVY,
|
|
|
|
mEnv_WEATHER_INTENSITY_NUM,
|
|
};
|
|
|
|
#define mEnv_SAVE_GET_WEATHER_TYPE(w) (((w) & 0xF0) >> 4)
|
|
#define mEnv_SAVE_GET_WEATHER_INTENSITY(w) ((w) & 0xF)
|
|
|
|
typedef struct base_light_s {
|
|
u8 ambient_color[3];
|
|
s8 sun_dir[3];
|
|
u8 sun_color[3];
|
|
s8 moon_dir[3];
|
|
u8 moon_color[3];
|
|
u8 fog_color[3];
|
|
s16 fog_near;
|
|
s16 fog_far;
|
|
u8 shadow_color[3];
|
|
u8 room_color[3];
|
|
u8 sun_color_window[3];
|
|
u8 moon_color_window[3];
|
|
u8 background_color[3];
|
|
} BaseLight;
|
|
|
|
typedef struct add_light_info_s {
|
|
s16 ambient_color[3];
|
|
s16 diffuse_color[3];
|
|
s16 fog_color[3];
|
|
s16 fog_near;
|
|
s16 fog_far;
|
|
} AddLightInfo;
|
|
|
|
typedef void (*NATURE_PROC)(ACTOR*);
|
|
|
|
typedef struct nature_s {
|
|
NATURE_PROC proc;
|
|
void* arg;
|
|
} Nature;
|
|
|
|
typedef struct kankyo_s {
|
|
/* 0x00 */ Lights sun_light;
|
|
/* 0x0E */ Lights moon_light;
|
|
/* 0x1C */ Lights* lamp_light;
|
|
/* 0x20 */ Lights point_light;
|
|
/* 0x2E */ u8 _2E[0x78 - 0x2e];
|
|
/* 0x78 */ AddLightInfo add_light_info; /* extra values added to specific light parameters */
|
|
/* 0x90 */ int _90;
|
|
/* 0x94 */ BaseLight base_light;
|
|
/* 0xBA */ u8 _BA[0xC0 - 0xBA];
|
|
/* 0xC0 */ f32 shadow_pos;
|
|
/* 0xC4 */ u8 shadow_alpha;
|
|
/* 0xC5 */ u8 countdown_timer;
|
|
/* 0xC8 */ Nature nature;
|
|
} Kankyo;
|
|
|
|
extern void Global_kankyo_ct(GAME_PLAY*, Kankyo*);
|
|
extern int mEnv_NowWeather();
|
|
extern int mEnv_WindMove();
|
|
extern void mEnv_ManagePointLight(GAME_PLAY*, Kankyo*, Global_light*);
|
|
extern void Global_kankyo_set(GAME_PLAY*, Kankyo*, Global_light*);
|
|
extern void mEnv_GetShadowPrimColor_Light(u8*,u8*,u8*,GAME*);
|
|
extern f32 mKK_windowlight_alpha_get();
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|