mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
207 lines
5.4 KiB
C
207 lines
5.4 KiB
C
#include "m_item_debug.h"
|
|
|
|
#include "libultra/libultra.h"
|
|
#include "game.h"
|
|
#include "m_room_type.h"
|
|
#include "padmgr.h"
|
|
#include "m_name_table.h"
|
|
#include "m_private.h"
|
|
#include "m_common_data.h"
|
|
|
|
typedef struct item_debug_s {
|
|
int enabled;
|
|
int category;
|
|
int index;
|
|
} ItemDebug_c;
|
|
|
|
static char* mItemDebug_category_name_table[mItemDebug_CATEGORY_NUM] = {
|
|
"\xC5\xBC", // untranslated JP
|
|
"FTR",
|
|
"PPR",
|
|
"MNY",
|
|
"TOL",
|
|
"FSH",
|
|
"CLT",
|
|
"ELS",
|
|
"CPT",
|
|
"WLL",
|
|
"FOD",
|
|
"PLT",
|
|
"MSC",
|
|
"DST",
|
|
"LOT",
|
|
"IST",
|
|
"HPY",
|
|
"KAB"
|
|
};
|
|
|
|
static mActor_name_t mItemDebug_category_start_no_table[mItemDebug_CATEGORY_NUM] = {
|
|
EMPTY_NO,
|
|
FTR0_NO_START,
|
|
ITM_PAPER_START,
|
|
ITM_MONEY_START,
|
|
ITM_TOOL_START,
|
|
ITM_FISH_START,
|
|
ITM_CLOTH_START,
|
|
ITM_ETC_START,
|
|
ITM_CARPET_START,
|
|
ITM_WALL_START,
|
|
ITM_FOOD_START,
|
|
ITM_ENV_START,
|
|
ITM_MINIDISK_START,
|
|
ITM_DIARY_START,
|
|
ITM_TICKET_START,
|
|
ITM_INSECT_START,
|
|
ITM_HUKUBUKURO_START,
|
|
ITM_KABU_START
|
|
};
|
|
|
|
static int mItemDebug_category_max_table[mItemDebug_CATEGORY_NUM] = {
|
|
0,
|
|
FTR_NUM,
|
|
PAPER_NUM,
|
|
MONEY_NUM,
|
|
TOOL_NUM,
|
|
FISH_NUM,
|
|
CLOTH_NUM,
|
|
ETC_NUM,
|
|
CARPET_NUM,
|
|
WALL_NUM,
|
|
FRUIT_NUM,
|
|
PLANT_NUM,
|
|
MINIDISK_NUM,
|
|
DIARY_NUM,
|
|
TICKET_NUM,
|
|
INSECT_NUM,
|
|
HUKUBUKURO_NUM,
|
|
KABU_NUM
|
|
};
|
|
|
|
/* @unused ? mItemDebug_ItemDebugCt(...) */
|
|
|
|
static int mItemDebug_FurnitureCanUse(int ftr_idx) {
|
|
if (ftr_idx >= 0 && ftr_idx < FTR_NUM) {
|
|
u8* birth_info_p = mRmTp_CheckFtrBirthInfoTop();
|
|
|
|
if (birth_info_p[ftr_idx] == mRmTp_BIRTH_TYPE_UNOBTAINABLE || birth_info_p[ftr_idx] == mRmTp_BIRTH_TYPE_MY_ORIGINAL) {
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
static ItemDebug_c l_mItemDebug_work_data;
|
|
|
|
extern void mItemDebug_ItemDebugMain() {
|
|
if ((gamePT->pads[PAD2].on.button & BUTTON_START) == BUTTON_START) {
|
|
l_mItemDebug_work_data.enabled = (l_mItemDebug_work_data.enabled + 1) & 1;
|
|
|
|
if (l_mItemDebug_work_data.enabled != FALSE) {
|
|
bzero(&l_mItemDebug_work_data, sizeof(ItemDebug_c));
|
|
l_mItemDebug_work_data.enabled = TRUE;
|
|
}
|
|
else {
|
|
bzero(&l_mItemDebug_work_data, sizeof(ItemDebug_c));
|
|
}
|
|
}
|
|
|
|
if (l_mItemDebug_work_data.enabled != FALSE) {
|
|
int category;
|
|
|
|
if ((gamePT->pads[PAD2].on.button & BUTTON_DUP) == BUTTON_DUP) {
|
|
l_mItemDebug_work_data.index = 0;
|
|
l_mItemDebug_work_data.category++;
|
|
|
|
if (l_mItemDebug_work_data.category > mItemDebug_CATEGORY_KAB) {
|
|
l_mItemDebug_work_data.category = 0;
|
|
}
|
|
}
|
|
|
|
category = l_mItemDebug_work_data.category;
|
|
if (category != mItemDebug_CATEGORY_NONE) {
|
|
if ((gamePT->pads[PAD2].on.button & BUTTON_DRIGHT) == BUTTON_DRIGHT) {
|
|
/* Holding B increments by 10, holding A increments by 100 */
|
|
if ((gamePT->pads[PAD2].now.button & BUTTON_B) == BUTTON_B) {
|
|
l_mItemDebug_work_data.index += 10;
|
|
}
|
|
else if ((gamePT->pads[PAD2].now.button & BUTTON_A) == BUTTON_A) {
|
|
l_mItemDebug_work_data.index += 100;
|
|
}
|
|
else {
|
|
l_mItemDebug_work_data.index++;
|
|
}
|
|
|
|
if (l_mItemDebug_work_data.index > mItemDebug_category_max_table[category] - 1) {
|
|
l_mItemDebug_work_data.index = 0;
|
|
}
|
|
}
|
|
else if ((gamePT->pads[PAD2].on.button & BUTTON_DLEFT) == BUTTON_DLEFT) {
|
|
/* Holding B increments by 10, holding A increments by 100 */
|
|
if ((gamePT->pads[PAD2].now.button & BUTTON_B) == BUTTON_B) {
|
|
l_mItemDebug_work_data.index -= 10;
|
|
}
|
|
else if ((gamePT->pads[PAD2].now.button & BUTTON_A) == BUTTON_A) {
|
|
l_mItemDebug_work_data.index -= 100;
|
|
}
|
|
else {
|
|
l_mItemDebug_work_data.index--;
|
|
}
|
|
|
|
if (l_mItemDebug_work_data.index < 0) {
|
|
l_mItemDebug_work_data.index = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((gamePT->pads[PAD2].on.button & BUTTON_DDOWN) == BUTTON_DDOWN && category != mItemDebug_CATEGORY_NONE) {
|
|
int slot_idx = mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), EMPTY_NO, mPr_ITEM_COND_NORMAL);
|
|
mActor_name_t item;
|
|
|
|
if (category != mItemDebug_CATEGORY_FTR) {
|
|
item = mItemDebug_category_start_no_table[category] + l_mItemDebug_work_data.index;
|
|
}
|
|
else {
|
|
if (mItemDebug_FurnitureCanUse(l_mItemDebug_work_data.index)) {
|
|
item = mRmTp_FtrIdx2FtrItemNo(l_mItemDebug_work_data.index, mRmTp_DIRECT_SOUTH);
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (slot_idx != -1) {
|
|
mPr_SetPossessionItem(Common_Get(now_private), slot_idx, item, mPr_ITEM_COND_NORMAL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
extern void mItemDebug_ItemDebugDraw(gfxprint_t* gfxprint) {
|
|
int category = l_mItemDebug_work_data.category;
|
|
|
|
if (l_mItemDebug_work_data.enabled != FALSE) {
|
|
gfxprint_color(gfxprint, 225, 225, 255, 255);
|
|
gfxprint_locate8x8(gfxprint, 3, 20);
|
|
|
|
if (category != mItemDebug_CATEGORY_NONE) {
|
|
if (category == mItemDebug_CATEGORY_FTR) {
|
|
if (mItemDebug_FurnitureCanUse(l_mItemDebug_work_data.index)) {
|
|
gfxprint_printf(gfxprint, "%s:%d", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
|
}
|
|
else {
|
|
gfxprint_printf(gfxprint, "%s:---(%d)", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
|
}
|
|
}
|
|
else {
|
|
gfxprint_printf(gfxprint, "%s:%d", mItemDebug_category_name_table[category], l_mItemDebug_work_data.index);
|
|
}
|
|
}
|
|
else {
|
|
gfxprint_printf(gfxprint, "\xC5\xBC");
|
|
}
|
|
}
|
|
}
|