1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
#include "global.h"
#include "gflib.h"
#include "string_util.h"
#include "menu.h"
#include "text_window.h"
#include "strings.h"
#include "constants/coins.h"
EWRAM_DATA static u8 sCoinsWindowId = 0;
u16 GetCoins(void)
{
return gSaveBlock1Ptr->coins ^ gSaveBlock2Ptr->encryptionKey;
}
void SetCoins(u16 coinAmount)
{
gSaveBlock1Ptr->coins = coinAmount ^ gSaveBlock2Ptr->encryptionKey;
}
bool8 AddCoins(u16 toAdd)
{
u16 coins = GetCoins();
if (coins >= MAX_COINS)
return FALSE;
// check overflow, can't have less coins than previously
if (coins <= coins + toAdd)
{
coins += toAdd;
if (coins > MAX_COINS)
coins = MAX_COINS;
}
else
{
coins = MAX_COINS;
}
SetCoins(coins);
return TRUE;
}
bool8 RemoveCoins(u16 toSub)
{
u16 coins = GetCoins();
if (coins >= toSub)
{
SetCoins(coins - toSub);
return TRUE;
}
return FALSE;
}
void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8 speed)
{
ConvertIntToDecimalStringN(gStringVar1, coinAmount, STR_CONV_MODE_RIGHT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gText_Coins);
AddTextPrinterParameterized(windowId, 0, gStringVar4, x, y, speed, NULL);
}
void sub_80D0674(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
{
DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, palette);
AddTextPrinterParameterized(windowId, 2, gText_Coins_2, 0, 0, 0xFF, 0);
PrintCoinsString_Parameterized(windowId, coinAmount, 0x10, 0xC, 0);
}
void PrintCoinsString(u32 coinAmount)
{
u8 windowId;
int width;
ConvertIntToDecimalStringN(gStringVar1, coinAmount, STR_CONV_MODE_RIGHT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gText_Coins);
width = GetStringWidth(0, gStringVar4, 0);
windowId = sCoinsWindowId;
AddTextPrinterParameterized(windowId, 0, gStringVar4, 64 - width, 0xC, 0, NULL);
}
void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
{
struct WindowTemplate template;
template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 0xF, 0x20);
sCoinsWindowId = AddWindow(&template);
FillWindowPixelBuffer(sCoinsWindowId, 0);
PutWindowTilemap(sCoinsWindowId);
TextWindow_SetStdFrame0_WithPal(sCoinsWindowId, 0x21D, 0xD0);
DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized(sCoinsWindowId, 2, gText_Coins_2, 0, 0, 0xFF, 0);
PrintCoinsString(coinAmount);
}
void HideCoinsWindow(void)
{
ClearWindowTilemap(sCoinsWindowId);
ClearStdWindowAndFrameToTransparent(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
|