00001
00027 #ifndef FireTimer_H
00028 #define FireTimer_H
00029
00030 #include <stdlib.h>
00031
00032 #include "Err.h"
00033
00034
00035
00036
00037
00038
00039
00043 #define FIRE_TIMER_SECS_PER_MIN (60)
00044
00048 #define FIRE_TIMER_SECS_PER_HOUR (3600)
00049
00053 #define FIRE_TIMER_SECS_PER_DAY ((FIRE_TIMER_SECS_PER_HOUR) * 24)
00054
00058 #define FIRE_TIMER_MIN_HOUR_DAY (0)
00059
00063 #define FIRE_TIMER_MAX_HOUR_DAY (23)
00064
00068 #define FIRE_TIMER_MIN_MO_YEAR (1)
00069
00073 #define FIRE_TIMER_MAX_MO_YEAR (12)
00074
00075
00076
00077
00078
00079
00080
00084 typedef struct FireTimer_ FireTimer;
00085
00089 struct FireTimer_ {
00091 int sim_start_yr;
00093 int sim_start_mo;
00095 int sim_start_dy;
00097 int sim_start_hr;
00099 int sim_end_yr;
00101 int sim_end_mo;
00103 int sim_end_dy;
00105 int sim_end_hr;
00107 int sim_cur_yr;
00109 int sim_cur_mo;
00111 int sim_cur_dy;
00113 int sim_cur_hr;
00115 int sim_cur_secs;
00116 };
00117
00118
00119
00120
00121
00122
00123
00127 #define FIRE_TIMER_HOUR_TO_SECS(hr) ((hr) * FIRE_TIMER_SECS_PER_HOUR)
00128
00132 #define FIRE_TIMER_SECS_TO_HOUR(secs) ((secs) / FIRE_TIMER_SECS_PER_HOUR)
00133
00137 #define FIRE_TIMER_MIN_TO_SECS(min) ((min) * FIRE_TIMER_SECS_PER_MIN)
00138
00142 #define FIRE_TIMER_SECS_TO_MIN(secs) ((secs) / FIRE_TIMER_SECS_PER_MIN)
00143
00147 #define FIRE_TIMER_SECS_TO_END_HOUR(secs) (FIRE_TIMER_SECS_PER_HOUR - (secs))
00148
00152 #define FIRE_TIMER_GET_MILITARY_TIME(ft) ((((ft)->sim_cur_hr) * 100) + (FIRE_TIMER_SECS_TO_MIN((ft)->sim_cur_secs) % 60))
00153
00154
00155
00156
00157
00158
00159
00160
00176 FireTimer * InitFireTimer(int sim_start_yr, int sim_start_mo, int sim_start_dy, int sim_start_hr,
00177 int sim_end_yr, int sim_end_mo, int sim_end_dy, int sim_end_hr);
00178
00195 int FireTimerIncrementSeconds(FireTimer * ft, int secs);
00196
00205 int FireTimerIsSimCurYearTimeExpired(FireTimer * ft);
00206
00213 int FireTimerIsSimTimeExpired(FireTimer * ft);
00214
00222 int FireTimerGetDaysInMonth(int mo);
00223
00234 int FireTimerGetDaysDifftime(int mo1, int dy1, int mo2, int dy2);
00235
00244 void FreeFireTimer(FireTimer * fs);
00245
00246 #endif FireTimer_H