summaryrefslogtreecommitdiff
path: root/src/field/coins.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/coins.c')
-rw-r--r--src/field/coins.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/field/coins.c b/src/field/coins.c
new file mode 100644
index 000000000..3c6356612
--- /dev/null
+++ b/src/field/coins.c
@@ -0,0 +1,84 @@
+#include "global.h"
+#include "coins.h"
+#include "menu.h"
+#include "string_util.h"
+#include "strings.h"
+
+#define MAX_COINS 9999
+
+void UpdateCoinsWindow(s32 a, u8 b, u8 c)
+{
+ PrintCoins(a, 4, b + 2, c + 1);
+}
+
+void ShowCoinsWindow(u32 a, u8 b, u8 c)
+{
+ MenuDrawTextWindow(b, c, b + 9, c + 3);
+ UpdateCoinsWindow(a, b, c);
+}
+
+void HideCoinsWindow(u8 a, u8 b)
+{
+ MenuZeroFillWindowRect(a, b, a + 9, b + 3);
+}
+
+void PrintCoins(s32 a, u8 b, u8 c, u8 d)
+{
+ u8 string[16];
+ u8 *ptr;
+ u8 r1;
+ u8 foo;
+
+ ConvertIntToDecimalString(string, a);
+ r1 = (b * 6 + 0x21 - 8 * (b + 2));
+ c = c - r1 / 8;
+ foo = r1 % 8;
+ ptr = gStringVar1;
+ if (foo)
+ {
+ ptr[0] = 0xFC;
+ ptr[1] = 0x11;
+ ptr[2] = 8 - (foo);
+ ptr += 3;
+ }
+ ptr[0] = 0xFC;
+ ptr[1] = 0x11;
+ ptr[2] = (b - StringLength(string)) * 6;
+ ptr += 3;
+ StringCopy(ptr, string);
+ MenuPrint(gOtherText_Coins2, c, d);
+}
+
+u16 GetCoins(void)
+{
+ return gSaveBlock1.coins;
+}
+
+bool8 GiveCoins(u16 coins)
+{
+ u32 newCoins;
+
+ if (GetCoins() >= MAX_COINS)
+ return FALSE;
+ newCoins = coins + gSaveBlock1.coins;
+ if (gSaveBlock1.coins > (u16)newCoins)
+ gSaveBlock1.coins = MAX_COINS;
+ else
+ {
+ gSaveBlock1.coins = newCoins;
+ if ((u16)newCoins > MAX_COINS)
+ gSaveBlock1.coins = MAX_COINS;
+ }
+ return TRUE;
+}
+
+bool8 TakeCoins(u16 coins)
+{
+ if (GetCoins() >= coins)
+ {
+ gSaveBlock1.coins -= coins;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}