summaryrefslogtreecommitdiff
path: root/src/buy_menu_helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buy_menu_helpers.c')
-rw-r--r--src/buy_menu_helpers.c216
1 files changed, 216 insertions, 0 deletions
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
new file mode 100644
index 000000000..4febb8209
--- /dev/null
+++ b/src/buy_menu_helpers.c
@@ -0,0 +1,216 @@
+#include "global.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "money.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "shop.h"
+
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesNormal[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xC,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x5,
+ .tilemapTop = 0xE,
+ .width = 0x19,
+ .height = 0x6,
+ .paletteNum = 0xF,
+ .baseBlock = 0x1BD,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+// firered uses different layout when selling TMs
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesTM[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xA,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xC,
+ .tilemapTop = 0xC,
+ .width = 0x12,
+ .height = 0x8,
+ .paletteNum = 0xE,
+ .baseBlock = 0x19B,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xE,
+ .width = 0xA,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x22B,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplate =
+{
+ .bg = 0x0,
+ .tilemapLeft = 0x15,
+ .tilemapTop = 0x9,
+ .width = 0x6,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+};
+
+static const struct TextColor sShopBuyMenuTextColors[] =
+{
+ {
+ .fgColor = 0,
+ .bgColor = 1,
+ .shadowColor = 2,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 2,
+ .shadowColor = 3,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 3,
+ .shadowColor = 2,
+ },
+};
+
+void BuyMenuInitWindows(bool32 isSellingTM)
+{
+ if (isSellingTM != TRUE)
+ InitWindows(sShopBuyMenuWindowTemplatesNormal);
+ else
+ InitWindows(sShopBuyMenuWindowTemplatesTM);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x1, 0xD0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x13, 0xE0);
+ TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xF0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ if (isSellingTM == TRUE)
+ PutWindowTilemap(6);
+}
+
+void BuyMenuDrawMoneyBox(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(0, 0xA, 0xF, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color)
+{
+ AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, &sShopBuyMenuTextColors[color], speed, text);
+}
+
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
+{
+ DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
+{
+ SetWindowBorderStyle(windowId, copyToVram, 0x1, 0xD);
+}
+
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
+{
+ SetWindowBorderStyle(windowId, copyToVram, 0xA, 0xF);
+}
+
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sShopBuyMenuYesNoWindowTemplate, 2, 0, 2, 1, 0xD, yesNo);
+}