summaryrefslogtreecommitdiff
path: root/src/play_time.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
commite130a00cdf69c58dbff8e98a69559aeb33f87b60 (patch)
treee128e502a2229f5d934f0436a0eb31dc86350bbb /src/play_time.c
parentef4c86fbfdd18b78700f61b629907a85579197c0 (diff)
parentd4cc0e161bf103d3d3e01fefa02e867d4a2053c2 (diff)
Merge branch 'master' into slot_machine
Diffstat (limited to 'src/play_time.c')
-rw-r--r--src/play_time.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/play_time.c b/src/play_time.c
new file mode 100644
index 000000000..04f4b2040
--- /dev/null
+++ b/src/play_time.c
@@ -0,0 +1,65 @@
+#include "play_time.h"
+
+static IWRAM_DATA u8 sPlayTimeCounterState;
+
+enum
+{
+ STOPPED,
+ RUNNING,
+ MAXED_OUT,
+};
+
+void PlayTimeCounter_Reset(void)
+{
+ sPlayTimeCounterState = STOPPED;
+ gSaveBlock2Ptr->playTimeHours = 0;
+ gSaveBlock2Ptr->playTimeMinutes = 0;
+ gSaveBlock2Ptr->playTimeSeconds = 0;
+ gSaveBlock2Ptr->playTimeVBlanks = 0;
+}
+
+void PlayTimeCounter_Start(void)
+{
+ sPlayTimeCounterState = RUNNING;
+ if (gSaveBlock2Ptr->playTimeHours > 999)
+ PlayTimeCounter_SetToMax();
+}
+
+void PlayTimeCounter_Stop(void)
+{
+ sPlayTimeCounterState = STOPPED;
+}
+
+void PlayTimeCounter_Update(void)
+{
+ if (sPlayTimeCounterState == RUNNING)
+ {
+ gSaveBlock2Ptr->playTimeVBlanks++;
+ if (gSaveBlock2Ptr->playTimeVBlanks > 59)
+ {
+ gSaveBlock2Ptr->playTimeVBlanks = 0;
+ gSaveBlock2Ptr->playTimeSeconds++;
+ if (gSaveBlock2Ptr->playTimeSeconds > 59)
+ {
+ gSaveBlock2Ptr->playTimeSeconds = 0;
+ gSaveBlock2Ptr->playTimeMinutes++;
+ if (gSaveBlock2Ptr->playTimeMinutes > 59)
+ {
+ gSaveBlock2Ptr->playTimeMinutes = 0;
+ gSaveBlock2Ptr->playTimeHours++;
+ if (gSaveBlock2Ptr->playTimeHours > 999)
+ PlayTimeCounter_SetToMax();
+ }
+ }
+ }
+ }
+}
+
+void PlayTimeCounter_SetToMax(void)
+{
+ sPlayTimeCounterState = MAXED_OUT;
+ gSaveBlock2Ptr->playTimeHours = 999;
+ gSaveBlock2Ptr->playTimeMinutes = 59;
+ gSaveBlock2Ptr->playTimeSeconds = 59;
+ gSaveBlock2Ptr->playTimeVBlanks = 59;
+}