diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-14 11:56:41 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-14 11:56:41 -0500 |
commit | 04d158cfcd0f26b4dc4a00e23464a5fde201aa8e (patch) | |
tree | 5722c829dbad65bbbeb573084291ba0621b89df5 /src/clock.c | |
parent | d23c1af73e98f3bd91b4551bf624638a33bbe236 (diff) | |
parent | 103b63bd1a0a8a00733834de1f5094507e070de9 (diff) |
Merge branch 'master' of github.com:pret/pokeruby into modern_gcc
Diffstat (limited to 'src/clock.c')
-rw-r--r-- | src/clock.c | 68 |
1 files changed, 33 insertions, 35 deletions
diff --git a/src/clock.c b/src/clock.c index fceccdfcb..3bea39754 100644 --- a/src/clock.c +++ b/src/clock.c @@ -1,21 +1,20 @@ #include "global.h" #include "clock.h" -#include "berry.h" -#include "dewford_trend.h" #include "event_data.h" +#include "rtc.h" +#include "time_events.h" #include "field_specials.h" -#include "field_weather.h" #include "lottery_corner.h" +#include "dewford_trend.h" +#include "tv.h" +#include "field_weather.h" +#include "berry.h" #include "main.h" #include "overworld.h" -#include "rtc.h" -#include "time_events.h" -#include "tv.h" #include "wallclock.h" -static void UpdatePerDay(struct Time *time); -static void UpdatePerMinute(struct Time *time); -static void ReturnFromStartWallClock(void); +static void UpdatePerDay(struct Time *localTime); +static void UpdatePerMinute(struct Time *localTime); void InitTimeBasedEvents(void) { @@ -35,50 +34,49 @@ void DoTimeBasedEvents(void) } } -static void UpdatePerDay(struct Time *time) +static void UpdatePerDay(struct Time *localTime) { u16 *varPtr = GetVarPointer(VAR_DAYS); int days = *varPtr; - u16 newDays; + u16 daysSince; - if (days != time->days && days <= time->days) + if (days != localTime->days && days <= localTime->days) { - newDays = time->days - days; + daysSince = localTime->days - days; ClearDailyFlags(); - UpdateDewfordTrendPerDay(newDays); - UpdateTVShowsPerDay(newDays); - UpdateWeatherPerDay(newDays); - UpdatePartyPokerusTime(newDays); - UpdateMirageRnd(newDays); - UpdateBirchState(newDays); - SetShoalItemFlag(newDays); - SetRandomLotteryNumber(newDays); - *varPtr = time->days; + UpdateDewfordTrendPerDay(daysSince); + UpdateTVShowsPerDay(daysSince); + UpdateWeatherPerDay(daysSince); + UpdatePartyPokerusTime(daysSince); + UpdateMirageRnd(daysSince); + UpdateBirchState(daysSince); + SetShoalItemFlag(daysSince); + SetRandomLotteryNumber(daysSince); + *varPtr = localTime->days; } } -static void UpdatePerMinute(struct Time *time) +static void UpdatePerMinute(struct Time *localTime) { - struct Time newTime; - s32 minutesPassed; - - CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - minutesPassed = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; - - if (minutesPassed == 0) // do not do the update for the first minute. - return; + struct Time difference; + int minutes; - if (minutesPassed > -1) // do not perform an update on invalid minutesPassed. + CalcTimeDifference(&difference, &gSaveBlock2.lastBerryTreeUpdate, localTime); + minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes; + if (minutes != 0) { - BerryTreeTimeUpdate(minutesPassed); - gSaveBlock2.lastBerryTreeUpdate = *time; + if (minutes >= 0) + { + BerryTreeTimeUpdate(minutes); + gSaveBlock2.lastBerryTreeUpdate = *localTime; + } } } static void ReturnFromStartWallClock(void) { InitTimeBasedEvents(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } void StartWallClock(void) |