mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-08-02 00:03:56 -04:00
Implement & link m_kankyo.c
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int aWeather_ChangingWeather();
|
||||
|
||||
extern ACTOR_PROFILE Weather_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -19,11 +19,25 @@ enum effect_type {
|
||||
eEC_EFFECT_NUM = 126
|
||||
};
|
||||
|
||||
enum {
|
||||
eEC_LIGHT_COLOR_DISABLED,
|
||||
eEC_LIGHT_COLOR_INCREASING,
|
||||
eEC_LIGHT_COLOR_MAXIMUM,
|
||||
eEC_LIGHT_COLOR_DECREASING,
|
||||
|
||||
eEC_LIGHT_COLOR_NUM
|
||||
};
|
||||
|
||||
typedef void (*eEC_NAME2EFFECTMAKE_PROC)(int, xyz_t, int, short, GAME*, u16, s16, s16);
|
||||
|
||||
typedef int (*eEC_EFFECTLIGHTSTATUS_PROC)(rgba_t*, int*); // returns eEC_LIGHT_COLOR_*
|
||||
|
||||
typedef struct effect_control_clip_s {
|
||||
eEC_NAME2EFFECTMAKE_PROC effect_make_proc;
|
||||
/* TODO: finish */
|
||||
/* 0x00 */ eEC_NAME2EFFECTMAKE_PROC effect_make_proc;
|
||||
/* 0x04 */ u8 _04[0x3C - 0x04];
|
||||
/* 0x3C */ eEC_EFFECTLIGHTSTATUS_PROC effect_light_status;
|
||||
/* 0x40 */ void* _40;
|
||||
/* 0x44 */ void* _44;
|
||||
} eEC_EffectControl_Clip_c;
|
||||
|
||||
typedef struct effect_control_s EFFECT_CONTROL_ACTOR;
|
||||
|
||||
@@ -307,6 +307,13 @@ enum actor_profile_table {
|
||||
mAc_PROFILE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mAc_HILITE_OPAQUE,
|
||||
mAc_HILITE_TRANSLUCENT,
|
||||
|
||||
mAc_HILITE_NUM
|
||||
};
|
||||
|
||||
/* sizeof(ACTOR_PROFILE) == 0x24 */
|
||||
struct actor_profile_s {
|
||||
/* 0x00 */ s16 id; /* unique actor type ID */
|
||||
|
||||
+20
-6
@@ -151,7 +151,11 @@ typedef struct Save_s {
|
||||
/* 0x024177 */ u8 gyoei_term_transition_offset; /* days offset from end of term to begin transition */
|
||||
/* 0x024178 */ mFAs_GoodField_c good_field; /* field assessment last info */
|
||||
/* 0x024184 */ u8 bg_tex_idx; /* Grass type */
|
||||
/* 0x024185 */ u8 _24185[0x2418A - 0x24185];
|
||||
/* 0x024185 */ lbRTC_month_t rainbow_month;
|
||||
/* 0x024186 */ lbRTC_day_t rainbow_day;
|
||||
/* 0x024187 */ u8 rainbow_reserved;
|
||||
/* 0x024188 */ u8 _24188;
|
||||
/* 0x024189 */ u8 _24189;
|
||||
/* 0x02418A */ u8 town_day;
|
||||
/* 0x02418B */ u8 _2418B[0x241A0 - 0x2418B];
|
||||
/* 0x0241A0 */ lbRTC_time_c saved_auto_nwrite_time; /* save data notice time used for fishing tourney results? */
|
||||
@@ -163,6 +167,13 @@ typedef union save_u {
|
||||
//u8 raw[0x26000]; /* Temp to force length */
|
||||
} Save;
|
||||
|
||||
typedef struct transition_s {
|
||||
u8 _00; // only set in Global_kankyo_ct?
|
||||
u8 fade_rate;
|
||||
u8 wipe_rate;
|
||||
u8 wipe_type;
|
||||
} Transition_c;
|
||||
|
||||
/* sizeof(common_data_t) == 0x2DC00 */
|
||||
typedef struct common_data_s {
|
||||
/* 0x000000 */ Save save;
|
||||
@@ -178,10 +189,10 @@ typedef struct common_data_s {
|
||||
/* 0x026140 */ mHm_hs_c* now_home;
|
||||
/* 0x026144 */ u8 map_flag;
|
||||
/* 0x026145 */ u8 fish_location;
|
||||
/* 0x026146 */ u8 tmp0[0x2614D - 0x26146];
|
||||
/* 0x02614D */ u8 transFadeDuration;
|
||||
/* 0x02614E */ u8 transWipeSpeed;
|
||||
/* 0x02614F */ u8 wipeType; /* maybe unused? */
|
||||
/* 0x026146 */ u8 npc_is_summercamper;
|
||||
/* 0x026147 */ u8 player_select_animal_no;
|
||||
/* 0x026148 */ u8 _26148[0x2614C - 0x26148];
|
||||
/* 0x02614C */ Transition_c transition;
|
||||
/* 0x026150 */ s16 bg_item_type;
|
||||
/* 0x026152 */ s16 bg_item_profile;
|
||||
/* 0x026154 */ u8 _26154[0x26164 - 0x26154];
|
||||
@@ -273,7 +284,10 @@ typedef struct common_data_s {
|
||||
/* 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;
|
||||
/* 0x02DB46 */ u8 tmp3[0x2DBAC - 0x2DB46];
|
||||
/* 0x02DB46 */ u8 _2DB46[0x2DBA2 - 0x2DB46];
|
||||
/* 0x02DBA2 */ s16 island_weather;
|
||||
/* 0x02DBA4 */ s16 island_weather_intensity;
|
||||
/* 0x02DBA6 */ u8 _2DBA6[0x2DBAC - 0x2DBA6];
|
||||
/* 0X02DBAC */ int famicom_2DBAC;
|
||||
/* 0x02DBB0 */ s16 can_look_goki_count;
|
||||
/* 0x02DBB4 */ f32 rainbow_opacity; /* current opacity of rainbow (0.0f - 1.0f) */
|
||||
|
||||
@@ -496,6 +496,9 @@ extern void mEv_EventON(u32 event_kind);
|
||||
extern int mEv_CheckGateway();
|
||||
extern int mEv_check_schedule(int event);
|
||||
extern mEv_place_data_c* mEv_get_common_place(int type, s8 id);
|
||||
extern void mEv_set_status(int event, s16 status);
|
||||
extern void mEv_GetEventWeather(s16* weather, s16* intensity);
|
||||
extern int mEv_CheckRealArbeit();
|
||||
|
||||
extern int mEv_weekday2day(lbRTC_month_t month, int week_type, lbRTC_weekday_t weekday);
|
||||
extern void mEv_ClearEventInfo();
|
||||
|
||||
+115
-11
@@ -3,12 +3,27 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "m_lights.h"
|
||||
#include "game.h"
|
||||
#include "m_play_h.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mEnv_POINT_LIGHT_NUM 4
|
||||
#define mEnv_RAINBOW_TIME_START (9 * mTM_SECONDS_IN_HOUR)
|
||||
#define mEnv_RAINBOW_TIME_END (15 * mTM_SECONDS_IN_HOUR)
|
||||
#define mEnv_RAINBOW_TIME_BYE (15 * mTM_SECONDS_IN_HOUR + 30 * mTM_SECONDS_IN_MINUTE)
|
||||
#define mEnv_TERM_NUM 8
|
||||
#define mEnv_FOG_NEAR_MAX 996
|
||||
#define mEnv_FOG_FAR_MAX 1600
|
||||
#define mEnv_LIGHT_ANIME_FRAMES 20
|
||||
#define mEnv_NPC_LIGHTS_OFF_TIME (5 * mTM_SECONDS_IN_HOUR)
|
||||
#define mEnv_NPC_LIGHTS_ON_TIME (18 * mTM_SECONDS_IN_HOUR)
|
||||
|
||||
#define mEnv_WEATHER_TERM_NUM 20
|
||||
#define mEnv_WIND_TERM_NUM 4u
|
||||
#define mEnv_WIND_CHANGE_RATE (f32)(10*mTM_SECONDS_IN_MINUTE*60) // 60fps, 10 minutes
|
||||
|
||||
enum weather {
|
||||
mEnv_WEATHER_CLEAR,
|
||||
mEnv_WEATHER_RAIN,
|
||||
@@ -28,9 +43,59 @@ enum weather_intensity {
|
||||
mEnv_WEATHER_INTENSITY_NUM,
|
||||
};
|
||||
|
||||
enum {
|
||||
mEnv_LIGHT_TYPE_PLAYER,
|
||||
mEnv_LIGHT_TYPE_TENT,
|
||||
mEnv_LIGHT_TYPE_LIGHTHOUSE,
|
||||
|
||||
mEnv_LIGHT_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mEnv_SWITCH_STATUS_ON,
|
||||
mEnv_SWITCH_STATUS_OFF,
|
||||
mEnv_SWITCH_STATUS_TURNING_OFF,
|
||||
mEnv_SWITCH_STATUS_TURNING_ON,
|
||||
|
||||
mEnv_SWITCH_STATUS_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mEnv_WIND_STATE_STEADY,
|
||||
mEnv_WIND_STATE_FAST,
|
||||
mEnv_WIND_STATE_SLOW,
|
||||
mEnv_WIND_STATE_REDUCING,
|
||||
|
||||
mEnv_WIND_STATE_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 {
|
||||
@@ -40,20 +105,59 @@ typedef struct nature_s {
|
||||
|
||||
typedef struct kankyo_s {
|
||||
/* 0x00 */ Lights sun_light;
|
||||
/* 0x0E */ u8 pad[0x9A - 0x0E];
|
||||
/* 0x9A */ u8 ambientColor[3];
|
||||
/* 0x9E */ u8 pad2[0xC0 - 0x9E];
|
||||
/* 0xC0 */ f32 unkC0;
|
||||
/* 0xC4 */ u8 unkC4;
|
||||
/* 0x0E */ Lights moon_light;
|
||||
/* 0x1C */ Lights* lamp_light;
|
||||
/* 0x20 */ Lights point_light;
|
||||
/* 0x30 */ int _30;
|
||||
/* 0x34 */ u8 _34[0x78 - 0x34];
|
||||
/* 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 void mEnv_regist_nature(Kankyo* kankyo, NATURE_PROC nature_proc, void* arg);
|
||||
extern int mEnv_unregist_nature(Kankyo* kankyo, NATURE_PROC nature_proc);
|
||||
extern void Global_kankyo_ct(GAME_PLAY* play, Kankyo* kankyo);
|
||||
extern void mEnv_GetRoomPrimColor(u8* r, u8* g, u8* b, GAME_PLAY* play);
|
||||
extern void Global_kankyo_set_room_prim(GAME_PLAY* play);
|
||||
extern int mEnv_RequestChangeLightON(GAME_PLAY* play, int light_on_type, int play_sfx);
|
||||
extern int mEnv_RequestChangeLightOFF(GAME_PLAY* play, int light_off_type, f32 step);
|
||||
extern void mEnv_ManagePointLight(GAME_PLAY* play, Kankyo* kankyo, Global_light* global_light);
|
||||
extern void Global_kankyo_set(GAME_PLAY* play, Kankyo* kankyo, Global_light* global_light);
|
||||
extern void staffroll_light_init(GAME_PLAY* play);
|
||||
extern void staffroll_light_proc_start(GAME_PLAY* play);
|
||||
extern int staffroll_light_proc_end(GAME_PLAY* play);
|
||||
extern void staffroll_light_dt(GAME_PLAY* play);
|
||||
extern void mEnv_GetShadowPrimColor_Light(u8* r, u8* g, u8* b, GAME* game);
|
||||
extern int mEnv_PointLightMin();
|
||||
extern int mEnv_HereIsPlayerSelect();
|
||||
extern f32 mKK_windowlight_alpha_get();
|
||||
extern int mEnv_ReqeustChangeWeatherEnviroment(s16 now_weather, s16 next_weather);
|
||||
extern int mEnv_ReservePointLight(GAME_PLAY* play, xyz_t* pos, u8 r, u8 g, u8 b, s16 power);
|
||||
extern void mEnv_OperateReservedPointLight_Position(int point_light_idx, xyz_t* pos);
|
||||
extern void mEnv_OperateReservedPointLight_Color(int point_light_idx, u8 r, u8 g, u8 b);
|
||||
extern void mEnv_OperateReservedPointLight_Power(int point_light_idx, s16 power);
|
||||
extern void mEnv_OperateReservedPointLight(int point_light_idx, xyz_t* pos, u8 r, u8 g, u8 b, s16 power);
|
||||
extern int mEnv_CancelReservedPointLight(int point_light_idx, GAME_PLAY* play);
|
||||
extern void mEnv_DecideWindDirect(s_xyz* dir, s16 x, s16 z);
|
||||
extern void mEnv_RandomWeather(s16* next_weather, s16* next_intensity);
|
||||
extern s16 mEnv_GetWindAngleS();
|
||||
extern f32 mEnv_GetWindPowerF();
|
||||
extern f32 mEnv_GetWindPowerF_Windmill();
|
||||
extern void mEnv_DecideTodayWindPowerRange();
|
||||
extern void mEnv_ChangeWind();
|
||||
extern void mEnv_WindMove();
|
||||
extern void mEnv_DecideWeather_GameStart();
|
||||
extern void mEnv_DecideWeather_FirstGameStart();
|
||||
extern void mEnv_PreRainNowFine_Init();
|
||||
extern void mEnv_DecideWeather_NormalGameStart();
|
||||
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*);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+11
-12
@@ -37,27 +37,26 @@ typedef struct lights_s {
|
||||
} Lights;
|
||||
|
||||
|
||||
typedef struct LightNode {
|
||||
typedef struct light_list {
|
||||
/* 0x0 */ Lights* info;
|
||||
/* 0x4 */ struct LightNode* prev;
|
||||
/* 0x8 */ struct LightNode* next;
|
||||
} LightNode; // size = 0xC
|
||||
/* 0x4 */ struct light_list* prev;
|
||||
/* 0x8 */ struct light_list* next;
|
||||
} Light_list; // size = 0xC
|
||||
|
||||
typedef struct light_buf_s{
|
||||
int current;
|
||||
int idx;
|
||||
LightNode lights[32];
|
||||
}Light_buffer;
|
||||
|
||||
Light_list lights[32];
|
||||
} Light_buffer;
|
||||
|
||||
typedef struct lightsn_s{
|
||||
u8 diffuse_count;
|
||||
Ambient a;
|
||||
Light_new l[7];
|
||||
}LightsN;
|
||||
} LightsN;
|
||||
|
||||
typedef struct global_light_s {
|
||||
/* 0x0 */ LightNode* list;
|
||||
/* 0x0 */ Light_list* list;
|
||||
/* 0x4 */ u8 ambientColor[3];
|
||||
/* 0x7 */ u8 fogColor[3];
|
||||
/* 0xA */ s16 fogNear;
|
||||
@@ -71,11 +70,11 @@ extern void Light_point_ct(Lights* lights, s16 x, s16 y, s16 z, u8 r, u8 g, u8 b
|
||||
extern void Light_diffuse_ct(Lights* lights, s8 x, s8 y, s8 z, u8 r, u8 g, u8 b);
|
||||
extern void LightsN_disp_BG(LightsN* lights, GRAPH* graph);
|
||||
extern void LightsN_disp(LightsN* lights, GRAPH* graph);
|
||||
extern void LightsN_list_check(LightsN* lights, LightNode* node, xyz_t* pos);
|
||||
extern void LightsN_list_check(LightsN* lights, Light_list* node, xyz_t* pos);
|
||||
extern void Global_light_ct(Global_light* glight);
|
||||
extern LightsN* Global_light_read(Global_light* glight, GRAPH* graph);
|
||||
extern void Global_light_list_new(GAME_PLAY*, Global_light* glight, Lights* light);
|
||||
extern void Global_light_list_delete(Global_light* glight, LightNode* light);
|
||||
extern Light_list* Global_light_list_new(GAME_PLAY*, Global_light* glight, Lights* light);
|
||||
extern void Global_light_list_delete(Global_light* glight, Light_list* light);
|
||||
extern void Light_list_point_draw(GAME_PLAY* play);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -240,6 +240,7 @@ extern void mNpc_SetNpcFurnitureRandom(mFM_fg_data_c** fg_data_list, int fg_name
|
||||
extern void mNpc_SetNpcHomeYpos();
|
||||
extern void mNpc_SendRegisteredGoodbyMail();
|
||||
extern void mNpc_IslandNpcRoomDataSet(mFM_fg_data_c** sorted_fg_data_list, int fg_name_start);
|
||||
extern Animal_c* mNpc_GetAnimalInfoP(mActor_name_t npc_name);
|
||||
|
||||
extern void mNpc_PrintRemoveInfo(gfxprint_t* gfxprint);
|
||||
extern void mNpc_PrintFriendship_fdebug(gfxprint_t* gfxprint);
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
extern mNPS_schedule_c* mNPS_get_schedule_area(AnmPersonalID_c* anm_id);
|
||||
extern void mNPS_set_island_schedule_area(AnmPersonalID_c* anm_id);
|
||||
extern void mNPS_reset_schedule_area(AnmPersonalID_c* anm_id);
|
||||
extern void mNPS_schedule_manager();
|
||||
extern void mNPS_set_all_schedule_area();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -111,6 +111,24 @@ typedef struct room_type_place_info_s {
|
||||
|
||||
#define FTR1_NO_START 0x3000
|
||||
|
||||
enum {
|
||||
mRmTp_LIGHT_SWITCH_HOUSE0_MAIN_UPPER,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE0_BASEMENT,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE1_MAIN_UPPER,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE1_BASEMENT,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE2_MAIN_UPPER,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE2_BASEMENT,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE3_MAIN_UPPER,
|
||||
mRmTp_LIGHT_SWITCH_HOUSE3_BASEMENT,
|
||||
mRmTp_LIGHT_SWITCH_COTTAGE_MY,
|
||||
mRmTp_LIGHT_SWITCH_9,
|
||||
mRmTp_LIGHT_SWITCH_NPC,
|
||||
mRmTp_LIGHT_SWITCH_LIGHTHOUSE,
|
||||
mRmTp_LIGHT_SWITCH_TENT,
|
||||
|
||||
mRmTp_LIGHT_SWITCH_NUM
|
||||
};
|
||||
|
||||
extern void mRmTp_DrawFamicomInfo(gfxprint_t* gfxprint);
|
||||
extern void mRmTp_MakeFamicom_Fdebug();
|
||||
|
||||
@@ -125,5 +143,11 @@ extern void mRmTp_SetDefaultLightSwitchData(int state);
|
||||
extern int mRmTp_GetEntranceBasePosition(xyz_t* pos);
|
||||
extern mActor_name_t mRmTp_GetPlayerRoomCollisionIdx(mActor_name_t field_name, mActor_name_t bg_name);
|
||||
extern u8 mRmTp_GetFloorIdx();
|
||||
extern int mRmTp_GetNowSceneLightSwitchIndex();
|
||||
extern void mRmTp_IndexLightSwitchOFF(int index);
|
||||
extern void mRmTp_IndexLightSwitchON(int index);
|
||||
extern int mRmTp_Index2LightSwitchStatus(int index);
|
||||
extern int mRmTp_NowSceneLightSwitchON();
|
||||
extern int mRmTp_NowSceneLightSwitchOFF();
|
||||
|
||||
#endif
|
||||
@@ -85,6 +85,12 @@ enum scene_table {
|
||||
(scene) == SCENE_MY_ROOM_BASEMENT_M || (scene) == (SCENE_MY_ROOM_BASEMENT_L) || (scene) == SCENE_MY_ROOM_BASEMENT_LL1 || \
|
||||
(scene) == SCENE_COTTAGE_MY)
|
||||
|
||||
#define mSc_IS_SCENE_BASEMENT(scene) \
|
||||
((scene) == SCENE_MY_ROOM_BASEMENT_S || \
|
||||
(scene) == SCENE_MY_ROOM_BASEMENT_M || \
|
||||
(scene) == SCENE_MY_ROOM_BASEMENT_L || \
|
||||
(scene) == SCENE_MY_ROOM_BASEMENT_LL1)
|
||||
|
||||
#define mSc_IS_SCENE_MUSEUM_ROOM(scene) \
|
||||
((scene) >= SCENE_MUSEUM_ENTRANCE && (scene) <= SCENE_MUSEUM_ROOM_FISH)
|
||||
|
||||
|
||||
+2
-2
@@ -58,8 +58,8 @@ enum {
|
||||
|
||||
#define mTM_SECONDS_IN_MINUTE 60
|
||||
#define mTM_SECONDS_IN_HOUR 60*60
|
||||
#define mTM_SECONDS_IN_HALFDAY 12*60*60
|
||||
#define mTM_SECONDS_IN_DAY 24*60*60
|
||||
#define mTM_SECONDS_IN_HALFDAY (12*60*60)
|
||||
#define mTM_SECONDS_IN_DAY (24*60*60)
|
||||
|
||||
#define mTM_MINUTES_IN_HOUR 60
|
||||
|
||||
|
||||
Reference in New Issue
Block a user