diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-01 19:48:31 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-01 19:52:40 -0400 |
commit | 0685dd4920c64eae6bcfbc9f201854b4da91bfab (patch) | |
tree | f759feaf819167d436ab4fde480eca35ba591b04 /src/field/coins.c | |
parent | d0fbed6ad50c34593002c2b540c4e3e7f4c5cd16 (diff) | |
parent | 50dc4f429d4aa68e0365adc71d17e43a0dd7b843 (diff) |
Merge branch 'master' into trade
Diffstat (limited to 'src/field/coins.c')
-rw-r--r-- | src/field/coins.c | 84 |
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; +} |