summaryrefslogtreecommitdiff
path: root/src/field/coins.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-10-01 19:48:31 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-10-01 19:52:40 -0400
commit0685dd4920c64eae6bcfbc9f201854b4da91bfab (patch)
treef759feaf819167d436ab4fde480eca35ba591b04 /src/field/coins.c
parentd0fbed6ad50c34593002c2b540c4e3e7f4c5cd16 (diff)
parent50dc4f429d4aa68e0365adc71d17e43a0dd7b843 (diff)
Merge branch 'master' into trade
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..91a4b508d
--- /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 coins, u8 x, u8 y)
+{
+ PrintCoins(coins, 4, x + 2, y + 1);
+}
+
+void ShowCoinsWindow(u32 coins, u8 x, u8 y)
+{
+ MenuDrawTextWindow(x, y, x + 9, y + 3);
+ UpdateCoinsWindow(coins, x, y);
+}
+
+void HideCoinsWindow(u8 x, u8 y)
+{
+ MenuZeroFillWindowRect(x, y, x + 9, y + 3);
+}
+
+void PrintCoins(s32 coins, u8 b, u8 x, u8 y)
+{
+ u8 string[16];
+ u8 *ptr;
+ u8 r1;
+ u8 foo;
+
+ ConvertIntToDecimalString(string, coins);
+ r1 = (b * 6 + 0x21 - 8 * (b + 2));
+ x = x - r1 / 8;
+ foo = r1 % 8;
+ ptr = gStringVar1;
+ if (foo)
+ {
+ ptr[0] = EXT_CTRL_CODE_BEGIN;
+ ptr[1] = 0x11;
+ ptr[2] = 8 - (foo);
+ ptr += 3;
+ }
+ ptr[0] = EXT_CTRL_CODE_BEGIN;
+ ptr[1] = 0x11;
+ ptr[2] = (b - StringLength(string)) * 6;
+ ptr += 3;
+ StringCopy(ptr, string);
+ MenuPrint(gOtherText_Coins2, x, y);
+}
+
+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;
+}