mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
This commit is contained in:
parent
2de495199a
commit
46a02405fb
|
|
@ -637,7 +637,7 @@ TEXT_BANK_UNION_ROOM
|
|||
TEXT_BANK_UNDERGROUND_NPCS
|
||||
TEXT_BANK_UNDERGROUND_DECORATE_BASE
|
||||
TEXT_BANK_UNDERGROUND_CAPTURE_FLAG
|
||||
TEXT_BANK_UNDERGROUND_BASE_PC
|
||||
TEXT_BANK_UNDERGROUND_PC
|
||||
TEXT_BANK_UNDERGROUND_RECORDS
|
||||
TEXT_BANK_DUMMY_0641
|
||||
TEXT_BANK_ROUTE_226
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ enum PauseBit {
|
|||
PAUSE_BIT_3 = 1 << 3,
|
||||
PAUSE_BIT_TRAPS = 1 << 4,
|
||||
PAUSE_BIT_5 = 1 << 5,
|
||||
PAUSE_BIT_6 = 1 << 6,
|
||||
PAUSE_BIT_LINK_PC = 1 << 6,
|
||||
PAUSE_BIT_RADAR = 1 << 7,
|
||||
};
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ typedef struct CommPlayerManager {
|
|||
u8 moveTimer[MAX_CONNECTED_PLAYERS];
|
||||
UnkStruct_ov23_0224ABC4 unk_14A[8 + 1];
|
||||
TrainerInfo *unk_27C[5];
|
||||
TrainerInfo *unk_290[MAX_CONNECTED_PLAYERS];
|
||||
TrainerInfo *heldFlagOwnerInfo[MAX_CONNECTED_PLAYERS];
|
||||
u16 unk_2B0;
|
||||
u16 unk_2B2;
|
||||
u8 unk_2B4[4];
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef POKEPLATINUM_FUNCPTR_OV23_022431EC_H
|
||||
#define POKEPLATINUM_FUNCPTR_OV23_022431EC_H
|
||||
|
||||
#include "sys_task_manager.h"
|
||||
|
||||
typedef void (*UnkFuncPtr_ov23_022431EC)(SysTask *, void *);
|
||||
|
||||
#endif // POKEPLATINUM_FUNCPTR_OV23_022431EC_H
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
#include "struct_decls/struct_02029894_decl.h"
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
#include "overlay023/funcptr_ov23_022431EC.h"
|
||||
#include "overlay023/underground_defs.h"
|
||||
#include "overlay023/underground_text_printer.h"
|
||||
|
||||
|
|
@ -13,16 +12,18 @@
|
|||
#include "sys_task_manager.h"
|
||||
#include "trainer_info.h"
|
||||
|
||||
typedef void (*EndSysTaskFunc)(SysTask *sysTask, void *ctx);
|
||||
|
||||
enum UndergroundStoredPosKeys {
|
||||
UNDERGROUND_STORED_POS_NONE = 0,
|
||||
UNDERGROUND_STORED_POS_KEY_1,
|
||||
UNDERGROUND_STORED_POS_KEY_PC,
|
||||
UNDERGROUND_STORED_POS_KEY_START_MENU,
|
||||
UNDERGROUND_STORED_POS_KEY_3,
|
||||
};
|
||||
|
||||
enum UndergroundMenuKeys {
|
||||
UNDERGROUND_MENU_KEY_2 = 2,
|
||||
UNDERGROUND_MENU_KEY_6 = 6,
|
||||
UNDERGROUND_MENU_KEY_STORE_GOODS = 2,
|
||||
UNDERGROUND_MENU_KEY_WITHDRAW_GOODS = 6,
|
||||
UNDERGROUND_MENU_KEY_TRAPS = 8,
|
||||
UNDERGROUND_MENU_KEY_SPHERES,
|
||||
UNDERGROUND_MENU_KEY_GOODS,
|
||||
|
|
@ -35,8 +36,8 @@ enum UndergroundMenuKeys {
|
|||
UNDERGROUND_MENU_KEY_17,
|
||||
UNDERGROUND_MENU_KEY_18,
|
||||
UNDERGROUND_MENU_KEY_19,
|
||||
UNDERGROUND_MENU_KEY_22 = 22,
|
||||
UNDERGROUND_MENU_KEY_23
|
||||
UNDERGROUND_MENU_KEY_PC_RADAR = 22,
|
||||
UNDERGROUND_MENU_KEY_PC
|
||||
};
|
||||
|
||||
#define BIT_TRAPS_FULL 1 << 4
|
||||
|
|
@ -81,9 +82,9 @@ int ov23_02242EE0(int param0);
|
|||
int ov23_02242F48(int param0);
|
||||
void ov23_02242FA8(void);
|
||||
void ov23_02242FBC(void);
|
||||
void ov23_02242FD0(void);
|
||||
void ov23_02242FE4(void);
|
||||
void ov23_02242FF8(void);
|
||||
void CommManUnderground_SetSphereRadarActive(void);
|
||||
void CommManUnderground_SetTrapRadarActive(void);
|
||||
void CommManUnderground_SetTreasureRadarActive(void);
|
||||
void ov23_0224300C(int param0, int param1);
|
||||
void ov23_02243020(int param0);
|
||||
void UndergroundMan_SetReturnLog(int param0);
|
||||
|
|
@ -93,8 +94,8 @@ void CommManUnderground_StoreCursorAndListPos(u16 menuKey, u16 cursorPos, u16 li
|
|||
u16 CommManUnderground_GetStoredListPos(u16 menuKey);
|
||||
u16 CommManUnderground_GetStoredCursorPos(u16 menuKey);
|
||||
void ov23_022431C4(int param0, int param1, void *param2, void *param3);
|
||||
void ov23_022431EC(void *param0, SysTask *param1, UnkFuncPtr_ov23_022431EC param2);
|
||||
void ov23_02243204(void);
|
||||
void CommManUnderground_SetCurrentSysTask(void *ctx, SysTask *sysTask, EndSysTaskFunc endFunc);
|
||||
void CommManUnderground_ClearCurrentSysTaskInfo(void);
|
||||
BOOL ov23_0224321C(void);
|
||||
BOOL ov23_02243298(int param0);
|
||||
void ov23_02243360(void);
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ void ov23_RevertPlayerStatusToNormal(int netID);
|
|||
void ov23_0224ADB0(int param0, int param1, int param2, int param3);
|
||||
void ov23_0224ADE8(int param0, int param1, int param2, int param3);
|
||||
BOOL ov23_0224AE60(int param0);
|
||||
BOOL ov23_0224AEA4(int param0);
|
||||
BOOL ov23_0224AEC4(int param0, int param1);
|
||||
BOOL ov23_IsPlayerHoldingFlag(int param0);
|
||||
BOOL ov23_TryTakeFlag(int param0, int param1);
|
||||
void ov23_0224AF4C(int param0);
|
||||
void ov23_0224AF7C(int param0);
|
||||
void ov23_ShowExclamationEmote(int netID);
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV23_0225128C_H
|
||||
#define POKEPLATINUM_OV23_0225128C_H
|
||||
|
||||
#include "overlay023/underground_defs.h"
|
||||
#include "overlay023/underground_menu.h"
|
||||
|
||||
void UndergroundMenu_UpdateScrollPrompts(UndergroundMenu *menu, int listPos, int count, int maxDisplay);
|
||||
int ov23_022512D4(Coordinates *param0, int param1);
|
||||
BOOL ov23_02251324(int param0, Coordinates *param1);
|
||||
void ov23_022513B0(int param0, int param1, void *param2, void *param3);
|
||||
int ov23_02251414(void);
|
||||
void ov23_0225215C(int param0, int param1, void *param2, void *param3);
|
||||
void ov23_02252178(int param0, int param1, void *param2, void *param3);
|
||||
|
||||
#endif // POKEPLATINUM_OV23_0225128C_H
|
||||
|
|
@ -11,9 +11,9 @@ void ov23_02252CD4(void);
|
|||
void ov23_02252CE0(int param0, int param1);
|
||||
void ov23_02252CF4(int param0, int param1);
|
||||
void ov23_02252D08(int param0, int param1);
|
||||
void ov23_02252D74(UndergroundMenu *param0, int param1);
|
||||
void ov23_02252DF4(UndergroundMenu *param0);
|
||||
void ov23_02252E18(UndergroundMenu *param0);
|
||||
void UndergroundMenu_PrintMenuDescription(UndergroundMenu *param0, int param1);
|
||||
void UndergroundMenu_RemoveDescriptionWindow(UndergroundMenu *param0);
|
||||
void UndergroundMenu_RemoveDescriptionWindowInstant(UndergroundMenu *param0);
|
||||
void ov23_022534A0(FieldSystem *fieldSystem);
|
||||
|
||||
#endif // POKEPLATINUM_OV23_022521F0_H
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ typedef struct UndergroundMenu {
|
|||
FieldSystem *fieldSystem;
|
||||
Window primaryWindow;
|
||||
Window secondaryWindow;
|
||||
Window unk_30;
|
||||
Window menuDescriptionWindow;
|
||||
StringList *menuOptions;
|
||||
StringList *itemSelectedOptions;
|
||||
ListMenu *unk_48;
|
||||
|
|
@ -113,11 +113,12 @@ void UndergroundMenu_StartHoldingFlag(ExitCallback exitCallback, FieldSystem *fi
|
|||
void UndergroundMenu_PrintGoodDescription(ListMenu *listMenu, u32 index, u8 onInit);
|
||||
void ov23_02250CB0(UndergroundMenu *menu);
|
||||
void UndergroundMenu_OpenGoodsMenu(UndergroundMenu *menu);
|
||||
void ov23_02250D2C(UndergroundMenu *menu);
|
||||
void ov23_02250D5C(UndergroundMenu *menu);
|
||||
void UndergroundMenu_ExitGiftMenu(void *data, u32 input);
|
||||
void UndergroundMenu_OpenStoreGoodsMenu(UndergroundMenu *menu);
|
||||
void UndergroundMenu_OpenWithdrawGoodsMenu(UndergroundMenu *menu);
|
||||
void UndergroundMenu_Exit(void *data, u32 input);
|
||||
void *UndergroundMenu_StartGiftMenu(ExitCallback exitCallback, FieldSystem *fieldSystem);
|
||||
void UndergroundMenu_MoveListCursorPosInBounds(UndergroundMenu *menu, int maxDisplay, int count);
|
||||
void ov23_02251270(SysTask *sysTask, void *param1);
|
||||
void UndergroundMenu_ResetBrightnessAndExit(SysTask *sysTask, void *data);
|
||||
void UndergroundMenu_UpdateScrollPrompts(UndergroundMenu *menu, int listPos, int count, int maxDisplay);
|
||||
|
||||
#endif // POKEPLATINUM_OV23_0224F294_H
|
||||
|
|
|
|||
16
include/overlay023/underground_pc.h
Normal file
16
include/overlay023/underground_pc.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef POKEPLATINUM_UNDERGROUND_PC_H
|
||||
#define POKEPLATINUM_UNDERGROUND_PC_H
|
||||
|
||||
#include "overlay023/underground_defs.h"
|
||||
#include "overlay023/underground_menu.h"
|
||||
|
||||
#define PC_NONE 0xFF
|
||||
|
||||
int UndergroundPC_GetPCAtCoordinates(Coordinates *coordinates, int dir);
|
||||
BOOL UndergroundPC_TryUsePC(int netID, Coordinates *coordinates);
|
||||
void UndergroundPC_ProcessPCInteraction(int unused0, int unused1, void *data, void *data2);
|
||||
int CommPacketSizeOf_PCInteraction(void);
|
||||
void UndergroundPC_ProcessTakeFlagAttempt(int unused0, int unused1, void *data, void *unused3);
|
||||
void UndergroundPC_ProcessTakenFlag(int unused0, int unused1, void *data, void *unused3);
|
||||
|
||||
#endif // POKEPLATINUM_UNDERGROUND_PC_H
|
||||
|
|
@ -57,7 +57,7 @@ void sub_0205EB08(PlayerAvatar *playerAvatar, int param1);
|
|||
int PlayerAvatar_MoveState(const PlayerAvatar *playerAvatar);
|
||||
void sub_0205EB10(PlayerAvatar *playerAvatar, int param1);
|
||||
int Player_MoveState(const PlayerAvatar *playerAvatar);
|
||||
void PlayerAvatar_SetHidden(PlayerAvatar *playerAvatar, int param1);
|
||||
void PlayerAvatar_SetVisible(PlayerAvatar *playerAvatar, BOOL hidden);
|
||||
void PlayerAvatar_SetMapObject(PlayerAvatar *playerAvatar, MapObject *param1);
|
||||
MapObject *Player_MapObject(PlayerAvatar *playerAvatar);
|
||||
const MapObject *PlayerAvatar_ConstMapObject(const PlayerAvatar *playerAvatar);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ typedef struct UndergroundRecord {
|
|||
u32 numTrapsTriggered : 20;
|
||||
u32 numPlayersHelped : 20;
|
||||
u32 numGiftsReceived : 20;
|
||||
u32 unk_2C_0 : 20;
|
||||
u32 timesFlagTaken : 20;
|
||||
u32 unk_30_0 : 20;
|
||||
u32 unk_34_0 : 20;
|
||||
u32 capturedFlagCount : 20;
|
||||
|
|
|
|||
|
|
@ -127,8 +127,8 @@ int UndergroundRecord_GetNumPlayersHelped(const UndergroundRecord *undergroundRe
|
|||
void UndergroundRecord_IncrementNumPlayersHelped(UndergroundRecord *undergroundRecord);
|
||||
int UndergroundRecord_GetGiftsReceived(const UndergroundRecord *undergroundRecord);
|
||||
void UndergroundRecord_IncrementGiftsReceived(UndergroundRecord *undergroundRecord);
|
||||
int sub_020297AC(const UndergroundRecord *param0);
|
||||
void sub_020297B4(UndergroundRecord *param0);
|
||||
int UndergroundRecord_GetTimesFlagTaken(const UndergroundRecord *undergroundRecord);
|
||||
void UndergroundRecord_IncrementTimesFlagTaken(UndergroundRecord *undergroundRecord);
|
||||
int sub_020297E4(const UndergroundRecord *param0);
|
||||
void sub_020297EC(UndergroundRecord *param0);
|
||||
int sub_0202981C(const UndergroundRecord *param0);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ void sub_020339AC(int param0, TrainerInfo *param1);
|
|||
BOOL sub_020339E8(u16 param0);
|
||||
void sub_02033A5C(void);
|
||||
void sub_02033D94(u16 param0);
|
||||
BOOL sub_02033DFC(void);
|
||||
BOOL CommServerClient_IsInClosedSecretBase(void);
|
||||
BOOL CommServerClient_IsInitialized(void);
|
||||
BOOL sub_02033E30(void);
|
||||
BOOL CommServerClient_IsClientConnecting(void);
|
||||
|
|
|
|||
|
|
@ -851,7 +851,7 @@ Overlay overlay23
|
|||
Object main.nef.p/src_overlay023_ov23_0224B05C.c.o
|
||||
Object main.nef.p/src_overlay023_underground_player_talk.c.o
|
||||
Object main.nef.p/src_overlay023_underground_menu.c.o
|
||||
Object main.nef.p/src_overlay023_ov23_0225128C.c.o
|
||||
Object main.nef.p/src_overlay023_underground_pc.c.o
|
||||
Object main.nef.p/src_overlay023_ov23_022521F0.c.o
|
||||
Object main.nef.p/src_overlay023_ov23_02253598.c.o
|
||||
Object main.nef.p/src_overlay023_underground_text_printer.c.o
|
||||
|
|
|
|||
|
|
@ -48,14 +48,14 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000638_00008",
|
||||
"id": "UndergroundCaptureFlag_Text_YouObtainedFlag",
|
||||
"en_US": [
|
||||
"You’ve obtained the Flag\n",
|
||||
"from {STRVAR_1 1, 0, 0}’s Base!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000638_00009",
|
||||
"id": "UndergroundCaptureFlag_Text_YouAlreadyHaveFlag",
|
||||
"en_US": "You already have a Flag!"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000634_00067",
|
||||
"id": "UndergroundCommon_Text_TakeFlagPrompt",
|
||||
"en_US": [
|
||||
"This appears to be {STRVAR_1 3, 0, 0}’s\n",
|
||||
"Secret Base.\r",
|
||||
|
|
|
|||
|
|
@ -2,60 +2,60 @@
|
|||
"key": 9886,
|
||||
"messages": [
|
||||
{
|
||||
"id": "pl_msg_00000639_00000",
|
||||
"id": "UndergroundPC_Text_Decorate",
|
||||
"en_US": "DECORATE"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00001",
|
||||
"id": "UndergroundPC_Text_StoreGoods",
|
||||
"en_US": "STORE GOODS"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00002",
|
||||
"id": "UndergroundPC_Text_ReceiveGoods",
|
||||
"en_US": "RECEIVE GOODS"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00003",
|
||||
"id": "UndergroundPC_Text_CheckFlags",
|
||||
"en_US": "CHECK FLAGS"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00004",
|
||||
"id": "UndergroundPC_Text_UseRadar",
|
||||
"en_US": "USE RADAR"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00005",
|
||||
"id": "UndergroundPC_Text_Exit",
|
||||
"en_US": "EXIT"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00006",
|
||||
"id": "UndergroundPC_Text_DecorateDescription",
|
||||
"en_US": [
|
||||
"Decoration goods stored on the PC\n",
|
||||
"can be brought out and displayed."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00007",
|
||||
"id": "UndergroundPC_Text_StoreGoodsDescription",
|
||||
"en_US": "Store decoration goods on the PC."
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00008",
|
||||
"id": "UndergroundPC_Text_ReceiveGoodsDescription",
|
||||
"en_US": [
|
||||
"Take out stored decoration goods\n",
|
||||
"from the PC."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00009",
|
||||
"id": "UndergroundPC_Text_CheckFlagsDescription",
|
||||
"en_US": "Check your collection of Flags."
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00010",
|
||||
"id": "UndergroundPC_Text_UseRadarDescription",
|
||||
"en_US": [
|
||||
"Search for hidden things in the\n",
|
||||
"underground passages."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00011",
|
||||
"id": "UndergroundPC_Text_ExitDescription",
|
||||
"en_US": "Switch off the PC."
|
||||
},
|
||||
{
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
"garbage": 3
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00028",
|
||||
"id": "UndergroundPC_Text_GoodsOnHand",
|
||||
"en_US": [
|
||||
"Goods on\n",
|
||||
"hand"
|
||||
|
|
@ -151,7 +151,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00032",
|
||||
"id": "UndergroundPC_Text_GoodsInPC",
|
||||
"en_US": [
|
||||
"Goods in\n",
|
||||
"PC"
|
||||
|
|
@ -179,73 +179,73 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00036",
|
||||
"id": "UndergroundPC_Text_GoodWasWithdrawn",
|
||||
"en_US": [
|
||||
"The {STRVAR_1 25, 2, 0} was withdrawn\n",
|
||||
"from the PC."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00037",
|
||||
"id": "UndergroundPC_Text_GoodWasStored",
|
||||
"en_US": [
|
||||
"The {STRVAR_1 25, 2, 0} was stored\n",
|
||||
"on the PC."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00038",
|
||||
"id": "UndergroundPC_Text_PCIsFull",
|
||||
"en_US": "Your PC is full."
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00039",
|
||||
"id": "UndergroundPC_Text_BagIsFull",
|
||||
"en_US": [
|
||||
"You can’t carry any more\n",
|
||||
"goods with you."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00040",
|
||||
"id": "UndergroundPC_Text_TreasureSearch",
|
||||
"en_US": "TREASURE SEARCH"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00041",
|
||||
"id": "UndergroundPC_Text_SphereSearch",
|
||||
"en_US": "SPHERE SEARCH"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00042",
|
||||
"id": "UndergroundPC_Text_TrapSearch",
|
||||
"en_US": "TRAP SEARCH"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00043",
|
||||
"id": "UndergroundPC_Text_Cancel",
|
||||
"en_US": "CANCEL"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00044",
|
||||
"id": "UndergroundPC_Text_TreasureSearchDescription",
|
||||
"en_US": [
|
||||
"Scan for Treasure hidden in the\n",
|
||||
"underground passages."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00045",
|
||||
"id": "UndergroundPC_Text_SphereSearchDescription",
|
||||
"en_US": [
|
||||
"Scan for Spheres you buried\n",
|
||||
"yourself."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00046",
|
||||
"id": "UndergroundPC_Text_TrapSearchDescription",
|
||||
"en_US": [
|
||||
"Scan for Traps hidden in the\n",
|
||||
"underground passages."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00047",
|
||||
"id": "UndergroundPC_Text_CancelDescription",
|
||||
"en_US": "Turns off the Radar."
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00048",
|
||||
"id": "UndergroundPC_Text_TreasureRadarBootedUp",
|
||||
"en_US": [
|
||||
"The Treasure Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -254,7 +254,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00049",
|
||||
"id": "UndergroundPC_Text_SphereRadarBootedUp",
|
||||
"en_US": [
|
||||
"The Sphere Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -263,7 +263,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00050",
|
||||
"id": "UndergroundPC_Text_TrapRadarBootedUp",
|
||||
"en_US": [
|
||||
"The Trap Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -288,14 +288,14 @@
|
|||
"garbage": 17
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00055",
|
||||
"id": "UndergroundPC_Text_CantWithdrawDisplayedGood",
|
||||
"en_US": [
|
||||
"Displayed decoration goods can’t\n",
|
||||
"be withdrawn."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00056",
|
||||
"id": "UndergroundPC_Text_CantDecorateWithEntranceOpen",
|
||||
"en_US": [
|
||||
"It’s unsafe if you get a visitor\n",
|
||||
"while you are decorating.\r",
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00057",
|
||||
"id": "UndergroundPC_Text_TreasureRadarEntranceClosed",
|
||||
"en_US": [
|
||||
"The Treasure Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00058",
|
||||
"id": "UndergroundPC_Text_SphereRadarEntranceClosed",
|
||||
"en_US": [
|
||||
"The Sphere Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -323,7 +323,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00059",
|
||||
"id": "UndergroundPC_Text_TrapRadarEntranceClosed",
|
||||
"en_US": [
|
||||
"The Trap Search System was\n",
|
||||
"booted up.\r",
|
||||
|
|
@ -333,7 +333,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000639_00060",
|
||||
"id": "UndergroundPC_Text_StoreGoodsBeforeDecorating",
|
||||
"en_US": [
|
||||
"Please store goods in the PC before\n",
|
||||
"decorating."
|
||||
|
|
@ -264,11 +264,11 @@ void CommPlayer_CopyPersonal(int netJd)
|
|||
sCommPlayerManager->playerLocationServer[netId].x = sCommPlayerManager->playerLocationServer[netJd].x;
|
||||
sCommPlayerManager->playerLocationServer[netId].z = sCommPlayerManager->playerLocationServer[netJd].z;
|
||||
sCommPlayerManager->playerLocationServer[netId].dir = sCommPlayerManager->playerLocationServer[netJd].dir;
|
||||
sCommPlayerManager->unk_290[netId] = sCommPlayerManager->unk_290[netJd];
|
||||
sCommPlayerManager->unk_290[netJd] = NULL;
|
||||
sCommPlayerManager->heldFlagOwnerInfo[netId] = sCommPlayerManager->heldFlagOwnerInfo[netJd];
|
||||
sCommPlayerManager->heldFlagOwnerInfo[netJd] = NULL;
|
||||
|
||||
if (sCommPlayerManager->unk_290[netId]) {
|
||||
TrainerInfo_Copy(sCommPlayerManager->unk_290[netId], (TrainerInfo *)&sCommPlayerManager->unk_14A[netId].unk_00);
|
||||
if (sCommPlayerManager->heldFlagOwnerInfo[netId]) {
|
||||
TrainerInfo_Copy(sCommPlayerManager->heldFlagOwnerInfo[netId], (TrainerInfo *)&sCommPlayerManager->unk_14A[netId].unk_00);
|
||||
}
|
||||
|
||||
sCommPlayerManager->unk_14A[netJd].unk_20 = 0xff;
|
||||
|
|
|
|||
|
|
@ -651,7 +651,7 @@ pokeplatinum_c = files(
|
|||
'overlay023/ov23_0224B05C.c',
|
||||
'overlay023/underground_player_talk.c',
|
||||
'overlay023/underground_menu.c',
|
||||
'overlay023/ov23_0225128C.c',
|
||||
'overlay023/underground_pc.c',
|
||||
'overlay023/ov23_022521F0.c',
|
||||
'overlay023/ov23_02253598.c',
|
||||
'overlay023/underground_text_printer.c',
|
||||
|
|
|
|||
|
|
@ -1006,7 +1006,7 @@ void ov23_0223E9D4(int param0, int param1, void *param2, void *param3)
|
|||
Unk_ov23_02257740->unk_A24 = UndergroundTextPrinter_PrintText(CommManUnderground_GetCommonTextPrinter(), UndergroundCommon_Text_WallIsBulging, FALSE, NULL);
|
||||
Unk_ov23_02257740->unk_8C8 = SysTask_Start(ov23_0223EA38, Unk_ov23_02257740, 0);
|
||||
|
||||
ov23_022431EC(NULL, Unk_ov23_02257740->unk_8C8, ov23_0223E99C);
|
||||
CommManUnderground_SetCurrentSysTask(NULL, Unk_ov23_02257740->unk_8C8, ov23_0223E99C);
|
||||
CommPlayerMan_PauseFieldSystem();
|
||||
}
|
||||
}
|
||||
|
|
@ -1037,7 +1037,7 @@ static void ov23_0223EA38(SysTask *param0, void *param1)
|
|||
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetCommonTextPrinter());
|
||||
SysTask_Done(param0);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
|
||||
Unk_ov23_02257740->unk_8C8 = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/map_object.h"
|
||||
|
||||
#include "struct_decls/struct_02029894_decl.h"
|
||||
#include "struct_decls/struct_02061AB4_decl.h"
|
||||
#include "struct_defs/underground.h"
|
||||
|
|
@ -10,17 +12,16 @@
|
|||
#include "field/field_system.h"
|
||||
#include "overlay005/land_data.h"
|
||||
#include "overlay005/ov5_021EAFA4.h"
|
||||
#include "overlay023/funcptr_ov23_022431EC.h"
|
||||
#include "overlay023/ov23_0223E140.h"
|
||||
#include "overlay023/ov23_0224A1D0.h"
|
||||
#include "overlay023/ov23_0224B05C.h"
|
||||
#include "overlay023/ov23_0225128C.h"
|
||||
#include "overlay023/ov23_022521F0.h"
|
||||
#include "overlay023/ov23_02253598.h"
|
||||
#include "overlay023/struct_ov23_02241A80.h"
|
||||
#include "overlay023/struct_ov23_02241A88.h"
|
||||
#include "overlay023/struct_ov23_02253598_decl.h"
|
||||
#include "overlay023/underground_menu.h"
|
||||
#include "overlay023/underground_pc.h"
|
||||
#include "overlay023/underground_spheres.h"
|
||||
#include "overlay023/underground_text_printer.h"
|
||||
#include "overlay023/underground_traps.h"
|
||||
|
|
@ -61,9 +62,9 @@ typedef struct StoredListMenuPos {
|
|||
} StoredListMenuPos;
|
||||
|
||||
typedef struct {
|
||||
void *unk_00;
|
||||
SysTask *unk_04;
|
||||
UnkFuncPtr_ov23_022431EC unk_08;
|
||||
void *currentSysTaskCtx;
|
||||
SysTask *currentSysTask;
|
||||
EndSysTaskFunc endCurrentSysTask;
|
||||
FieldSystem *fieldSystem;
|
||||
UnkStruct_ov23_02253598 *unk_10;
|
||||
SysTask *unk_14;
|
||||
|
|
@ -91,7 +92,7 @@ typedef struct {
|
|||
u8 unk_13D[8];
|
||||
u8 unk_145;
|
||||
u8 unk_146;
|
||||
u8 unk_147;
|
||||
u8 activeRadar;
|
||||
u8 unk_148;
|
||||
u8 unk_149;
|
||||
u8 unk_14A;
|
||||
|
|
@ -135,7 +136,7 @@ static void CommManUnderground_Init(CommManUnderground *param0, FieldSystem *fie
|
|||
sCommManUnderground->unk_1C.x = 0;
|
||||
sCommManUnderground->unk_1C.z = 0;
|
||||
sCommManUnderground->unk_14B = 0;
|
||||
sCommManUnderground->unk_147 = 1;
|
||||
sCommManUnderground->activeRadar = 1;
|
||||
sCommManUnderground->commonTextPrinter = UndergroundTextPrinter_New(TEXT_BANK_UNDERGROUND_COMMON, HEAP_ID_33, fieldSystem->bgConfig, renderDelay, 500);
|
||||
sCommManUnderground->captureFlagTextPrinter = UndergroundTextPrinter_New(TEXT_BANK_UNDERGROUND_CAPTURE_FLAG, HEAP_ID_33, fieldSystem->bgConfig, renderDelay, 0);
|
||||
sCommManUnderground->miscTextPrinter = UndergroundTextPrinter_New(TEXT_BANK_UNDERGROUND_NPCS, HEAP_ID_33, fieldSystem->bgConfig, renderDelay, 1000);
|
||||
|
|
@ -324,7 +325,7 @@ BOOL ov23_0224240C(int x, int z)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
if (ov23_022512D4(&coordinates, -1) != 0xff) {
|
||||
if (UndergroundPC_GetPCAtCoordinates(&coordinates, DIR_NONE) != PC_NONE) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -682,7 +683,7 @@ void ov23_022428D8(int param0, int param1, void *param2, void *param3)
|
|||
return;
|
||||
}
|
||||
|
||||
if (ov23_02251324(param0, &v2)) {
|
||||
if (UndergroundPC_TryUsePC(param0, &v2)) {
|
||||
sub_02059058(param0, 0);
|
||||
return;
|
||||
}
|
||||
|
|
@ -910,7 +911,7 @@ int ov23_02242E78(int param0)
|
|||
if (param0 < 16) {
|
||||
v1 = param0;
|
||||
|
||||
switch (sCommManUnderground->unk_147) {
|
||||
switch (sCommManUnderground->activeRadar) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
|
|
@ -941,7 +942,7 @@ int ov23_02242EE0(int param0)
|
|||
if (param0 < 16) {
|
||||
v1 = param0;
|
||||
|
||||
switch (sCommManUnderground->unk_147) {
|
||||
switch (sCommManUnderground->activeRadar) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
|
|
@ -969,7 +970,7 @@ int ov23_02242F48(int param0)
|
|||
{
|
||||
if (sCommManUnderground) {
|
||||
if (param0 < 16) {
|
||||
switch (sCommManUnderground->unk_147) {
|
||||
switch (sCommManUnderground->activeRadar) {
|
||||
case 1:
|
||||
if (param0 < 8) {
|
||||
return 12;
|
||||
|
|
@ -995,27 +996,27 @@ int ov23_02242F48(int param0)
|
|||
|
||||
void ov23_02242FA8(void)
|
||||
{
|
||||
sCommManUnderground->unk_147 = 0;
|
||||
sCommManUnderground->activeRadar = 0;
|
||||
}
|
||||
|
||||
void ov23_02242FBC(void)
|
||||
{
|
||||
sCommManUnderground->unk_147 = 1;
|
||||
sCommManUnderground->activeRadar = 1;
|
||||
}
|
||||
|
||||
void ov23_02242FD0(void)
|
||||
void CommManUnderground_SetSphereRadarActive(void)
|
||||
{
|
||||
sCommManUnderground->unk_147 = 2;
|
||||
sCommManUnderground->activeRadar = 2;
|
||||
}
|
||||
|
||||
void ov23_02242FE4(void)
|
||||
void CommManUnderground_SetTrapRadarActive(void)
|
||||
{
|
||||
sCommManUnderground->unk_147 = 4;
|
||||
sCommManUnderground->activeRadar = 4;
|
||||
}
|
||||
|
||||
void ov23_02242FF8(void)
|
||||
void CommManUnderground_SetTreasureRadarActive(void)
|
||||
{
|
||||
sCommManUnderground->unk_147 = 3;
|
||||
sCommManUnderground->activeRadar = 3;
|
||||
}
|
||||
|
||||
void ov23_0224300C(int param0, int param1)
|
||||
|
|
@ -1132,27 +1133,27 @@ void ov23_022431C4(int param0, int param1, void *param2, void *param3)
|
|||
}
|
||||
}
|
||||
|
||||
void ov23_022431EC(void *param0, SysTask *param1, UnkFuncPtr_ov23_022431EC param2)
|
||||
void CommManUnderground_SetCurrentSysTask(void *ctx, SysTask *sysTask, EndSysTaskFunc endFunc)
|
||||
{
|
||||
sCommManUnderground->unk_00 = param0;
|
||||
sCommManUnderground->unk_04 = param1;
|
||||
sCommManUnderground->unk_08 = param2;
|
||||
sCommManUnderground->currentSysTaskCtx = ctx;
|
||||
sCommManUnderground->currentSysTask = sysTask;
|
||||
sCommManUnderground->endCurrentSysTask = endFunc;
|
||||
}
|
||||
|
||||
void ov23_02243204(void)
|
||||
void CommManUnderground_ClearCurrentSysTaskInfo(void)
|
||||
{
|
||||
sCommManUnderground->unk_00 = NULL;
|
||||
sCommManUnderground->unk_04 = NULL;
|
||||
sCommManUnderground->unk_08 = NULL;
|
||||
sCommManUnderground->currentSysTaskCtx = NULL;
|
||||
sCommManUnderground->currentSysTask = NULL;
|
||||
sCommManUnderground->endCurrentSysTask = NULL;
|
||||
}
|
||||
|
||||
BOOL ov23_0224321C(void)
|
||||
{
|
||||
BOOL v0 = 0;
|
||||
|
||||
if (sCommManUnderground->unk_04) {
|
||||
sCommManUnderground->unk_08(sCommManUnderground->unk_04, sCommManUnderground->unk_00);
|
||||
ov23_02243204();
|
||||
if (sCommManUnderground->currentSysTask) {
|
||||
sCommManUnderground->endCurrentSysTask(sCommManUnderground->currentSysTask, sCommManUnderground->currentSysTaskCtx);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
v0 = 1;
|
||||
}
|
||||
|
||||
|
|
@ -1171,7 +1172,7 @@ BOOL ov23_02243298(int param0)
|
|||
{
|
||||
int v0, v1;
|
||||
|
||||
if (sCommManUnderground->unk_04) {
|
||||
if (sCommManUnderground->currentSysTask) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ void ov23_02249A74(void)
|
|||
|
||||
static void ov23_02249A88(void)
|
||||
{
|
||||
if (!sub_02033DFC()) {
|
||||
if (!CommServerClient_IsInClosedSecretBase()) {
|
||||
ov23_0224C198();
|
||||
ov23_02249C24(ov23_02249C34, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ static void ov23_0224A204(int param0)
|
|||
CommPlayerManager *commPlayerMan = CommPlayerMan_Get();
|
||||
|
||||
if (param0 == CommSys_CurNetId()) {
|
||||
if (commPlayerMan->unk_290[param0] != NULL) {
|
||||
if (commPlayerMan->heldFlagOwnerInfo[param0] != NULL) {
|
||||
GameRecords_IncrementTrainerScore(SaveData_GetGameRecords(commPlayerMan->fieldSystem->saveData), TRAINER_SCORE_EVENT_UNDERGROUND_CAPTURE_FLAG);
|
||||
|
||||
if (commPlayerMan->unk_27C[5 - 1]) {
|
||||
|
|
@ -92,10 +92,10 @@ static void ov23_0224A204(int param0)
|
|||
commPlayerMan->unk_27C[v0] = commPlayerMan->unk_27C[v0 - 1];
|
||||
}
|
||||
|
||||
commPlayerMan->unk_27C[0] = commPlayerMan->unk_290[param0];
|
||||
sub_02028830(SaveData_GetUnderground(FieldSystem_GetSaveData(commPlayerMan->fieldSystem)), commPlayerMan->unk_290[param0]);
|
||||
commPlayerMan->unk_27C[0] = commPlayerMan->heldFlagOwnerInfo[param0];
|
||||
sub_02028830(SaveData_GetUnderground(FieldSystem_GetSaveData(commPlayerMan->fieldSystem)), commPlayerMan->heldFlagOwnerInfo[param0]);
|
||||
|
||||
commPlayerMan->unk_290[param0] = NULL;
|
||||
commPlayerMan->heldFlagOwnerInfo[param0] = NULL;
|
||||
commPlayerMan->unk_14A[param0].unk_20 = 0xff;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -107,14 +107,14 @@ static BOOL ov23_0224A294(int param0, int param1)
|
|||
{
|
||||
CommPlayerManager *v0 = CommPlayerMan_Get();
|
||||
|
||||
if ((v0->unk_290[param0] == NULL) && (v0->unk_290[param1] != NULL)) {
|
||||
v0->unk_290[param0] = v0->unk_290[param1];
|
||||
v0->unk_290[param1] = NULL;
|
||||
if ((v0->heldFlagOwnerInfo[param0] == NULL) && (v0->heldFlagOwnerInfo[param1] != NULL)) {
|
||||
v0->heldFlagOwnerInfo[param0] = v0->heldFlagOwnerInfo[param1];
|
||||
v0->heldFlagOwnerInfo[param1] = NULL;
|
||||
v0->emote[param0] = EMOTE_FLAG;
|
||||
v0->emote[param1] = EMOTE_NONE;
|
||||
v0->unk_14A[param0].unk_20 = param0;
|
||||
v0->unk_14A[param1].unk_20 = 0xff;
|
||||
TrainerInfo_Copy(v0->unk_290[param0], (TrainerInfo *)&v0->unk_14A[param0].unk_00);
|
||||
TrainerInfo_Copy(v0->heldFlagOwnerInfo[param0], (TrainerInfo *)&v0->unk_14A[param0].unk_00);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ void ov23_0224A348(int param0, int param1, void *param2, void *param3)
|
|||
v0.unk_01 = param0;
|
||||
|
||||
if (commPlayerMan->unk_E2[param0] && !ov23_0224ACC0(param0)) {
|
||||
if (ov23_0224AEA4(param0)) {
|
||||
if (ov23_IsPlayerHoldingFlag(param0)) {
|
||||
v0.unk_00 = 3;
|
||||
} else {
|
||||
v0.unk_00 = 1;
|
||||
|
|
@ -327,12 +327,12 @@ BOOL ov23_0224A658(int param0, int param1, BOOL param2)
|
|||
|
||||
if (param2 & 0x1) {
|
||||
v0.unk_00 = 11;
|
||||
} else if (ov23_0224AEA4(param0)) {
|
||||
} else if (ov23_IsPlayerHoldingFlag(param0)) {
|
||||
v0.unk_00 = 11;
|
||||
} else {
|
||||
if (param1 == 0xff) {
|
||||
return 0;
|
||||
} else if (!ov23_0224AEA4(param1)) {
|
||||
} else if (!ov23_IsPlayerHoldingFlag(param1)) {
|
||||
return 0;
|
||||
} else {
|
||||
v0.unk_00 = 5;
|
||||
|
|
@ -353,7 +353,7 @@ BOOL ov23_0224A6B8(int param0)
|
|||
{
|
||||
UnkStruct_ov23_0224A570 v0;
|
||||
|
||||
if (ov23_0224AEA4(param0)) {
|
||||
if (ov23_IsPlayerHoldingFlag(param0)) {
|
||||
v0.unk_00 = 12;
|
||||
} else {
|
||||
return 0;
|
||||
|
|
@ -399,7 +399,7 @@ void ov23_0224A77C(int param0, int param1, void *param2, void *param3)
|
|||
|
||||
switch (v1->unk_00) {
|
||||
case 0:
|
||||
if (commPlayerMan->unk_290[v1->unk_01]) {
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v1->unk_01]) {
|
||||
ov23_0224AE60(v1->unk_01);
|
||||
ov23_ClearEmote(v1->unk_01);
|
||||
|
||||
|
|
@ -416,7 +416,7 @@ void ov23_0224A77C(int param0, int param1, void *param2, void *param3)
|
|||
return;
|
||||
}
|
||||
|
||||
if (commPlayerMan->unk_290[v1->unk_02] == NULL) {
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v1->unk_02] == NULL) {
|
||||
if (v1->unk_01 == CommSys_CurNetId()) {
|
||||
CommPlayerMan_ResumeFieldSystem();
|
||||
}
|
||||
|
|
@ -424,7 +424,7 @@ void ov23_0224A77C(int param0, int param1, void *param2, void *param3)
|
|||
return;
|
||||
}
|
||||
|
||||
if (TrainerInfo_Equals(commPlayerMan->unk_290[v1->unk_02], CommInfo_TrainerInfo(v1->unk_01)) == 1) {
|
||||
if (TrainerInfo_Equals(commPlayerMan->heldFlagOwnerInfo[v1->unk_02], CommInfo_TrainerInfo(v1->unk_01)) == 1) {
|
||||
ov23_0224AE60(v1->unk_02);
|
||||
|
||||
if (v1->unk_01 == CommSys_CurNetId()) {
|
||||
|
|
@ -475,8 +475,8 @@ void ov23_0224A77C(int param0, int param1, void *param2, void *param3)
|
|||
UndergroundRecord_IncrementCapturedFlagCount(undergroundRecord);
|
||||
SystemFlag_SetDeliveredStolenFlag(SaveData_GetVarsFlags(commPlayerMan->fieldSystem->saveData));
|
||||
|
||||
if (commPlayerMan->unk_290[v1->unk_01]) {
|
||||
FieldSystem_SaveTVEpisodeSegment_CaptureTheFlagDigest_TakeFlag(commPlayerMan->fieldSystem, commPlayerMan->unk_290[v1->unk_01]);
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v1->unk_01]) {
|
||||
FieldSystem_SaveTVEpisodeSegment_CaptureTheFlagDigest_TakeFlag(commPlayerMan->fieldSystem, commPlayerMan->heldFlagOwnerInfo[v1->unk_01]);
|
||||
|
||||
if (commPlayerMan->unk_2B2 != 0xffff) {
|
||||
commPlayerMan->unk_2B2++;
|
||||
|
|
@ -495,8 +495,8 @@ void ov23_0224A77C(int param0, int param1, void *param2, void *param3)
|
|||
Sound_FadeOutAndPlayBGM(4, SEQ_TANKOU, 60, 0, 0xff, NULL);
|
||||
}
|
||||
|
||||
if (commPlayerMan->unk_290[v1->unk_01]) {
|
||||
if (TrainerInfo_Equals(commPlayerMan->unk_290[v1->unk_01], CommInfo_TrainerInfo(CommSys_CurNetId())) == 1) {
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v1->unk_01]) {
|
||||
if (TrainerInfo_Equals(commPlayerMan->heldFlagOwnerInfo[v1->unk_01], CommInfo_TrainerInfo(CommSys_CurNetId())) == 1) {
|
||||
FieldSystem_SaveTVEpisodeSegment_CaptureTheFlagDigest_LoseFlag(commPlayerMan->fieldSystem, CommInfo_TrainerInfo(v1->unk_01));
|
||||
}
|
||||
}
|
||||
|
|
@ -528,8 +528,8 @@ void ov23_0224AAB0(void)
|
|||
|
||||
commPlayerMan->unk_2B9 = 0;
|
||||
|
||||
if (commPlayerMan->unk_290[CommSys_CurNetId()]) {
|
||||
CommSys_SendDataFixedSize(91, commPlayerMan->unk_290[CommSys_CurNetId()]);
|
||||
if (commPlayerMan->heldFlagOwnerInfo[CommSys_CurNetId()]) {
|
||||
CommSys_SendDataFixedSize(91, commPlayerMan->heldFlagOwnerInfo[CommSys_CurNetId()]);
|
||||
} else {
|
||||
TrainerInfo *v0 = TrainerInfo_New(HEAP_ID_COMMUNICATION);
|
||||
Strbuf *v1 = Strbuf_Init(20, HEAP_ID_COMMUNICATION);
|
||||
|
|
@ -591,12 +591,12 @@ void ov23_0224ABC4(int param0, int param1, void *param2, void *param3)
|
|||
if (commPlayerMan) {
|
||||
v3 = v1->unk_20;
|
||||
|
||||
if (commPlayerMan->unk_290[v3]) {
|
||||
Heap_Free(commPlayerMan->unk_290[v3]);
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v3]) {
|
||||
Heap_Free(commPlayerMan->heldFlagOwnerInfo[v3]);
|
||||
}
|
||||
|
||||
commPlayerMan->unk_290[v3] = TrainerInfo_New(HEAP_ID_COMMUNICATION);
|
||||
TrainerInfo_Copy((TrainerInfo *)v1->unk_00, commPlayerMan->unk_290[v3]);
|
||||
commPlayerMan->heldFlagOwnerInfo[v3] = TrainerInfo_New(HEAP_ID_COMMUNICATION);
|
||||
TrainerInfo_Copy((TrainerInfo *)v1->unk_00, commPlayerMan->heldFlagOwnerInfo[v3]);
|
||||
commPlayerMan->emote[v3] = EMOTE_FLAG;
|
||||
}
|
||||
}
|
||||
|
|
@ -631,9 +631,9 @@ void ov23_0224AC4C(void)
|
|||
int v3 = CommSys_CurNetId();
|
||||
CommPlayerManager *commPlayerMan = CommPlayerMan_Get();
|
||||
|
||||
if (commPlayerMan->unk_290[v3]) {
|
||||
v0 = commPlayerMan->unk_290[v3];
|
||||
commPlayerMan->unk_290[v3] = NULL;
|
||||
if (commPlayerMan->heldFlagOwnerInfo[v3]) {
|
||||
v0 = commPlayerMan->heldFlagOwnerInfo[v3];
|
||||
commPlayerMan->heldFlagOwnerInfo[v3] = NULL;
|
||||
commPlayerMan->emote[v3] = EMOTE_NONE;
|
||||
commPlayerMan->unk_14A[v3].unk_20 = 0xff;
|
||||
}
|
||||
|
|
@ -643,7 +643,7 @@ void ov23_0224AC4C(void)
|
|||
}
|
||||
|
||||
if (v0) {
|
||||
commPlayerMan->unk_290[0] = v0;
|
||||
commPlayerMan->heldFlagOwnerInfo[0] = v0;
|
||||
commPlayerMan->emote[0] = EMOTE_FLAG;
|
||||
|
||||
TrainerInfo_Copy(v0, (TrainerInfo *)&commPlayerMan->unk_14A[0].unk_00);
|
||||
|
|
@ -764,10 +764,10 @@ BOOL ov23_0224AE60(int param0)
|
|||
{
|
||||
CommPlayerManager *v0 = CommPlayerMan_Get();
|
||||
|
||||
if (v0->unk_290[param0] != NULL) {
|
||||
Heap_Free(v0->unk_290[param0]);
|
||||
if (v0->heldFlagOwnerInfo[param0] != NULL) {
|
||||
Heap_Free(v0->heldFlagOwnerInfo[param0]);
|
||||
|
||||
v0->unk_290[param0] = NULL;
|
||||
v0->heldFlagOwnerInfo[param0] = NULL;
|
||||
v0->emote[param0] = EMOTE_NONE;
|
||||
v0->unk_14A[param0].unk_20 = 0xff;
|
||||
|
||||
|
|
@ -777,43 +777,43 @@ BOOL ov23_0224AE60(int param0)
|
|||
return 0;
|
||||
}
|
||||
|
||||
BOOL ov23_0224AEA4(int param0)
|
||||
BOOL ov23_IsPlayerHoldingFlag(int netID)
|
||||
{
|
||||
CommPlayerManager *v0 = CommPlayerMan_Get();
|
||||
CommPlayerManager *commPlayerMan = CommPlayerMan_Get();
|
||||
|
||||
if (v0->unk_290[param0] != NULL) {
|
||||
return 1;
|
||||
if (commPlayerMan->heldFlagOwnerInfo[netID] != NULL) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL ov23_0224AEC4(int param0, int param1)
|
||||
BOOL ov23_TryTakeFlag(int flagTakerNetID, int flagOwnerNetID)
|
||||
{
|
||||
CommPlayerManager *v0 = CommPlayerMan_Get();
|
||||
CommPlayerManager *commPlayerMan = CommPlayerMan_Get();
|
||||
|
||||
if (v0->unk_290[param0] == NULL) {
|
||||
TrainerInfo *v1 = CommInfo_TrainerInfo(param1);
|
||||
if (commPlayerMan->heldFlagOwnerInfo[flagTakerNetID] == NULL) {
|
||||
TrainerInfo *trainerInfo = CommInfo_TrainerInfo(flagOwnerNetID);
|
||||
|
||||
if (v1) {
|
||||
v0->unk_290[param0] = TrainerInfo_New(HEAP_ID_COMMUNICATION);
|
||||
TrainerInfo_Copy(v1, v0->unk_290[param0]);
|
||||
if (trainerInfo) {
|
||||
commPlayerMan->heldFlagOwnerInfo[flagTakerNetID] = TrainerInfo_New(HEAP_ID_COMMUNICATION);
|
||||
TrainerInfo_Copy(trainerInfo, commPlayerMan->heldFlagOwnerInfo[flagTakerNetID]);
|
||||
|
||||
v0->emote[param0] = EMOTE_FLAG;
|
||||
v0->unk_14A[param0].unk_20 = param0;
|
||||
commPlayerMan->emote[flagTakerNetID] = EMOTE_FLAG;
|
||||
commPlayerMan->unk_14A[flagTakerNetID].unk_20 = flagTakerNetID;
|
||||
|
||||
TrainerInfo_Copy(v1, (TrainerInfo *)&v0->unk_14A[param0].unk_00);
|
||||
TrainerInfo_Copy(trainerInfo, (TrainerInfo *)&commPlayerMan->unk_14A[flagTakerNetID].unk_00);
|
||||
|
||||
if (param1 == CommSys_CurNetId()) {
|
||||
UndergroundRecord *v2 = SaveData_UndergroundRecord(v0->fieldSystem->saveData);
|
||||
sub_020297B4(v2);
|
||||
if (flagOwnerNetID == CommSys_CurNetId()) {
|
||||
UndergroundRecord *undergroundRecord = SaveData_UndergroundRecord(commPlayerMan->fieldSystem->saveData);
|
||||
UndergroundRecord_IncrementTimesFlagTaken(undergroundRecord);
|
||||
}
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ov23_0224AF4C(int netID)
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ static void ov23_0224B0DC(int param0, UnkStruct_ov23_0224B098 *param1)
|
|||
const int v1 = 32;
|
||||
int v2;
|
||||
|
||||
if (sub_02033DFC()) {
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
param1->unk_00 = v0.unk_00;
|
||||
param1->unk_02 = v0.unk_02;
|
||||
return;
|
||||
|
|
@ -810,7 +810,7 @@ static void ov23_0224BA48(SysTask *param0, void *param1)
|
|||
SysTask_Done(param0);
|
||||
Heap_Free(v0);
|
||||
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
}
|
||||
|
||||
static void ov23_0224BA6C(SysTask *param0, void *param1)
|
||||
|
|
@ -830,7 +830,7 @@ static void ov23_0224BA6C(SysTask *param0, void *param1)
|
|||
SysTask_Done(param0);
|
||||
Heap_Free(v0);
|
||||
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
ov23_0224DC24();
|
||||
}
|
||||
|
||||
|
|
@ -844,7 +844,7 @@ static void ov23_0224BAAC(SysTask *param0, void *param1)
|
|||
|
||||
switch (v0->unk_0C) {
|
||||
case 0:
|
||||
if (sub_02033DFC()) {
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
v5 = 47;
|
||||
v0->unk_0C = 3;
|
||||
} else {
|
||||
|
|
@ -918,7 +918,7 @@ static void ov23_0224BAAC(SysTask *param0, void *param1)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!sub_02033DFC()) {
|
||||
if (!CommServerClient_IsInClosedSecretBase()) {
|
||||
if ((v0->unk_2C < (7 + 1)) && !CommSys_IsPlayerConnected(v0->unk_2C) && (CommSys_CurNetId() != 0)) {
|
||||
v7 = 1;
|
||||
}
|
||||
|
|
@ -950,7 +950,7 @@ static void ov23_0224BC5C(FieldSystem *fieldSystem, int param1, int param2, int
|
|||
v0->fieldSystem = fieldSystem;
|
||||
v0->unk_08 = SysTask_Start(ov23_0224BAAC, v0, 100);
|
||||
|
||||
ov23_022431EC(v0, v0->unk_08, ov23_0224BA6C);
|
||||
CommManUnderground_SetCurrentSysTask(v0, v0->unk_08, ov23_0224BA6C);
|
||||
CommPlayerMan_PauseFieldSystem();
|
||||
}
|
||||
|
||||
|
|
@ -1086,7 +1086,7 @@ static void ov23_0224BE28(SysTask *param0, void *param1)
|
|||
if (v6 == 0) {
|
||||
v0->unk_04 = NULL;
|
||||
|
||||
if (ov23_0224AEA4(v0->unk_2C) || (ov23_0224BD1C(v0->unk_2C, 0) > 0)) {
|
||||
if (ov23_IsPlayerHoldingFlag(v0->unk_2C) || (ov23_0224BD1C(v0->unk_2C, 0) > 0)) {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCommonTextPrinter(), 44, FALSE, NULL);
|
||||
v0->unk_0C = 3;
|
||||
} else {
|
||||
|
|
@ -1126,7 +1126,7 @@ static void ov23_0224BE28(SysTask *param0, void *param1)
|
|||
}
|
||||
break;
|
||||
case 9:
|
||||
if (sub_02033DFC() && (CommSys_CurNetId() == 0)) {
|
||||
if (CommServerClient_IsInClosedSecretBase() && (CommSys_CurNetId() == 0)) {
|
||||
u8 v9 = 1;
|
||||
|
||||
CommSys_SendDataFixedSize(86, &v9);
|
||||
|
|
@ -1182,7 +1182,7 @@ static void ov23_0224C090(FieldSystem *fieldSystem, int param1, int param2, int
|
|||
|
||||
ov23_0224DC08();
|
||||
v0->unk_08 = SysTask_Start(ov23_0224BE28, v0, 100);
|
||||
ov23_022431EC(v0, v0->unk_08, ov23_0224BA6C);
|
||||
CommManUnderground_SetCurrentSysTask(v0, v0->unk_08, ov23_0224BA6C);
|
||||
|
||||
CommPlayerMan_PauseFieldSystem();
|
||||
}
|
||||
|
|
@ -1623,7 +1623,7 @@ static BOOL ov23_0224C790(FieldTask *param0)
|
|||
break;
|
||||
}
|
||||
|
||||
if (sub_02033DFC() && !Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
if (CommServerClient_IsInClosedSecretBase() && !Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
v1->unk_2E = 0;
|
||||
} else {
|
||||
v1->unk_2E = 1;
|
||||
|
|
@ -1655,7 +1655,7 @@ static BOOL ov23_0224C790(FieldTask *param0)
|
|||
v1->unk_29++;
|
||||
|
||||
if (v1->unk_29 > 10) {
|
||||
if (!sub_02033DFC() || !v1->unk_2E) {
|
||||
if (!CommServerClient_IsInClosedSecretBase() || !v1->unk_2E) {
|
||||
v1->unk_0C = 13;
|
||||
} else {
|
||||
v1->unk_0C = 11;
|
||||
|
|
@ -1680,7 +1680,7 @@ static BOOL ov23_0224C790(FieldTask *param0)
|
|||
}
|
||||
break;
|
||||
case 13:
|
||||
if (sub_02033DFC() && !Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
if (CommServerClient_IsInClosedSecretBase() && !Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
ov23_02249AA4();
|
||||
} else {
|
||||
ov23_02249B60();
|
||||
|
|
@ -1690,7 +1690,7 @@ static BOOL ov23_0224C790(FieldTask *param0)
|
|||
CommPlayerMan_ResumeFieldSystem();
|
||||
Heap_Free(v1);
|
||||
|
||||
if (sub_02033DFC() && Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
if (CommServerClient_IsInClosedSecretBase() && Underground_AreCoordinatesInSecretBase(v1->unk_1C, v1->unk_20)) {
|
||||
ov23_02242FA8();
|
||||
} else {
|
||||
ov23_02242FBC();
|
||||
|
|
@ -1827,7 +1827,7 @@ static void ov23_0224CB1C(SysTask *param0, void *param1)
|
|||
v0->unk_0C = 10;
|
||||
break;
|
||||
case 10:
|
||||
if (sub_02033DFC() && (CommSys_CurNetId() == 0)) {
|
||||
if (CommServerClient_IsInClosedSecretBase() && (CommSys_CurNetId() == 0)) {
|
||||
u8 v10 = 2;
|
||||
|
||||
if (v0->unk_12) {
|
||||
|
|
@ -1840,7 +1840,7 @@ static void ov23_0224CB1C(SysTask *param0, void *param1)
|
|||
SysTask_Done(param0);
|
||||
Heap_Free(v0);
|
||||
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1860,7 +1860,7 @@ static void ov23_0224CB1C(SysTask *param0, void *param1)
|
|||
SysTask_Done(param0);
|
||||
Heap_Free(v0);
|
||||
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
ov23_0224DC24();
|
||||
}
|
||||
}
|
||||
|
|
@ -1951,7 +1951,7 @@ static void ov23_0224CE94(SysTask *param0, void *param1)
|
|||
SysTask_Done(param0);
|
||||
Heap_Free(v0);
|
||||
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
CommPlayerMan_ResumeFieldSystem();
|
||||
ov23_0224DC24();
|
||||
}
|
||||
|
|
@ -1970,7 +1970,7 @@ static void ov23_0224CEC8(void)
|
|||
v0->fieldSystem = Unk_ov23_022577AC->fieldSystem;
|
||||
v0->unk_04 = SysTask_Start(ov23_0224CB1C, v0, 100);
|
||||
|
||||
ov23_022431EC(v0, v0->unk_04, ov23_0224CE94);
|
||||
CommManUnderground_SetCurrentSysTask(v0, v0->unk_04, ov23_0224CE94);
|
||||
}
|
||||
|
||||
void ov23_0224CF18(int param0, int param1, void *param2, void *param3)
|
||||
|
|
@ -2383,7 +2383,7 @@ static void ov23_0224D5BC(SysTask *param0, void *param1)
|
|||
case 4:
|
||||
Heap_Free(param1);
|
||||
SysTask_Done(param0);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2414,7 +2414,7 @@ void ov23_0224D6AC(int param0, int param1, void *param2, void *param3)
|
|||
v3->unk_05 = v1[1];
|
||||
v2 = SysTask_Start(ov23_0224D5BC, v3, 100);
|
||||
|
||||
ov23_022431EC(v3, v2, ov23_0224D5A8);
|
||||
CommManUnderground_SetCurrentSysTask(v3, v2, ov23_0224D5A8);
|
||||
} else {
|
||||
(void)0;
|
||||
}
|
||||
|
|
@ -2678,7 +2678,7 @@ void ov23_0224DAD0(int param0)
|
|||
return;
|
||||
}
|
||||
|
||||
if (sub_02033DFC()) {
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,960 +0,0 @@
|
|||
#include "overlay023/ov23_0225128C.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/underground.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "overlay023/ov23_0223E140.h"
|
||||
#include "overlay023/ov23_02241F74.h"
|
||||
#include "overlay023/ov23_0224A1D0.h"
|
||||
#include "overlay023/ov23_0224B05C.h"
|
||||
#include "overlay023/ov23_022521F0.h"
|
||||
#include "overlay023/ov23_02253598.h"
|
||||
#include "overlay023/ov23_02254A14.h"
|
||||
#include "overlay023/underground_item_list_menu.h"
|
||||
#include "overlay023/underground_menu.h"
|
||||
#include "overlay023/underground_spheres.h"
|
||||
#include "overlay023/underground_text_printer.h"
|
||||
#include "overlay023/underground_traps.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "brightness_controller.h"
|
||||
#include "camera.h"
|
||||
#include "comm_player_manager.h"
|
||||
#include "communication_information.h"
|
||||
#include "communication_system.h"
|
||||
#include "field_system.h"
|
||||
#include "field_task.h"
|
||||
#include "heap.h"
|
||||
#include "list_menu.h"
|
||||
#include "location.h"
|
||||
#include "menu.h"
|
||||
#include "message.h"
|
||||
#include "player_avatar.h"
|
||||
#include "render_window.h"
|
||||
#include "save_player.h"
|
||||
#include "screen_fade.h"
|
||||
#include "scroll_prompts.h"
|
||||
#include "sound_playback.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_list.h"
|
||||
#include "string_template.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "system.h"
|
||||
#include "system_flags.h"
|
||||
#include "unk_0202854C.h"
|
||||
#include "unk_02033200.h"
|
||||
#include "vars_flags.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk_00;
|
||||
u8 unk_01;
|
||||
u8 unk_02;
|
||||
} UnkStruct_ov23_022513B0;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
int unk_04;
|
||||
u8 unk_08;
|
||||
} UnkStruct_ov23_02251ACC;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
FieldSystem *fieldSystem;
|
||||
Menu *unk_08;
|
||||
UnkStruct_ov23_022513B0 unk_0C;
|
||||
SysTask *primaryWindow;
|
||||
} UnkStruct_ov23_02252038;
|
||||
|
||||
static void ov23_022520E8(FieldSystem *fieldSystem, UnkStruct_ov23_022513B0 *param1);
|
||||
static void ov23_02251F94(FieldSystem *fieldSystem);
|
||||
static void ov23_022521C8(UndergroundMenu *param0);
|
||||
|
||||
static const WindowTemplate Unk_ov23_022569C8 = {
|
||||
0x3,
|
||||
0x19,
|
||||
0xD,
|
||||
0x6,
|
||||
0x4,
|
||||
0xD,
|
||||
0x21F
|
||||
};
|
||||
|
||||
void UndergroundMenu_UpdateScrollPrompts(UndergroundMenu *menu, int listPos, int count, int maxDisplay)
|
||||
{
|
||||
if (count <= maxDisplay) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (listPos != 0) {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, TRUE);
|
||||
} else {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
}
|
||||
|
||||
if (listPos + maxDisplay != count) {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
|
||||
} else {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
}
|
||||
|
||||
ScrollPrompts_UpdateAnim(menu->scrollPrompts);
|
||||
}
|
||||
|
||||
// possibly check for secret base pc?
|
||||
// coordinates it's checking for are in the secret base range
|
||||
int ov23_022512D4(Coordinates *coordinates, int param1)
|
||||
{
|
||||
int v0;
|
||||
int x = coordinates->x;
|
||||
int z = coordinates->z;
|
||||
int v3 = 0;
|
||||
|
||||
if (param1 != -1) {
|
||||
if (param1 != 0) {
|
||||
return 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
if (z == 12) {
|
||||
v3 = 0;
|
||||
} else if (z == 12 + 32) {
|
||||
v3 = 8;
|
||||
} else {
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
if (x == 15 || x == 15 + 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < MAX_CONNECTED_PLAYERS; v0++) {
|
||||
if (x == 15 + 32 || x == 15 + 32 + 1) {
|
||||
return v0 + v3;
|
||||
}
|
||||
|
||||
x -= 32;
|
||||
}
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
BOOL ov23_02251324(int param0, Coordinates *param1)
|
||||
{
|
||||
int v0;
|
||||
int v1 = param1->x;
|
||||
int v2 = param1->z;
|
||||
UnkStruct_ov23_022513B0 v3;
|
||||
int v4 = ov23_022512D4(param1, CommPlayer_DirServer(param0));
|
||||
|
||||
if (CommPlayer_Dir(v4) == -1) {
|
||||
v4 = 0xff;
|
||||
}
|
||||
|
||||
if (v4 != 0xff) {
|
||||
sub_02059058(param0, 0);
|
||||
|
||||
v3.unk_01 = v4;
|
||||
v3.unk_00 = param0;
|
||||
v3.unk_02 = 0;
|
||||
|
||||
if (v4 != param0) {
|
||||
if (!ov23_0224AEA4(param0)) {
|
||||
v3.unk_02 = 1;
|
||||
} else {
|
||||
(void)0;
|
||||
}
|
||||
} else {
|
||||
if (ov23_0224AEA4(param0)) {
|
||||
u8 v5 = 3;
|
||||
ov23_0224A570(param0, 1, &v5, NULL);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub_02035B48(83, &v3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov23_022513A4(int param0)
|
||||
{
|
||||
CommPlayerMan_ResumeFieldSystemWithContextBit(PAUSE_BIT_6);
|
||||
}
|
||||
|
||||
void ov23_022513B0(int param0, int param1, void *param2, void *param3)
|
||||
{
|
||||
UnkStruct_ov23_022513B0 *v0 = param2;
|
||||
FieldSystem *fieldSystem = param3;
|
||||
|
||||
if (!CommSys_IsSendingMovementData()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (v0->unk_00 == CommSys_CurNetId()) {
|
||||
if (v0->unk_01 == CommSys_CurNetId()) {
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_ON);
|
||||
CommPlayerMan_PauseFieldSystem();
|
||||
ov23_02251F94(fieldSystem);
|
||||
} else {
|
||||
CommPlayerMan_PauseFieldSystemWithContextBit(PAUSE_BIT_6);
|
||||
|
||||
if (v0->unk_02) {
|
||||
ov23_022520E8(fieldSystem, v0);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCaptureFlagTextPrinter(), 9, TRUE, ov23_022513A4);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
(void)0;
|
||||
}
|
||||
|
||||
if (v0->unk_02) {
|
||||
(void)0;
|
||||
}
|
||||
}
|
||||
|
||||
int ov23_02251414(void)
|
||||
{
|
||||
return sizeof(UnkStruct_ov23_022513B0);
|
||||
}
|
||||
|
||||
static BOOL ov23_02251418(int param0, UndergroundMenu *param1)
|
||||
{
|
||||
Underground *v0 = SaveData_GetUnderground(FieldSystem_GetSaveData(param1->fieldSystem));
|
||||
int v1 = Underground_GetGoodAtSlotBag(v0, param0);
|
||||
|
||||
if (Underground_TryAddGoodPC(v0, v1)) {
|
||||
Underground_RemoveGoodAtSlotBag(v0, param0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ov23_0225144C(int param0, UndergroundMenu *param1)
|
||||
{
|
||||
Underground *v0 = SaveData_GetUnderground(FieldSystem_GetSaveData(param1->fieldSystem));
|
||||
int v1;
|
||||
|
||||
if (Underground_IsGoodAtSlotPlacedInBase(v0, param0)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
v1 = Underground_GetGoodAtSlotPC(v0, param0);
|
||||
|
||||
if (UndergroundInventory_TryAddGoodBag(v1)) {
|
||||
Underground_RemoveGoodAtSlotPC(v0, param0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov23_0225148C(ListMenu *param0, u32 param1, u8 param2)
|
||||
{
|
||||
UndergroundMenu *v0 = (UndergroundMenu *)ListMenu_GetAttribute(param0, 19);
|
||||
int v1 = param1;
|
||||
|
||||
if (param1 == 0xfffffffe) {
|
||||
v1 = 5;
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetMiscTextPrinter(), 6 + v1, FALSE, NULL);
|
||||
}
|
||||
|
||||
static void ov23_022514B0(ListMenu *param0, u32 param1, u8 param2)
|
||||
{
|
||||
UndergroundMenu *v0 = (UndergroundMenu *)ListMenu_GetAttribute(param0, 19);
|
||||
int v1 = param1;
|
||||
|
||||
if (param1 == 0xfffffffe) {
|
||||
v1 = 3;
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetMiscTextPrinter(), 44 + v1, FALSE, NULL);
|
||||
}
|
||||
|
||||
static BOOL ov23_022514D8(SysTask *param0, void *param1)
|
||||
{
|
||||
UndergroundMenu *v0 = param1;
|
||||
u32 v1;
|
||||
u16 v2, v3;
|
||||
|
||||
v1 = ListMenu_ProcessInput(v0->unk_48);
|
||||
ListMenu_GetListAndCursorPos(v0->unk_48, &v2, &v3);
|
||||
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_23, v3, v2);
|
||||
ov23_022521C8(v0);
|
||||
|
||||
switch (v1) {
|
||||
case 0xffffffff:
|
||||
return 0;
|
||||
case 0xfffffffe:
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_LOGOFF);
|
||||
v0->state = 2;
|
||||
break;
|
||||
case 0: {
|
||||
Underground *v4 = SaveData_GetUnderground(v0->fieldSystem->saveData);
|
||||
|
||||
if (0 == Underground_GetGoodsCountPC(v4)) {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 60, FALSE, NULL);
|
||||
v0->state = 23;
|
||||
} else if (sub_02033DFC()) {
|
||||
ov23_02243204();
|
||||
v0->state = 3;
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 56, FALSE, NULL);
|
||||
v0->state = 23;
|
||||
}
|
||||
} break;
|
||||
case 4:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v0->state = 8;
|
||||
break;
|
||||
case 3:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v0->state = 6;
|
||||
break;
|
||||
case 1:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v0->state = 17;
|
||||
break;
|
||||
case 2:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v0->state = 20;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void ov23_022515D8(UndergroundMenu *param0, int param1, int param2, CursorCallback cursorCallback, int param4)
|
||||
{
|
||||
ListMenuTemplate v0;
|
||||
int v1 = param2 + 1;
|
||||
BOOL v2 = 1;
|
||||
|
||||
if (BASE_FLAG_GOLD > UndergroundRecord_GetFlagRank(SaveData_UndergroundRecord(param0->fieldSystem->saveData))) {
|
||||
v2 = 0;
|
||||
v1 -= 1;
|
||||
}
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(param0);
|
||||
|
||||
param0->menuOptions = StringList_New(v1, HEAP_ID_FIELD1);
|
||||
|
||||
Window_Add(param0->fieldSystem->bgConfig, ¶m0->primaryWindow, 3, 17, 3, 14, v1 * 2, 13, 2);
|
||||
Window_DrawStandardFrame(¶m0->primaryWindow, 1, 1024 - (18 + 12) - 9, 11);
|
||||
|
||||
{
|
||||
MessageLoader *v3;
|
||||
int v4 = 0;
|
||||
|
||||
v3 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_BASE_PC, HEAP_ID_FIELD1);
|
||||
|
||||
for (v4 = 0; v4 < v1; v4++) {
|
||||
if (v4 == (v1 - 1)) {
|
||||
StringList_AddFromMessageBank(param0->menuOptions, v3, param1 + 5, 0xfffffffe);
|
||||
} else {
|
||||
StringList_AddFromMessageBank(param0->menuOptions, v3, param1 + v4, v4);
|
||||
}
|
||||
}
|
||||
|
||||
MessageLoader_Free(v3);
|
||||
}
|
||||
|
||||
MI_CpuCopy8(UndergroundTextPrinter_GetListMenuTemplate(), &v0, sizeof(ListMenuTemplate));
|
||||
|
||||
v0.count = v1;
|
||||
v0.maxDisplay = v1;
|
||||
v0.choices = param0->menuOptions;
|
||||
v0.window = ¶m0->primaryWindow;
|
||||
|
||||
if (cursorCallback) {
|
||||
v0.cursorCallback = cursorCallback;
|
||||
}
|
||||
|
||||
v0.parent = param0;
|
||||
UndergroundMenu_MoveListCursorPosInBounds(param0, v1, v0.count);
|
||||
param0->unk_48 = ListMenu_New(&v0, param0->listMenuListPos, param0->listMenuCursorPos, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
static void ov23_022516E8(UndergroundMenu *param0, int param1, int param2, CursorCallback cursorCallback, int param4)
|
||||
{
|
||||
ListMenuTemplate v0;
|
||||
int v1 = param2 + 1;
|
||||
BOOL v2 = 1;
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(param0);
|
||||
|
||||
param0->menuOptions = StringList_New(v1, HEAP_ID_FIELD1);
|
||||
|
||||
Window_Add(param0->fieldSystem->bgConfig, ¶m0->primaryWindow, 3, 17, 3, 14, v1 * 2, 13, (2 + 14 * 16));
|
||||
Window_DrawStandardFrame(¶m0->primaryWindow, 1, 1024 - (18 + 12) - 9, 11);
|
||||
|
||||
{
|
||||
MessageLoader *v3;
|
||||
int v4 = 0;
|
||||
|
||||
v3 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_BASE_PC, HEAP_ID_FIELD1);
|
||||
|
||||
for (v4 = 0; v4 < v1; v4++) {
|
||||
if (v4 == param2) {
|
||||
StringList_AddFromMessageBank(param0->menuOptions, v3, param1 + v4, 0xfffffffe);
|
||||
} else {
|
||||
StringList_AddFromMessageBank(param0->menuOptions, v3, param1 + v4, v4);
|
||||
}
|
||||
}
|
||||
|
||||
MessageLoader_Free(v3);
|
||||
}
|
||||
|
||||
MI_CpuCopy8(UndergroundTextPrinter_GetListMenuTemplate(), &v0, sizeof(ListMenuTemplate));
|
||||
|
||||
v0.count = param2 + 1;
|
||||
v0.maxDisplay = v1;
|
||||
v0.choices = param0->menuOptions;
|
||||
v0.window = ¶m0->primaryWindow;
|
||||
|
||||
if (cursorCallback) {
|
||||
v0.cursorCallback = cursorCallback;
|
||||
}
|
||||
|
||||
v0.parent = param0;
|
||||
UndergroundMenu_MoveListCursorPosInBounds(param0, v1, v0.count);
|
||||
param0->unk_48 = ListMenu_New(&v0, param0->listMenuListPos, param0->listMenuCursorPos, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
static BOOL ov23_022517E0(SysTask *param0, void *param1)
|
||||
{
|
||||
UndergroundMenu *v0 = param1;
|
||||
u32 v1;
|
||||
u16 v2, v3;
|
||||
|
||||
v1 = ListMenu_ProcessInput(v0->unk_48);
|
||||
ListMenu_GetListAndCursorPos(v0->unk_48, &v2, &v3);
|
||||
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_22, v3, v2);
|
||||
ov23_022521C8(v0);
|
||||
|
||||
switch (v1) {
|
||||
case 0xffffffff:
|
||||
return 0;
|
||||
case 0xfffffffe:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v0->state = 0;
|
||||
break;
|
||||
case 0:
|
||||
if (sub_02033DFC()) {
|
||||
v0->state = 11;
|
||||
} else {
|
||||
v0->state = 10;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_02033DFC()) {
|
||||
v0->state = 13;
|
||||
} else {
|
||||
v0->state = 12;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_02033DFC()) {
|
||||
v0->state = 15;
|
||||
} else {
|
||||
v0->state = 14;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
v0->state = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static BOOL ov23_02251894(SysTask *param0, void *param1)
|
||||
{
|
||||
UndergroundMenu *v0 = param1;
|
||||
u32 v1, v2;
|
||||
u16 v3, v4;
|
||||
|
||||
v1 = UndergroundItemListMenu_ProcessInput(v0->itemListMenu);
|
||||
|
||||
ListMenu_GetListAndCursorPos(v0->itemListMenu->listMenu, &v3, &v4);
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_2, v4, v3);
|
||||
|
||||
if (v1 == 0xfffffffe) {
|
||||
v1 = 0xfffffffe;
|
||||
}
|
||||
|
||||
switch (v1) {
|
||||
case 0xffffffff:
|
||||
UndergroundMenu_UpdateScrollPrompts(v0, v3, ListMenu_GetAttribute(v0->itemListMenu->listMenu, 2), 6);
|
||||
return 0;
|
||||
case 0xfffffffe:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
v0->state = 0;
|
||||
break;
|
||||
default:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
v2 = UndergroundMenu_GetGoodAtSlotBag(v1, v0);
|
||||
|
||||
if (ov23_02251418(v1, v0)) {
|
||||
UndergroundTextPrinter_SetUndergroundGoodsName(CommManUnderground_GetMiscTextPrinter(), v2);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 37, FALSE, NULL);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 38, FALSE, NULL);
|
||||
}
|
||||
|
||||
v0->state = 19;
|
||||
UndergroundMenu_EraseCurrentMenu(v0);
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static BOOL ov23_02251960(SysTask *param0, void *param1)
|
||||
{
|
||||
UndergroundMenu *v0 = param1;
|
||||
u32 v1, v2;
|
||||
u16 v3, v4;
|
||||
int v5;
|
||||
|
||||
v1 = UndergroundItemListMenu_ProcessInput(v0->itemListMenu);
|
||||
|
||||
ListMenu_GetListAndCursorPos(v0->itemListMenu->listMenu, &v3, &v4);
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_6, v4, v3);
|
||||
|
||||
if (v1 == 0xfffffffe) {
|
||||
v1 = 0xfffffffe;
|
||||
}
|
||||
|
||||
switch (v1) {
|
||||
case 0xffffffff:
|
||||
UndergroundMenu_UpdateScrollPrompts(v0, v3, ListMenu_GetAttribute(v0->itemListMenu->listMenu, 2), 6);
|
||||
return 0;
|
||||
case 0xfffffffe:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
v0->state = 0;
|
||||
break;
|
||||
default:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
v2 = UndergroundMenu_GetGoodAtSlotPC(v1, v0);
|
||||
v5 = ov23_0225144C(v1, v0);
|
||||
|
||||
if (1 == v5) {
|
||||
UndergroundTextPrinter_SetUndergroundGoodsName(CommManUnderground_GetMiscTextPrinter(), v2);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 36, FALSE, NULL);
|
||||
} else if (-1 == v5) {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 55, FALSE, NULL);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 39, FALSE, NULL);
|
||||
}
|
||||
|
||||
v0->state = 22;
|
||||
UndergroundMenu_EraseCurrentMenu(v0);
|
||||
break;
|
||||
}
|
||||
|
||||
ScrollPrompts_SetDrawFlag(v0->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
ScrollPrompts_SetDrawFlag(v0->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static BOOL ov23_02251A58(UndergroundMenu *param0)
|
||||
{
|
||||
if (UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetMiscTextPrinter()) == FALSE) {
|
||||
if (gSystem.pressedKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov23_02251A84(BOOL param0, FieldSystem *fieldSystem)
|
||||
{
|
||||
VecFx32 v0;
|
||||
|
||||
v0.y = 0;
|
||||
v0.x = 15 * FX32_ONE * 16 - Player_GetXPos(fieldSystem->playerAvatar) * FX32_ONE * 16;
|
||||
v0.z = 17 * FX32_ONE * 16 - Player_GetZPos(fieldSystem->playerAvatar) * FX32_ONE * 16;
|
||||
|
||||
if (!param0) {
|
||||
v0.x = -v0.x;
|
||||
v0.z = -v0.z;
|
||||
}
|
||||
|
||||
Camera_Move(&v0, fieldSystem->camera);
|
||||
}
|
||||
|
||||
static BOOL ov23_02251ACC(FieldTask *param0)
|
||||
{
|
||||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0);
|
||||
UnkStruct_ov23_02251ACC *v1 = FieldTask_GetEnv(param0);
|
||||
Location v2;
|
||||
u32 v3;
|
||||
BOOL v4 = 0;
|
||||
int v5;
|
||||
|
||||
switch (v1->unk_00) {
|
||||
case 0:
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_LOGIN);
|
||||
StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, HEAP_ID_FIELD1);
|
||||
v1->unk_00 = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (IsScreenFadeDone()) {
|
||||
PlayerAvatar_SetHidden(fieldSystem->playerAvatar, 0);
|
||||
|
||||
ov23_02251A84(1, fieldSystem);
|
||||
v1->unk_00 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
ov23_02254D98(fieldSystem, param0);
|
||||
v1->unk_00 = 3;
|
||||
break;
|
||||
case 3:
|
||||
v1->unk_00 = 4;
|
||||
break;
|
||||
case 4:
|
||||
PlayerAvatar_SetHidden(fieldSystem->playerAvatar, 1);
|
||||
ov23_02251A84(0, fieldSystem);
|
||||
StartScreenFade(FADE_MAIN_THEN_SUB, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 1, HEAP_ID_FIELD1);
|
||||
v1->unk_00 = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (IsScreenFadeDone()) {
|
||||
ov23_0224B2C8(fieldSystem);
|
||||
SystemFlag_SetDecoratedSecretBase(SaveData_GetVarsFlags(fieldSystem->saveData));
|
||||
ov23_02251F94(fieldSystem);
|
||||
Heap_Free(v1);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov23_02251BB4(SysTask *param0, UndergroundMenu *param1)
|
||||
{
|
||||
Strbuf_Free(param1->strbuf);
|
||||
Strbuf_Free(param1->fmtString);
|
||||
StringTemplate_Free(param1->template);
|
||||
|
||||
if (param1->exitCallback != NULL) {
|
||||
param1->exitCallback(0);
|
||||
}
|
||||
|
||||
if (param1->scrollPrompts) {
|
||||
ScrollPrompts_Free(param1->scrollPrompts);
|
||||
param1->scrollPrompts = NULL;
|
||||
}
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(param1);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
|
||||
SysTask_Done(param0);
|
||||
Heap_Free(param1);
|
||||
}
|
||||
|
||||
static void ov23_02251C04(SysTask *param0, void *param1)
|
||||
{
|
||||
UndergroundMenu *v0 = param1;
|
||||
u32 v1;
|
||||
UnkStruct_ov23_02251ACC *v2;
|
||||
|
||||
switch (v0->state) {
|
||||
case 0:
|
||||
ov23_02252E18(param1);
|
||||
v0->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(23);
|
||||
v0->listMenuListPos = CommManUnderground_GetStoredListPos(23);
|
||||
v0->unk_2AE = v0->listMenuCursorPos;
|
||||
ov23_022515D8(param1, 0, 5, ov23_0225148C, 0);
|
||||
v0->state = 1;
|
||||
break;
|
||||
case 1:
|
||||
ov23_022514D8(param0, param1);
|
||||
break;
|
||||
case 2:
|
||||
CommPlayerMan_ResumeFieldSystem();
|
||||
ov23_02243204();
|
||||
ov23_02251BB4(param0, v0);
|
||||
break;
|
||||
case 6:
|
||||
UndergroundMenu_EraseCurrentMenu(param1);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
v0->unk_270 = ov23_02253C64(v0->fieldSystem->bgConfig, SaveData_GetTrainerInfo(FieldSystem_GetSaveData(v0->fieldSystem)), SaveData_GetUnderground(FieldSystem_GetSaveData(v0->fieldSystem)), NULL, NULL);
|
||||
v0->state = 7;
|
||||
break;
|
||||
case 7:
|
||||
if (gSystem.pressedKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
ov23_02253D10(v0->unk_270);
|
||||
v0->unk_270 = NULL;
|
||||
v0->state = 0;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
v0->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(22);
|
||||
v0->listMenuListPos = CommManUnderground_GetStoredListPos(22);
|
||||
v0->unk_2AE = v0->listMenuCursorPos;
|
||||
ov23_022516E8(param1, 40, 3, ov23_022514B0, 1);
|
||||
v0->state = 9;
|
||||
break;
|
||||
case 9:
|
||||
ov23_022517E0(param0, param1);
|
||||
break;
|
||||
case 10:
|
||||
UndergroundMenu_EraseCurrentMenu(v0);
|
||||
ov23_02242FF8();
|
||||
ov23_022412F0();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 48, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 11:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 57, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 12:
|
||||
UndergroundMenu_EraseCurrentMenu(v0);
|
||||
ov23_02242FD0();
|
||||
SphereRadar_Start();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 49, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 13:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 58, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 14:
|
||||
UndergroundMenu_EraseCurrentMenu(v0);
|
||||
ov23_02242FE4();
|
||||
TrapRadar_Start();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 50, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 15:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), 59, FALSE, NULL);
|
||||
v0->state = 16;
|
||||
break;
|
||||
case 16:
|
||||
if (UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetMiscTextPrinter()) == FALSE) {
|
||||
if (gSystem.pressedKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
if (!sub_02033DFC()) {
|
||||
BrightnessController_StartTransition(1, 0, -6, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
|
||||
if (sub_02033DFC()) {
|
||||
ov23_02242FA8();
|
||||
} else {
|
||||
ov23_02242FBC();
|
||||
}
|
||||
|
||||
TrapRadar_Exit();
|
||||
ov23_02241364();
|
||||
SphereRadar_Exit();
|
||||
|
||||
v0->state = 8;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (v0->fieldSystem->task == NULL) {
|
||||
v2 = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(UnkStruct_ov23_02251ACC));
|
||||
MI_CpuClear8(v2, sizeof(UnkStruct_ov23_02251ACC));
|
||||
v2->unk_00 = 0;
|
||||
v2->unk_04 = 0;
|
||||
FieldSystem_CreateTask(v0->fieldSystem, ov23_02251ACC, v2);
|
||||
}
|
||||
|
||||
ov23_02251BB4(param0, v0);
|
||||
break;
|
||||
case 17:
|
||||
v0->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(2);
|
||||
v0->listMenuListPos = CommManUnderground_GetStoredListPos(2);
|
||||
ov23_02250D2C(param1);
|
||||
ov23_02252D74(param1, 28);
|
||||
v0->state = 18;
|
||||
break;
|
||||
case 18:
|
||||
ov23_02251894(param0, param1);
|
||||
break;
|
||||
case 19:
|
||||
if (ov23_02251A58(v0)) {
|
||||
v0->state = 17;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
v0->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(6);
|
||||
v0->listMenuListPos = CommManUnderground_GetStoredListPos(6);
|
||||
ov23_02250D5C(param1);
|
||||
ov23_02252D74(param1, 32);
|
||||
v0->state = 21;
|
||||
break;
|
||||
case 21:
|
||||
ov23_02251960(param0, param1);
|
||||
break;
|
||||
case 22:
|
||||
if (ov23_02251A58(v0)) {
|
||||
v0->state = 20;
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
if (ov23_02251A58(v0)) {
|
||||
v0->state = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ov23_02251F94(FieldSystem *fieldSystem)
|
||||
{
|
||||
ListMenuTemplate v0;
|
||||
UndergroundMenu *v1;
|
||||
const int v2 = 6;
|
||||
|
||||
CommManUnderground_SetStoredPosKey(UNDERGROUND_STORED_POS_KEY_1);
|
||||
|
||||
v1 = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UndergroundMenu));
|
||||
MI_CpuFill8(v1, 0, sizeof(UndergroundMenu));
|
||||
v1->fieldSystem = fieldSystem;
|
||||
|
||||
UndergroundTextPrinter_ChangeMessageLoaderBank(CommManUnderground_GetMiscTextPrinter(), TEXT_BANK_UNDERGROUND_BASE_PC, MSG_LOADER_LOAD_ON_DEMAND);
|
||||
|
||||
v1->state = 0;
|
||||
v1->strbuf = Strbuf_Init((50 * 2), HEAP_ID_FIELD1);
|
||||
v1->fmtString = Strbuf_Init((50 * 2), HEAP_ID_FIELD1);
|
||||
v1->template = StringTemplate_Default(HEAP_ID_FIELD1);
|
||||
v1->scrollPrompts = ScrollPrompts_New(HEAP_ID_FIELD1);
|
||||
|
||||
ScrollPrompts_SetPosition(v1->scrollPrompts, 200, 20, 122);
|
||||
ScrollPrompts_SetDrawFlag(v1->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
ScrollPrompts_SetDrawFlag(v1->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
|
||||
v1->sysTask = SysTask_Start(ov23_02251C04, v1, 10000);
|
||||
|
||||
ov23_022431EC(v1, v1->sysTask, ov23_02251270);
|
||||
}
|
||||
|
||||
static void ov23_02252038(SysTask *param0, void *param1)
|
||||
{
|
||||
UnkStruct_ov23_02252038 *v0 = param1;
|
||||
int v1;
|
||||
|
||||
switch (v0->unk_00) {
|
||||
case 0:
|
||||
if (UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetCommonTextPrinter()) == FALSE) {
|
||||
v0->unk_08 = Menu_MakeYesNoChoice(v0->fieldSystem->bgConfig, &Unk_ov23_022569C8, 1024 - (18 + 12) - 9, 11, 4);
|
||||
v0->unk_00 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
v1 = Menu_ProcessInputAndHandleExit(v0->unk_08, 4);
|
||||
|
||||
if (v1 == 0xffffffff) {
|
||||
return;
|
||||
} else if (v1 == 0) {
|
||||
CommSys_SendDataFixedSize(89, &v0->unk_0C);
|
||||
} else {
|
||||
CommPlayerMan_ResumeFieldSystemWithContextBit(PAUSE_BIT_6);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetCommonTextPrinter());
|
||||
}
|
||||
|
||||
v0->unk_00 = 2;
|
||||
v0->unk_08 = NULL;
|
||||
break;
|
||||
case 2:
|
||||
Heap_Free(v0);
|
||||
ov23_02243204();
|
||||
SysTask_Done(param0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ov23_022520C8(SysTask *param0, void *param1)
|
||||
{
|
||||
UnkStruct_ov23_02252038 *v0 = param1;
|
||||
|
||||
if (v0->unk_08) {
|
||||
Menu_DestroyForExit(v0->unk_08, 4);
|
||||
}
|
||||
|
||||
Heap_Free(v0);
|
||||
SysTask_Done(param0);
|
||||
}
|
||||
|
||||
static void ov23_022520E8(FieldSystem *fieldSystem, UnkStruct_ov23_022513B0 *param1)
|
||||
{
|
||||
UnkStruct_ov23_02252038 *v0 = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UndergroundMenu));
|
||||
|
||||
MI_CpuFill8(v0, 0, sizeof(UnkStruct_ov23_02252038));
|
||||
|
||||
v0->unk_00 = 0;
|
||||
v0->fieldSystem = fieldSystem;
|
||||
v0->primaryWindow = SysTask_Start(ov23_02252038, v0, 10000);
|
||||
|
||||
UndergroundTextPrinter_SetPlayerNameIndex0(CommManUnderground_GetCommonTextPrinter(), CommInfo_TrainerInfo(param1->unk_01));
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCommonTextPrinter(), 67, FALSE, NULL);
|
||||
|
||||
v0->unk_0C.unk_00 = param1->unk_00;
|
||||
v0->unk_0C.unk_01 = param1->unk_01;
|
||||
v0->unk_0C.unk_02 = param1->unk_02;
|
||||
|
||||
ov23_022431EC(v0, v0->primaryWindow, ov23_022520C8);
|
||||
}
|
||||
|
||||
void ov23_0225215C(int param0, int param1, void *param2, void *param3)
|
||||
{
|
||||
UnkStruct_ov23_022513B0 *v0 = param2;
|
||||
|
||||
if (ov23_0224AEC4(v0->unk_00, v0->unk_01)) {
|
||||
sub_02035B48(90, v0);
|
||||
}
|
||||
}
|
||||
|
||||
void ov23_02252178(int param0, int param1, void *param2, void *param3)
|
||||
{
|
||||
FieldSystem *fieldSystem = param3;
|
||||
UnkStruct_ov23_022513B0 *v1 = param2;
|
||||
|
||||
if (CommSys_CurNetId() == v1->unk_00) {
|
||||
UndergroundTextPrinter_SetPlayerNameIndex0(CommManUnderground_GetCaptureFlagTextPrinter(), CommInfo_TrainerInfo(v1->unk_01));
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCaptureFlagTextPrinter(), 8, TRUE, ov23_022513A4);
|
||||
Sound_PlayBGM(SEQ_HATANIGE);
|
||||
}
|
||||
|
||||
ov23_0224AEC4(v1->unk_00, v1->unk_01);
|
||||
ov23_0224D500(v1->unk_00, v1->unk_01);
|
||||
}
|
||||
|
||||
static void ov23_022521C8(UndergroundMenu *param0)
|
||||
{
|
||||
u16 v0 = param0->unk_2AE;
|
||||
ListMenu_CalcTrueCursorPos(param0->unk_48, ¶m0->unk_2AE);
|
||||
|
||||
if (v0 != param0->unk_2AE) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/field_base_tiles.h"
|
||||
|
||||
#include "struct_decls/struct_02061AB4_decl.h"
|
||||
#include "struct_defs/underground.h"
|
||||
|
||||
|
|
@ -553,32 +555,32 @@ static void ov23_02252D1C(UndergroundMenu *param0)
|
|||
Window_CopyToVRAM(¶m0->secondaryWindow);
|
||||
}
|
||||
|
||||
void ov23_02252D74(UndergroundMenu *param0, int param1)
|
||||
void UndergroundMenu_PrintMenuDescription(UndergroundMenu *menu, int bankEntry)
|
||||
{
|
||||
Window_Add(param0->fieldSystem->bgConfig, ¶m0->unk_30, 3, 1, 1, 7, 4, 13, 51);
|
||||
Window_DrawStandardFrame(¶m0->unk_30, 1, 1024 - (18 + 12) - 9, 11);
|
||||
Window_Add(menu->fieldSystem->bgConfig, &menu->menuDescriptionWindow, BG_LAYER_MAIN_3, 1, 1, 7, 4, 13, 51);
|
||||
Window_DrawStandardFrame(&menu->menuDescriptionWindow, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, 11);
|
||||
|
||||
Window_FillTilemap(¶m0->unk_30, 15);
|
||||
Window_CopyToVRAM(¶m0->unk_30);
|
||||
Window_FillTilemap(&menu->menuDescriptionWindow, 15);
|
||||
Window_CopyToVRAM(&menu->menuDescriptionWindow);
|
||||
|
||||
MessageLoader_GetStrbuf(UndergroundTextPrinter_GetMessageLoader(CommManUnderground_GetMiscTextPrinter()), param1, param0->strbuf);
|
||||
Text_AddPrinterWithParams(¶m0->unk_30, FONT_SYSTEM, param0->strbuf, 1, 1, TEXT_SPEED_NO_TRANSFER, NULL);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_30);
|
||||
MessageLoader_GetStrbuf(UndergroundTextPrinter_GetMessageLoader(CommManUnderground_GetMiscTextPrinter()), bankEntry, menu->strbuf);
|
||||
Text_AddPrinterWithParams(&menu->menuDescriptionWindow, FONT_SYSTEM, menu->strbuf, 1, 1, TEXT_SPEED_NO_TRANSFER, NULL);
|
||||
Window_ScheduleCopyToVRAM(&menu->menuDescriptionWindow);
|
||||
}
|
||||
|
||||
void ov23_02252DF4(UndergroundMenu *param0)
|
||||
void UndergroundMenu_RemoveDescriptionWindow(UndergroundMenu *menu)
|
||||
{
|
||||
if (Window_IsInUse(¶m0->unk_30)) {
|
||||
Window_EraseStandardFrame(¶m0->unk_30, 1);
|
||||
Window_Remove(¶m0->unk_30);
|
||||
if (Window_IsInUse(&menu->menuDescriptionWindow)) {
|
||||
Window_EraseStandardFrame(&menu->menuDescriptionWindow, TRUE);
|
||||
Window_Remove(&menu->menuDescriptionWindow);
|
||||
}
|
||||
}
|
||||
|
||||
void ov23_02252E18(UndergroundMenu *param0)
|
||||
void UndergroundMenu_RemoveDescriptionWindowInstant(UndergroundMenu *menu)
|
||||
{
|
||||
if (Window_IsInUse(¶m0->unk_30)) {
|
||||
Window_EraseStandardFrame(¶m0->unk_30, 0);
|
||||
Window_Remove(¶m0->unk_30);
|
||||
if (Window_IsInUse(&menu->menuDescriptionWindow)) {
|
||||
Window_EraseStandardFrame(&menu->menuDescriptionWindow, FALSE);
|
||||
Window_Remove(&menu->menuDescriptionWindow);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -723,7 +725,7 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
v0->listMenuListPos = CommManUnderground_GetStoredListPos(12);
|
||||
|
||||
ov23_02250184(v0);
|
||||
ov23_02252D74(v0, 19);
|
||||
UndergroundMenu_PrintMenuDescription(v0, 19);
|
||||
|
||||
if (v0->unk_2AC == 1) {
|
||||
ov23_02252CF4(2, v0->unk_274[v0->unk_2A8]);
|
||||
|
|
@ -747,13 +749,13 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
case 0xffffffff:
|
||||
break;
|
||||
case 0xfffffffe:
|
||||
ov23_02252DF4(v0);
|
||||
UndergroundMenu_RemoveDescriptionWindow(v0);
|
||||
v0->state = 4;
|
||||
break;
|
||||
default:
|
||||
v1 = ov23_02252404(v0, v0->unk_2A8, v1);
|
||||
ov23_02252B90(v0, 1);
|
||||
ov23_02252DF4(v0);
|
||||
UndergroundMenu_RemoveDescriptionWindow(v0);
|
||||
|
||||
if (v1 == 0xfffc) {
|
||||
ov23_02252C9C(3);
|
||||
|
|
@ -810,13 +812,13 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
|
||||
if (v0->unk_2AC == 1) {
|
||||
ov23_0224FDBC(v0);
|
||||
ov23_02252D74(v0, 20);
|
||||
UndergroundMenu_PrintMenuDescription(v0, 20);
|
||||
} else if (v0->unk_2AC == 0) {
|
||||
ov23_02250CB0(v0);
|
||||
ov23_02252D74(v0, 21);
|
||||
UndergroundMenu_PrintMenuDescription(v0, 21);
|
||||
} else {
|
||||
ov23_02250578(v0);
|
||||
ov23_02252D74(v0, 29);
|
||||
UndergroundMenu_PrintMenuDescription(v0, 29);
|
||||
}
|
||||
|
||||
v0->state = 13;
|
||||
|
|
@ -830,7 +832,7 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
case 0xfffffffe:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
ov23_02252B90(v0, 1);
|
||||
ov23_02252DF4(v0);
|
||||
UndergroundMenu_RemoveDescriptionWindow(v0);
|
||||
v0->state = 2;
|
||||
break;
|
||||
case 0xffffffff:
|
||||
|
|
@ -840,7 +842,7 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
v0->unk_2A8 = v1;
|
||||
ov23_02252B90(v0, 1);
|
||||
ov23_02252DF4(v0);
|
||||
UndergroundMenu_RemoveDescriptionWindow(v0);
|
||||
ov23_02252BB8(v1, v0);
|
||||
v0->state = 14;
|
||||
}
|
||||
|
|
@ -896,7 +898,7 @@ static void ov23_02252E70(SysTask *param0, void *param1)
|
|||
if (gSystem.pressedKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
ov23_02252CD4();
|
||||
ov23_02252C78(v0);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
SysTask_Done(param0);
|
||||
CommPlayerMan_ResumeFieldSystem();
|
||||
}
|
||||
|
|
@ -933,7 +935,7 @@ void ov23_022534A0(FieldSystem *fieldSystem)
|
|||
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
v4->sysTask = SysTask_Start(ov23_02252E70, v4, 10000);
|
||||
ov23_022431EC(v4, v4->sysTask, ov23_02251270);
|
||||
CommManUnderground_SetCurrentSysTask(v4, v4->sysTask, UndergroundMenu_ResetBrightnessAndExit);
|
||||
|
||||
{
|
||||
int objEventCount, i;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ static UnkFuncPtr_ov23_022576EC Unk_ov23_022576EC[] = {
|
|||
UndergroundRecord_GetNumTrapsTriggered,
|
||||
UndergroundRecord_GetNumPlayersHelped,
|
||||
UndergroundRecord_GetGiftsReceived,
|
||||
sub_020297AC,
|
||||
UndergroundRecord_GetTimesFlagTaken,
|
||||
sub_020297E4,
|
||||
sub_0202981C,
|
||||
UndergroundRecord_GetCapturedFlagCount
|
||||
|
|
@ -406,7 +406,7 @@ void *ov23_02253C64(BgConfig *param0, TrainerInfo *param1, Underground *undergro
|
|||
Window_Add(param0, &v4->unk_08, 3, 4, 2, 24, 19, 13, 1);
|
||||
Window_DrawStandardFrame(&v4->unk_08, 1, 1024 - (18 + 12) - 9, 11);
|
||||
|
||||
v1 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_BASE_PC, HEAP_ID_FIELD1);
|
||||
v1 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_PC, HEAP_ID_FIELD1);
|
||||
Window_FillTilemap(&v4->unk_08, 15);
|
||||
|
||||
v0 = Unk_ov23_022577BC->record;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
#include "overlay023/ov23_02241F74.h"
|
||||
#include "overlay023/ov23_0224A1D0.h"
|
||||
#include "overlay023/ov23_0224B05C.h"
|
||||
#include "overlay023/ov23_0225128C.h"
|
||||
#include "overlay023/ov23_022521F0.h"
|
||||
#include "overlay023/ov23_02253598.h"
|
||||
#include "overlay023/underground_item_list_menu.h"
|
||||
|
|
@ -489,7 +488,7 @@ void UndergroundMenu_Start(ExitCallback exitCallback, FieldSystem *fieldSystem)
|
|||
menu->template = StringTemplate_Default(HEAP_ID_FIELD1);
|
||||
menu->sysTask = SysTask_Start(UndergroundMenu_Main, menu, 10000);
|
||||
|
||||
ov23_022431EC(menu, menu->sysTask, ov23_02251270);
|
||||
CommManUnderground_SetCurrentSysTask(menu, menu->sysTask, UndergroundMenu_ResetBrightnessAndExit);
|
||||
}
|
||||
|
||||
#define ADD_OPTION(__menuOption) \
|
||||
|
|
@ -569,12 +568,12 @@ static void UndergroundMenu_Main(SysTask *sysTask, void *data)
|
|||
break;
|
||||
case UNDERGROUND_MENU_STATE_CLOSE:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundMenu_Free(sysTask, menu, FALSE);
|
||||
return;
|
||||
case UNDERGROUND_MENU_STATE_CLOSE_LEAVE_PAUSED:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundMenu_Free(sysTask, menu, TRUE);
|
||||
return;
|
||||
case UNDERGROUND_MENU_STATE_TRAPS:
|
||||
|
|
@ -605,7 +604,7 @@ static void UndergroundMenu_Main(SysTask *sysTask, void *data)
|
|||
if (JOY_NEW(PAD_BUTTON_A)) {
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetCommonTextPrinter());
|
||||
UndergroundMenu_Free(sysTask, menu, FALSE);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -623,7 +622,7 @@ static void UndergroundMenu_Main(SysTask *sysTask, void *data)
|
|||
case UNDERGROUND_MENU_STATE_RETURN_TO_SURFACE:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
UndergroundMenu_Free(sysTask, menu, TRUE);
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
FieldTask_SetUndergroundMapChange(menu->fieldSystem);
|
||||
return;
|
||||
case UNDERGROUND_MENU_STATE_TRAP_SELECTED:
|
||||
|
|
@ -711,7 +710,7 @@ void UndergroundMenu_EraseCurrentMenu(UndergroundMenu *menu)
|
|||
Bg_ScheduleTilemapTransfer(menu->primaryWindow.bgConfig, menu->primaryWindow.bgLayer);
|
||||
Window_Remove(&menu->primaryWindow);
|
||||
StringList_Free(menu->menuOptions);
|
||||
ov23_02252DF4(menu);
|
||||
UndergroundMenu_RemoveDescriptionWindow(menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1424,7 +1423,7 @@ void UndergroundMenu_StartHoldingFlag(ExitCallback exitCallback, FieldSystem *fi
|
|||
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCaptureFlagTextPrinter(), UndergroundCaptureFlag_Text_PromptThrowAwayFlag, FALSE, NULL);
|
||||
menu->sysTask = SysTask_Start(ov23_02250B9C, menu, 10000);
|
||||
ov23_022431EC(menu, menu->sysTask, ov23_02251270);
|
||||
CommManUnderground_SetCurrentSysTask(menu, menu->sysTask, UndergroundMenu_ResetBrightnessAndExit);
|
||||
}
|
||||
|
||||
static void UndergroundMenu_ConfirmThrowAwayFlag(UndergroundMenu *menu)
|
||||
|
|
@ -1486,7 +1485,7 @@ static void ov23_02250B9C(SysTask *sysTask, void *data)
|
|||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
if (!ov23_0224AEA4(CommSys_CurNetId())) {
|
||||
if (!ov23_IsPlayerHoldingFlag(CommSys_CurNetId())) {
|
||||
if (menu->state == UNDERGROUND_MENU_STATE_INIT || menu->state == UNDERGROUND_MENU_STATE_START) {
|
||||
menu->state = UNDERGROUND_MENU_STATE_CLOSE;
|
||||
}
|
||||
|
|
@ -1500,11 +1499,11 @@ static void ov23_02250B9C(SysTask *sysTask, void *data)
|
|||
UndergroundMenu_CheckForThrowAwayYesNo(data);
|
||||
break;
|
||||
case UNDERGROUND_MENU_STATE_CLOSE:
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundMenu_Free(sysTask, data, FALSE);
|
||||
return;
|
||||
case UNDERGROUND_MENU_STATE_CLOSE_LEAVE_PAUSED:
|
||||
ov23_02243204();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundMenu_Free(sysTask, data, TRUE);
|
||||
u8 buffer = 0;
|
||||
CommSys_SendDataFixedSize(84, &buffer);
|
||||
|
|
@ -1569,7 +1568,7 @@ void UndergroundMenu_OpenGoodsMenu(UndergroundMenu *menu)
|
|||
UndergroundMenu_InitGoodsMenu(menu, Underground_MoveGoodBag);
|
||||
}
|
||||
|
||||
void ov23_02250D2C(UndergroundMenu *menu)
|
||||
void UndergroundMenu_OpenStoreGoodsMenu(UndergroundMenu *menu)
|
||||
{
|
||||
menu->getItemCount = UndergroundMenu_GetGoodsCountBag;
|
||||
menu->getItem = UndergroundMenu_GetGoodAtSlotBag;
|
||||
|
|
@ -1579,7 +1578,7 @@ void ov23_02250D2C(UndergroundMenu *menu)
|
|||
UndergroundMenu_InitGoodsMenu(menu, Underground_MoveGoodBag);
|
||||
}
|
||||
|
||||
void ov23_02250D5C(UndergroundMenu *menu)
|
||||
void UndergroundMenu_OpenWithdrawGoodsMenu(UndergroundMenu *menu)
|
||||
{
|
||||
menu->getItemCount = UndergroundMenu_GetGoodsCountPC;
|
||||
menu->getItem = UndergroundMenu_GetGoodAtSlotPC;
|
||||
|
|
@ -1716,7 +1715,7 @@ static BOOL UndergroundMenu_HandleGoodSelectedMenu(SysTask *sysTask, void *data)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void UndergroundMenu_ExitGiftMenu(void *data, u32 input)
|
||||
void UndergroundMenu_Exit(void *data, u32 input)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
|
|
@ -1793,11 +1792,10 @@ static BOOL UndergroundMenu_HandleGiftMenu(SysTask *sysTask, void *data)
|
|||
}
|
||||
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
UndergroundMenu_ExitGiftMenu(menu, input);
|
||||
ov23_02243204();
|
||||
UndergroundMenu_Exit(menu, input);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
return TRUE;
|
||||
default:
|
||||
|
||||
if (menu->exitCallback != NULL) {
|
||||
ctx->selectedSlot = input;
|
||||
ctx->selectedID = UndergroundMenu_GetGoodAtSlotBag(input, menu);
|
||||
|
|
@ -1806,8 +1804,8 @@ static BOOL UndergroundMenu_HandleGiftMenu(SysTask *sysTask, void *data)
|
|||
}
|
||||
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
UndergroundMenu_ExitGiftMenu(menu, input);
|
||||
ov23_02243204();
|
||||
UndergroundMenu_Exit(menu, input);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
return TRUE;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1836,7 +1834,7 @@ void *UndergroundMenu_StartGiftMenu(ExitCallback exitCallback, FieldSystem *fiel
|
|||
menu->state = UNDERGROUND_MENU_STATE_GIVE_GIFT;
|
||||
menu->sysTask = SysTask_Start(UndergroundMenu_Main, menu, 10000);
|
||||
|
||||
ov23_022431EC(menu, menu->sysTask, ov23_02251270);
|
||||
CommManUnderground_SetCurrentSysTask(menu, menu->sysTask, UndergroundMenu_ResetBrightnessAndExit);
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
|
@ -1859,8 +1857,29 @@ void UndergroundMenu_MoveListCursorPosInBounds(UndergroundMenu *menu, int maxDis
|
|||
}
|
||||
}
|
||||
|
||||
void ov23_02251270(SysTask *sysTask, void *param1)
|
||||
void UndergroundMenu_ResetBrightnessAndExit(SysTask *sysTask, void *data)
|
||||
{
|
||||
BrightnessController_SetScreenBrightness(0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundMenu_ExitGiftMenu(param1, LIST_CANCEL);
|
||||
UndergroundMenu_Exit(data, LIST_CANCEL);
|
||||
}
|
||||
|
||||
void UndergroundMenu_UpdateScrollPrompts(UndergroundMenu *menu, int listPos, int count, int maxDisplay)
|
||||
{
|
||||
if (count <= maxDisplay) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (listPos != 0) {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, TRUE);
|
||||
} else {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
}
|
||||
|
||||
if (listPos + maxDisplay != count) {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
|
||||
} else {
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
}
|
||||
|
||||
ScrollPrompts_UpdateAnim(menu->scrollPrompts);
|
||||
}
|
||||
|
|
|
|||
966
src/overlay023/underground_pc.c
Normal file
966
src/overlay023/underground_pc.c
Normal file
|
|
@ -0,0 +1,966 @@
|
|||
#include "overlay023/underground_pc.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/field_base_tiles.h"
|
||||
#include "constants/map_object.h"
|
||||
|
||||
#include "struct_defs/underground.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "overlay023/ov23_0223E140.h"
|
||||
#include "overlay023/ov23_02241F74.h"
|
||||
#include "overlay023/ov23_0224A1D0.h"
|
||||
#include "overlay023/ov23_0224B05C.h"
|
||||
#include "overlay023/ov23_022521F0.h"
|
||||
#include "overlay023/ov23_02253598.h"
|
||||
#include "overlay023/ov23_02254A14.h"
|
||||
#include "overlay023/underground_item_list_menu.h"
|
||||
#include "overlay023/underground_menu.h"
|
||||
#include "overlay023/underground_spheres.h"
|
||||
#include "overlay023/underground_text_printer.h"
|
||||
#include "overlay023/underground_traps.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "brightness_controller.h"
|
||||
#include "camera.h"
|
||||
#include "comm_player_manager.h"
|
||||
#include "communication_information.h"
|
||||
#include "communication_system.h"
|
||||
#include "field_system.h"
|
||||
#include "field_task.h"
|
||||
#include "heap.h"
|
||||
#include "list_menu.h"
|
||||
#include "location.h"
|
||||
#include "menu.h"
|
||||
#include "message.h"
|
||||
#include "player_avatar.h"
|
||||
#include "render_window.h"
|
||||
#include "save_player.h"
|
||||
#include "screen_fade.h"
|
||||
#include "scroll_prompts.h"
|
||||
#include "sound_playback.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_list.h"
|
||||
#include "string_template.h"
|
||||
#include "sys_task.h"
|
||||
#include "sys_task_manager.h"
|
||||
#include "system.h"
|
||||
#include "system_flags.h"
|
||||
#include "unk_0202854C.h"
|
||||
#include "unk_02033200.h"
|
||||
#include "vars_flags.h"
|
||||
|
||||
#include "res/text/bank/underground_capture_flag.h"
|
||||
#include "res/text/bank/underground_common.h"
|
||||
#include "res/text/bank/underground_pc.h"
|
||||
|
||||
#define SECRET_BASE_WIDTH 32
|
||||
#define SECRET_BASE_HEIGHT 32
|
||||
|
||||
#define PC_COORDINATE_X 15
|
||||
#define PC_COORDINATE_Z 12
|
||||
|
||||
enum UndergroundPCMenuState {
|
||||
UG_PC_MENU_STATE_INIT = 0,
|
||||
UG_PC_MENU_STATE_MAIN,
|
||||
UG_PC_MENU_STATE_EXIT,
|
||||
UG_PC_MENU_STATE_DECORATE,
|
||||
UG_PC_MENU_STATE_INIT_CHECK_FLAGS = 6,
|
||||
UG_PC_MENU_STATE_CHECK_FLAGS,
|
||||
UG_PC_MENU_STATE_INIT_RADAR_MENU,
|
||||
UG_PC_MENU_STATE_RADAR_MENU_MAIN,
|
||||
UG_PC_MENU_STATE_START_TREASURE_RADAR,
|
||||
UG_PC_MENU_STATE_TREASURE_RADAR_NOT_AVAILABLE,
|
||||
UG_PC_MENU_STATE_START_SPHERE_RADAR,
|
||||
UG_PC_MENU_STATE_SPHERE_RADAR_NOT_AVAILABLE,
|
||||
UG_PC_MENU_STATE_START_TRAP_RADAR,
|
||||
UG_PC_MENU_STATE_TRAP_RADAR_NOT_AVAILABLE,
|
||||
UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS,
|
||||
UG_PC_MENU_STATE_INIT_STORE_GOODS,
|
||||
UG_PC_MENU_STATE_STORE_GOODS,
|
||||
UG_PC_MENU_STATE_STORE_GOODS_WAIT_FOR_MESSAGE,
|
||||
UG_PC_MENU_STATE_INIT_WITHDRAW_GOODS,
|
||||
UG_PC_MENU_STATE_WITHDRAW_GOODS,
|
||||
UG_PC_MENU_STATE_WITHDRAW_GOODS_WAIT_FOR_MESSAGE,
|
||||
UG_PC_MENU_STATE_WAIT_FOR_MESSAGE,
|
||||
};
|
||||
|
||||
enum UndergroundPCMenuOption {
|
||||
UG_PC_MENU_OPTION_DECORATE = 0,
|
||||
UG_PC_MENU_OPTION_STORE_GOODS,
|
||||
UG_PC_MENU_OPTION_RECEIVE_GOODS,
|
||||
UG_PC_MENU_OPTION_CHECK_FLAGS,
|
||||
UG_PC_MENU_OPTION_USE_RADAR,
|
||||
};
|
||||
|
||||
enum RadarMenuOption {
|
||||
RADAR_MENU_OPTION_TREASURE = 0,
|
||||
RADAR_MENU_OPTION_SPHERE,
|
||||
RADAR_MENU_OPTION_TRAP,
|
||||
};
|
||||
|
||||
enum TakeFlagPromptState {
|
||||
TAKE_FLAG_PROMPT_STATE_INIT = 0,
|
||||
TAKE_FLAG_PROMPT_STATE_MAIN,
|
||||
TAKE_FLAG_PROMPT_STATE_EXIT,
|
||||
};
|
||||
|
||||
enum DecorateState {
|
||||
DECORATE_STATE_FADE = 0,
|
||||
DECORATE_STATE_UPDATE_CAMERA,
|
||||
DECORATE_STATE_START,
|
||||
DECORATE_STATE_MAIN,
|
||||
DECORATE_STATE_REVERT_CAMERA,
|
||||
DECORATE_STATE_END,
|
||||
};
|
||||
|
||||
typedef struct PCInteraction {
|
||||
u8 playerNetID;
|
||||
u8 pcNetID;
|
||||
u8 canTakeFlag;
|
||||
} PCInteraction;
|
||||
|
||||
typedef struct DecorateContext {
|
||||
int state;
|
||||
int dummy;
|
||||
u8 unused;
|
||||
} DecorateContext;
|
||||
|
||||
typedef struct TakeFlagPromptContext {
|
||||
int state;
|
||||
FieldSystem *fieldSystem;
|
||||
Menu *menu;
|
||||
PCInteraction pcInteraction;
|
||||
SysTask *sysTask;
|
||||
} TakeFlagPromptContext;
|
||||
|
||||
static void UndergroundPC_StartTakeFlagPromptTask(FieldSystem *fieldSystem, PCInteraction *pcInteraction);
|
||||
static void UndergroundPC_OpenPCMenu(FieldSystem *fieldSystem);
|
||||
static void UndergroundPC_UpdateCursorPos(UndergroundMenu *menu);
|
||||
|
||||
static const WindowTemplate sWindowTemplate = {
|
||||
.bgLayer = BG_LAYER_MAIN_3,
|
||||
.tilemapLeft = 25,
|
||||
.tilemapTop = 13,
|
||||
.width = 6,
|
||||
.height = 4,
|
||||
.palette = 13,
|
||||
.baseTile = 543,
|
||||
};
|
||||
|
||||
int UndergroundPC_GetPCAtCoordinates(Coordinates *coordinates, int dir)
|
||||
{
|
||||
int netID;
|
||||
int x = coordinates->x;
|
||||
int z = coordinates->z;
|
||||
int modifier = 0;
|
||||
|
||||
if (dir != DIR_NONE && dir != DIR_NORTH) {
|
||||
return PC_NONE;
|
||||
}
|
||||
|
||||
if (z == PC_COORDINATE_Z) {
|
||||
modifier = 0;
|
||||
} else if (z == PC_COORDINATE_Z + SECRET_BASE_HEIGHT) {
|
||||
modifier = MAX_CONNECTED_PLAYERS; // bug: would lead to out of bounds array access
|
||||
} else {
|
||||
return PC_NONE;
|
||||
}
|
||||
|
||||
if (x == PC_COORDINATE_X || x == PC_COORDINATE_X + 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (netID = 0; netID < MAX_CONNECTED_PLAYERS; netID++) {
|
||||
if (x == PC_COORDINATE_X + SECRET_BASE_WIDTH || x == PC_COORDINATE_X + 1 + SECRET_BASE_WIDTH) {
|
||||
return netID + modifier;
|
||||
}
|
||||
|
||||
x -= SECRET_BASE_WIDTH;
|
||||
}
|
||||
|
||||
return PC_NONE;
|
||||
}
|
||||
|
||||
BOOL UndergroundPC_TryUsePC(int netID, Coordinates *coordinates)
|
||||
{
|
||||
int pcNetID = UndergroundPC_GetPCAtCoordinates(coordinates, CommPlayer_DirServer(netID));
|
||||
|
||||
if (CommPlayer_Dir(pcNetID) == DIR_NONE) {
|
||||
pcNetID = PC_NONE;
|
||||
}
|
||||
|
||||
if (pcNetID != PC_NONE) {
|
||||
sub_02059058(netID, FALSE);
|
||||
|
||||
PCInteraction pcInteraction;
|
||||
pcInteraction.pcNetID = pcNetID;
|
||||
pcInteraction.playerNetID = netID;
|
||||
pcInteraction.canTakeFlag = FALSE;
|
||||
|
||||
if (pcNetID != netID) {
|
||||
if (!ov23_IsPlayerHoldingFlag(netID)) {
|
||||
pcInteraction.canTakeFlag = TRUE;
|
||||
}
|
||||
} else {
|
||||
if (ov23_IsPlayerHoldingFlag(netID)) {
|
||||
u8 v5 = 3; // TODO: label this when below function is documented
|
||||
ov23_0224A570(netID, 1, &v5, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
sub_02035B48(83, &pcInteraction);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void UndergroundPC_ResumeFieldSystem(int unused)
|
||||
{
|
||||
CommPlayerMan_ResumeFieldSystemWithContextBit(PAUSE_BIT_LINK_PC);
|
||||
}
|
||||
|
||||
void UndergroundPC_ProcessPCInteraction(int unused0, int unused1, void *data, void *data2)
|
||||
{
|
||||
PCInteraction *pcInteraction = data;
|
||||
FieldSystem *fieldSystem = data2;
|
||||
|
||||
if (!CommSys_IsSendingMovementData()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (pcInteraction->playerNetID == CommSys_CurNetId()) {
|
||||
if (pcInteraction->pcNetID == CommSys_CurNetId()) {
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_ON);
|
||||
CommPlayerMan_PauseFieldSystem();
|
||||
UndergroundPC_OpenPCMenu(fieldSystem);
|
||||
} else {
|
||||
CommPlayerMan_PauseFieldSystemWithContextBit(PAUSE_BIT_LINK_PC);
|
||||
|
||||
if (pcInteraction->canTakeFlag) {
|
||||
UndergroundPC_StartTakeFlagPromptTask(fieldSystem, pcInteraction);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCaptureFlagTextPrinter(), UndergroundCaptureFlag_Text_YouAlreadyHaveFlag, TRUE, UndergroundPC_ResumeFieldSystem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int CommPacketSizeOf_PCInteraction(void)
|
||||
{
|
||||
return sizeof(PCInteraction);
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_TryDepositGood(int slot, UndergroundMenu *menu)
|
||||
{
|
||||
Underground *underground = SaveData_GetUnderground(FieldSystem_GetSaveData(menu->fieldSystem));
|
||||
int goodID = Underground_GetGoodAtSlotBag(underground, slot);
|
||||
|
||||
if (Underground_TryAddGoodPC(underground, goodID)) {
|
||||
Underground_RemoveGoodAtSlotBag(underground, slot);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int UndergroundPC_TryWithdrawGood(int slot, UndergroundMenu *menu)
|
||||
{
|
||||
Underground *underground = SaveData_GetUnderground(FieldSystem_GetSaveData(menu->fieldSystem));
|
||||
|
||||
if (Underground_IsGoodAtSlotPlacedInBase(underground, slot)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int goodID = Underground_GetGoodAtSlotPC(underground, slot);
|
||||
|
||||
if (UndergroundInventory_TryAddGoodBag(goodID)) {
|
||||
Underground_RemoveGoodAtSlotPC(underground, slot);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void UndergroundPC_PrintMenuItemDescription(ListMenu *listMenu, u32 menuItemIdx, u8 unused)
|
||||
{
|
||||
ListMenu_GetAttribute(listMenu, LIST_MENU_PARENT);
|
||||
int index = menuItemIdx;
|
||||
|
||||
if (menuItemIdx == LIST_CANCEL) {
|
||||
index = UndergroundPC_Text_ExitDescription - UndergroundPC_Text_DecorateDescription;
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_DecorateDescription + index, FALSE, NULL);
|
||||
}
|
||||
|
||||
static void UndergroundPC_PrintRadarMenuItemDescription(ListMenu *listMenu, u32 menuItemIdx, u8 unused)
|
||||
{
|
||||
ListMenu_GetAttribute(listMenu, LIST_MENU_PARENT);
|
||||
int index = menuItemIdx;
|
||||
|
||||
if (menuItemIdx == LIST_CANCEL) {
|
||||
index = UndergroundPC_Text_CancelDescription - UndergroundPC_Text_TreasureSearchDescription;
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_TreasureSearchDescription + index, FALSE, NULL);
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_HandleMenu(SysTask *sysTask, void *data)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
u32 input = ListMenu_ProcessInput(menu->unk_48);
|
||||
u16 listPos, cursorPos;
|
||||
ListMenu_GetListAndCursorPos(menu->unk_48, &listPos, &cursorPos);
|
||||
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_PC, cursorPos, listPos);
|
||||
UndergroundPC_UpdateCursorPos(menu);
|
||||
|
||||
switch (input) {
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
return FALSE;
|
||||
case LIST_CANCEL:
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_LOGOFF);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT;
|
||||
break;
|
||||
case UG_PC_MENU_OPTION_DECORATE:
|
||||
Underground *underground = SaveData_GetUnderground(menu->fieldSystem->saveData);
|
||||
|
||||
if (Underground_GetGoodsCountPC(underground) == 0) {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_StoreGoodsBeforeDecorating, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_WAIT_FOR_MESSAGE;
|
||||
} else if (CommServerClient_IsInClosedSecretBase()) {
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
menu->state = UG_PC_MENU_STATE_DECORATE;
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_CantDecorateWithEntranceOpen, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_WAIT_FOR_MESSAGE;
|
||||
}
|
||||
break;
|
||||
case UG_PC_MENU_OPTION_USE_RADAR:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
menu->state = UG_PC_MENU_STATE_INIT_RADAR_MENU;
|
||||
break;
|
||||
case UG_PC_MENU_OPTION_CHECK_FLAGS:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
menu->state = UG_PC_MENU_STATE_INIT_CHECK_FLAGS;
|
||||
break;
|
||||
case UG_PC_MENU_OPTION_STORE_GOODS:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
menu->state = UG_PC_MENU_STATE_INIT_STORE_GOODS;
|
||||
break;
|
||||
case UG_PC_MENU_OPTION_RECEIVE_GOODS:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
menu->state = UG_PC_MENU_STATE_INIT_WITHDRAW_GOODS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void UndergroundPC_InitMenu(UndergroundMenu *menu, int startBankEntry, int optionCount, CursorCallback cursorCallback, int unused)
|
||||
{
|
||||
int trueOptionCount = optionCount + 1;
|
||||
BOOL radarEnabled = TRUE;
|
||||
|
||||
if (UndergroundRecord_GetFlagRank(SaveData_UndergroundRecord(menu->fieldSystem->saveData)) < BASE_FLAG_GOLD) {
|
||||
radarEnabled = FALSE;
|
||||
trueOptionCount -= 1;
|
||||
}
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
|
||||
menu->menuOptions = StringList_New(trueOptionCount, HEAP_ID_FIELD1);
|
||||
|
||||
Window_Add(menu->fieldSystem->bgConfig, &menu->primaryWindow, BG_LAYER_MAIN_3, 17, 3, 14, trueOptionCount * 2, 13, 2);
|
||||
Window_DrawStandardFrame(&menu->primaryWindow, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, 11);
|
||||
|
||||
MessageLoader *loader = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_PC, HEAP_ID_FIELD1);
|
||||
|
||||
for (int i = 0; i < trueOptionCount; i++) {
|
||||
if (i == trueOptionCount - 1) {
|
||||
StringList_AddFromMessageBank(menu->menuOptions, loader, startBankEntry + (UndergroundPC_Text_Exit - UndergroundPC_Text_Decorate), LIST_CANCEL);
|
||||
} else {
|
||||
StringList_AddFromMessageBank(menu->menuOptions, loader, startBankEntry + i, i);
|
||||
}
|
||||
}
|
||||
|
||||
MessageLoader_Free(loader);
|
||||
|
||||
ListMenuTemplate template;
|
||||
MI_CpuCopy8(UndergroundTextPrinter_GetListMenuTemplate(), &template, sizeof(ListMenuTemplate));
|
||||
|
||||
template.count = trueOptionCount;
|
||||
template.maxDisplay = trueOptionCount;
|
||||
template.choices = menu->menuOptions;
|
||||
template.window = &menu->primaryWindow;
|
||||
|
||||
if (cursorCallback) {
|
||||
template.cursorCallback = cursorCallback;
|
||||
}
|
||||
|
||||
template.parent = menu;
|
||||
UndergroundMenu_MoveListCursorPosInBounds(menu, trueOptionCount, template.count);
|
||||
menu->unk_48 = ListMenu_New(&template, menu->listMenuListPos, menu->listMenuCursorPos, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
static void UndergroundPC_InitRadarMenu(UndergroundMenu *menu, int startBankEntry, int optionCount, CursorCallback cursorCallback, int unused)
|
||||
{
|
||||
int trueOptionCount = optionCount + 1;
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
|
||||
menu->menuOptions = StringList_New(trueOptionCount, HEAP_ID_FIELD1);
|
||||
|
||||
Window_Add(menu->fieldSystem->bgConfig, &menu->primaryWindow, BG_LAYER_MAIN_3, 17, 3, 14, trueOptionCount * 2, 13, 2 + 14 * 16);
|
||||
Window_DrawStandardFrame(&menu->primaryWindow, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, 11);
|
||||
|
||||
MessageLoader *loader = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_PC, HEAP_ID_FIELD1);
|
||||
|
||||
for (int i = 0; i < trueOptionCount; i++) {
|
||||
if (i == optionCount) {
|
||||
StringList_AddFromMessageBank(menu->menuOptions, loader, startBankEntry + i, LIST_CANCEL);
|
||||
} else {
|
||||
StringList_AddFromMessageBank(menu->menuOptions, loader, startBankEntry + i, i);
|
||||
}
|
||||
}
|
||||
|
||||
MessageLoader_Free(loader);
|
||||
|
||||
ListMenuTemplate template;
|
||||
MI_CpuCopy8(UndergroundTextPrinter_GetListMenuTemplate(), &template, sizeof(ListMenuTemplate));
|
||||
|
||||
template.count = optionCount + 1;
|
||||
template.maxDisplay = trueOptionCount;
|
||||
template.choices = menu->menuOptions;
|
||||
template.window = &menu->primaryWindow;
|
||||
|
||||
if (cursorCallback) {
|
||||
template.cursorCallback = cursorCallback;
|
||||
}
|
||||
|
||||
template.parent = menu;
|
||||
UndergroundMenu_MoveListCursorPosInBounds(menu, trueOptionCount, template.count);
|
||||
menu->unk_48 = ListMenu_New(&template, menu->listMenuListPos, menu->listMenuCursorPos, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_HandleRadarMenu(SysTask *sysTask, void *data)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
u32 input = ListMenu_ProcessInput(menu->unk_48);
|
||||
|
||||
u16 listPos, cursorPos;
|
||||
ListMenu_GetListAndCursorPos(menu->unk_48, &listPos, &cursorPos);
|
||||
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_PC_RADAR, cursorPos, listPos);
|
||||
UndergroundPC_UpdateCursorPos(menu);
|
||||
|
||||
switch (input) {
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
return FALSE;
|
||||
case LIST_CANCEL:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
break;
|
||||
case RADAR_MENU_OPTION_TREASURE:
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
menu->state = UG_PC_MENU_STATE_TREASURE_RADAR_NOT_AVAILABLE;
|
||||
} else {
|
||||
menu->state = UG_PC_MENU_STATE_START_TREASURE_RADAR;
|
||||
}
|
||||
break;
|
||||
case RADAR_MENU_OPTION_SPHERE:
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
menu->state = UG_PC_MENU_STATE_SPHERE_RADAR_NOT_AVAILABLE;
|
||||
} else {
|
||||
menu->state = UG_PC_MENU_STATE_START_SPHERE_RADAR;
|
||||
}
|
||||
break;
|
||||
case RADAR_MENU_OPTION_TRAP:
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
menu->state = UG_PC_MENU_STATE_TRAP_RADAR_NOT_AVAILABLE;
|
||||
} else {
|
||||
menu->state = UG_PC_MENU_STATE_START_TRAP_RADAR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
menu->state = UG_PC_MENU_STATE_EXIT;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_HandleStoreGoodsMenu(SysTask *sysTask, void *data)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
u32 input = UndergroundItemListMenu_ProcessInput(menu->itemListMenu);
|
||||
|
||||
u16 listPos, cursorPos;
|
||||
ListMenu_GetListAndCursorPos(menu->itemListMenu->listMenu, &listPos, &cursorPos);
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_STORE_GOODS, cursorPos, listPos);
|
||||
|
||||
// make sure we have the right type of -2
|
||||
if (input == MENU_CANCELED) {
|
||||
input = LIST_CANCEL;
|
||||
}
|
||||
|
||||
switch (input) {
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
UndergroundMenu_UpdateScrollPrompts(menu, listPos, ListMenu_GetAttribute(menu->itemListMenu->listMenu, LIST_MENU_COUNT), 6);
|
||||
return FALSE;
|
||||
case LIST_CANCEL:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
break;
|
||||
default:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
u32 goodID = UndergroundMenu_GetGoodAtSlotBag(input, menu);
|
||||
|
||||
if (UndergroundPC_TryDepositGood(input, menu)) {
|
||||
UndergroundTextPrinter_SetUndergroundGoodsName(CommManUnderground_GetMiscTextPrinter(), goodID);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_GoodWasStored, FALSE, NULL);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_PCIsFull, FALSE, NULL);
|
||||
}
|
||||
|
||||
menu->state = UG_PC_MENU_STATE_STORE_GOODS_WAIT_FOR_MESSAGE;
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_HandleWithdrawGoodsMenu(SysTask *sysTask, void *data)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
|
||||
u32 input = UndergroundItemListMenu_ProcessInput(menu->itemListMenu);
|
||||
|
||||
u16 listPos, cursorPos;
|
||||
ListMenu_GetListAndCursorPos(menu->itemListMenu->listMenu, &listPos, &cursorPos);
|
||||
CommManUnderground_StoreCursorAndListPos(UNDERGROUND_MENU_KEY_WITHDRAW_GOODS, cursorPos, listPos);
|
||||
|
||||
// make sure we have the right type of -2
|
||||
if (input == MENU_CANCELED) {
|
||||
input = LIST_CANCEL;
|
||||
}
|
||||
|
||||
switch (input) {
|
||||
case LIST_NOTHING_CHOSEN:
|
||||
UndergroundMenu_UpdateScrollPrompts(menu, listPos, ListMenu_GetAttribute(menu->itemListMenu->listMenu, LIST_MENU_COUNT), 6);
|
||||
return FALSE;
|
||||
case LIST_CANCEL:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
break;
|
||||
default:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
u32 goodID = UndergroundMenu_GetGoodAtSlotPC(input, menu);
|
||||
int withdrawResult = UndergroundPC_TryWithdrawGood(input, menu);
|
||||
|
||||
if (withdrawResult == 1) {
|
||||
UndergroundTextPrinter_SetUndergroundGoodsName(CommManUnderground_GetMiscTextPrinter(), goodID);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_GoodWasWithdrawn, FALSE, NULL);
|
||||
} else if (withdrawResult == -1) {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_CantWithdrawDisplayedGood, FALSE, NULL);
|
||||
} else {
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_BagIsFull, FALSE, NULL);
|
||||
}
|
||||
|
||||
menu->state = 22;
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
break;
|
||||
}
|
||||
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_IsMessageClosed(UndergroundMenu *unused)
|
||||
{
|
||||
if (!UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetMiscTextPrinter())) {
|
||||
if (JOY_NEW(PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void UndergroundPC_MoveCamera(BOOL isDecorating, FieldSystem *fieldSystem)
|
||||
{
|
||||
VecFx32 delta;
|
||||
|
||||
delta.y = 0;
|
||||
delta.x = 15 * FX32_ONE * 16 - Player_GetXPos(fieldSystem->playerAvatar) * FX32_ONE * 16;
|
||||
delta.z = 17 * FX32_ONE * 16 - Player_GetZPos(fieldSystem->playerAvatar) * FX32_ONE * 16;
|
||||
|
||||
if (!isDecorating) {
|
||||
delta.x = -delta.x;
|
||||
delta.z = -delta.z;
|
||||
}
|
||||
|
||||
Camera_Move(&delta, fieldSystem->camera);
|
||||
}
|
||||
|
||||
static BOOL UndergroundPC_DecorateTask(FieldTask *task)
|
||||
{
|
||||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
|
||||
DecorateContext *ctx = FieldTask_GetEnv(task);
|
||||
|
||||
switch (ctx->state) {
|
||||
case DECORATE_STATE_FADE:
|
||||
Sound_PlayEffect(SEQ_SE_DP_PC_LOGIN);
|
||||
StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, HEAP_ID_FIELD1);
|
||||
ctx->state = DECORATE_STATE_UPDATE_CAMERA;
|
||||
break;
|
||||
case DECORATE_STATE_UPDATE_CAMERA:
|
||||
if (IsScreenFadeDone()) {
|
||||
PlayerAvatar_SetVisible(fieldSystem->playerAvatar, FALSE);
|
||||
|
||||
UndergroundPC_MoveCamera(TRUE, fieldSystem);
|
||||
ctx->state = DECORATE_STATE_START;
|
||||
}
|
||||
break;
|
||||
case DECORATE_STATE_START:
|
||||
ov23_02254D98(fieldSystem, task);
|
||||
ctx->state = DECORATE_STATE_MAIN;
|
||||
break;
|
||||
case DECORATE_STATE_MAIN:
|
||||
ctx->state = DECORATE_STATE_REVERT_CAMERA;
|
||||
break;
|
||||
case DECORATE_STATE_REVERT_CAMERA:
|
||||
PlayerAvatar_SetVisible(fieldSystem->playerAvatar, TRUE);
|
||||
UndergroundPC_MoveCamera(FALSE, fieldSystem);
|
||||
StartScreenFade(FADE_MAIN_THEN_SUB, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 1, HEAP_ID_FIELD1);
|
||||
ctx->state = DECORATE_STATE_END;
|
||||
break;
|
||||
case DECORATE_STATE_END:
|
||||
if (IsScreenFadeDone()) {
|
||||
ov23_0224B2C8(fieldSystem);
|
||||
SystemFlag_SetDecoratedSecretBase(SaveData_GetVarsFlags(fieldSystem->saveData));
|
||||
UndergroundPC_OpenPCMenu(fieldSystem);
|
||||
Heap_Free(ctx);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void UndergroundPC_ExitPCMenu(SysTask *sysTask, UndergroundMenu *menu)
|
||||
{
|
||||
Strbuf_Free(menu->strbuf);
|
||||
Strbuf_Free(menu->fmtString);
|
||||
StringTemplate_Free(menu->template);
|
||||
|
||||
if (menu->exitCallback != NULL) {
|
||||
menu->exitCallback(0);
|
||||
}
|
||||
|
||||
if (menu->scrollPrompts) {
|
||||
ScrollPrompts_Free(menu->scrollPrompts);
|
||||
menu->scrollPrompts = NULL;
|
||||
}
|
||||
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
|
||||
SysTask_Done(sysTask);
|
||||
Heap_Free(menu);
|
||||
}
|
||||
|
||||
static void UndergroundPC_Main(SysTask *sysTask, void *data)
|
||||
{
|
||||
UndergroundMenu *menu = data;
|
||||
DecorateContext *decorateCtx;
|
||||
|
||||
switch (menu->state) {
|
||||
case UG_PC_MENU_STATE_INIT:
|
||||
UndergroundMenu_RemoveDescriptionWindowInstant(menu);
|
||||
menu->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(UNDERGROUND_MENU_KEY_PC);
|
||||
menu->listMenuListPos = CommManUnderground_GetStoredListPos(UNDERGROUND_MENU_KEY_PC);
|
||||
menu->unk_2AE = menu->listMenuCursorPos;
|
||||
UndergroundPC_InitMenu(menu, UndergroundPC_Text_Decorate, 5, UndergroundPC_PrintMenuItemDescription, 0);
|
||||
menu->state = UG_PC_MENU_STATE_MAIN;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_MAIN:
|
||||
UndergroundPC_HandleMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_EXIT:
|
||||
CommPlayerMan_ResumeFieldSystem();
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundPC_ExitPCMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_INIT_CHECK_FLAGS:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
menu->unk_270 = ov23_02253C64(menu->fieldSystem->bgConfig, SaveData_GetTrainerInfo(FieldSystem_GetSaveData(menu->fieldSystem)), SaveData_GetUnderground(FieldSystem_GetSaveData(menu->fieldSystem)), NULL, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_CHECK_FLAGS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_CHECK_FLAGS:
|
||||
if (JOY_NEW(PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
ov23_02253D10(menu->unk_270);
|
||||
menu->unk_270 = NULL;
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
}
|
||||
break;
|
||||
case UG_PC_MENU_STATE_INIT_RADAR_MENU:
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
menu->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(UNDERGROUND_MENU_KEY_PC_RADAR);
|
||||
menu->listMenuListPos = CommManUnderground_GetStoredListPos(UNDERGROUND_MENU_KEY_PC_RADAR);
|
||||
menu->unk_2AE = menu->listMenuCursorPos;
|
||||
UndergroundPC_InitRadarMenu(menu, UndergroundPC_Text_TreasureSearch, 3, UndergroundPC_PrintRadarMenuItemDescription, 1);
|
||||
menu->state = UG_PC_MENU_STATE_RADAR_MENU_MAIN;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_RADAR_MENU_MAIN:
|
||||
UndergroundPC_HandleRadarMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_START_TREASURE_RADAR:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
CommManUnderground_SetTreasureRadarActive();
|
||||
ov23_022412F0();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_TreasureRadarBootedUp, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_TREASURE_RADAR_NOT_AVAILABLE:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_TreasureRadarEntranceClosed, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_START_SPHERE_RADAR:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
CommManUnderground_SetSphereRadarActive();
|
||||
SphereRadar_Start();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_SphereRadarBootedUp, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_SPHERE_RADAR_NOT_AVAILABLE:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_SphereRadarEntranceClosed, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_START_TRAP_RADAR:
|
||||
UndergroundMenu_EraseCurrentMenu(menu);
|
||||
CommManUnderground_SetTrapRadarActive();
|
||||
TrapRadar_Start();
|
||||
BrightnessController_StartTransition(1, -6, 0, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_TrapRadarBootedUp, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_TRAP_RADAR_NOT_AVAILABLE:
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetMiscTextPrinter(), UndergroundPC_Text_TrapRadarEntranceClosed, FALSE, NULL);
|
||||
menu->state = UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_EXIT_RADAR_ON_BUTTON_PRESS:
|
||||
if (!UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetMiscTextPrinter())) {
|
||||
if (JOY_NEW(PAD_BUTTON_A | PAD_BUTTON_B)) {
|
||||
if (!CommServerClient_IsInClosedSecretBase()) {
|
||||
BrightnessController_StartTransition(1, 0, -6, GX_BLEND_PLANEMASK_BG0, BRIGHTNESS_MAIN_SCREEN);
|
||||
}
|
||||
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetMiscTextPrinter());
|
||||
|
||||
if (CommServerClient_IsInClosedSecretBase()) {
|
||||
ov23_02242FA8();
|
||||
} else {
|
||||
ov23_02242FBC();
|
||||
}
|
||||
|
||||
TrapRadar_Exit();
|
||||
ov23_02241364();
|
||||
SphereRadar_Exit();
|
||||
|
||||
menu->state = UG_PC_MENU_STATE_INIT_RADAR_MENU;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case UG_PC_MENU_STATE_DECORATE:
|
||||
if (menu->fieldSystem->task == NULL) {
|
||||
decorateCtx = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(DecorateContext));
|
||||
MI_CpuClear8(decorateCtx, sizeof(DecorateContext));
|
||||
decorateCtx->state = 0;
|
||||
decorateCtx->dummy = 0;
|
||||
FieldSystem_CreateTask(menu->fieldSystem, UndergroundPC_DecorateTask, decorateCtx);
|
||||
}
|
||||
|
||||
UndergroundPC_ExitPCMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_INIT_STORE_GOODS:
|
||||
menu->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(UNDERGROUND_MENU_KEY_STORE_GOODS);
|
||||
menu->listMenuListPos = CommManUnderground_GetStoredListPos(UNDERGROUND_MENU_KEY_STORE_GOODS);
|
||||
UndergroundMenu_OpenStoreGoodsMenu(menu);
|
||||
UndergroundMenu_PrintMenuDescription(menu, UndergroundPC_Text_GoodsOnHand);
|
||||
menu->state = UG_PC_MENU_STATE_STORE_GOODS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_STORE_GOODS:
|
||||
UndergroundPC_HandleStoreGoodsMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_STORE_GOODS_WAIT_FOR_MESSAGE:
|
||||
if (UndergroundPC_IsMessageClosed(menu)) {
|
||||
menu->state = UG_PC_MENU_STATE_INIT_STORE_GOODS;
|
||||
}
|
||||
break;
|
||||
case UG_PC_MENU_STATE_INIT_WITHDRAW_GOODS:
|
||||
menu->listMenuCursorPos = CommManUnderground_GetStoredCursorPos(UNDERGROUND_MENU_KEY_WITHDRAW_GOODS);
|
||||
menu->listMenuListPos = CommManUnderground_GetStoredListPos(UNDERGROUND_MENU_KEY_WITHDRAW_GOODS);
|
||||
UndergroundMenu_OpenWithdrawGoodsMenu(menu);
|
||||
UndergroundMenu_PrintMenuDescription(menu, UndergroundPC_Text_GoodsInPC);
|
||||
menu->state = UG_PC_MENU_STATE_WITHDRAW_GOODS;
|
||||
break;
|
||||
case UG_PC_MENU_STATE_WITHDRAW_GOODS:
|
||||
UndergroundPC_HandleWithdrawGoodsMenu(sysTask, menu);
|
||||
break;
|
||||
case UG_PC_MENU_STATE_WITHDRAW_GOODS_WAIT_FOR_MESSAGE:
|
||||
if (UndergroundPC_IsMessageClosed(menu)) {
|
||||
menu->state = UG_PC_MENU_STATE_INIT_WITHDRAW_GOODS;
|
||||
}
|
||||
break;
|
||||
case UG_PC_MENU_STATE_WAIT_FOR_MESSAGE:
|
||||
if (UndergroundPC_IsMessageClosed(menu)) {
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void UndergroundPC_OpenPCMenu(FieldSystem *fieldSystem)
|
||||
{
|
||||
const int unused = 6;
|
||||
|
||||
CommManUnderground_SetStoredPosKey(UNDERGROUND_STORED_POS_KEY_PC);
|
||||
|
||||
UndergroundMenu *menu = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UndergroundMenu));
|
||||
MI_CpuFill8(menu, 0, sizeof(UndergroundMenu));
|
||||
menu->fieldSystem = fieldSystem;
|
||||
|
||||
UndergroundTextPrinter_ChangeMessageLoaderBank(CommManUnderground_GetMiscTextPrinter(), TEXT_BANK_UNDERGROUND_PC, MSG_LOADER_LOAD_ON_DEMAND);
|
||||
|
||||
menu->state = UG_PC_MENU_STATE_INIT;
|
||||
menu->strbuf = Strbuf_Init(50 * 2, HEAP_ID_FIELD1);
|
||||
menu->fmtString = Strbuf_Init(50 * 2, HEAP_ID_FIELD1);
|
||||
menu->template = StringTemplate_Default(HEAP_ID_FIELD1);
|
||||
menu->scrollPrompts = ScrollPrompts_New(HEAP_ID_FIELD1);
|
||||
|
||||
ScrollPrompts_SetPosition(menu->scrollPrompts, 200, 20, 122);
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_TOP_ARROW, FALSE);
|
||||
ScrollPrompts_SetDrawFlag(menu->scrollPrompts, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
|
||||
|
||||
menu->sysTask = SysTask_Start(UndergroundPC_Main, menu, 10000);
|
||||
|
||||
CommManUnderground_SetCurrentSysTask(menu, menu->sysTask, UndergroundMenu_ResetBrightnessAndExit);
|
||||
}
|
||||
|
||||
static void UndergroundPC_TakeFlagPromptTask(SysTask *sysTask, void *data)
|
||||
{
|
||||
TakeFlagPromptContext *ctx = data;
|
||||
|
||||
switch (ctx->state) {
|
||||
case TAKE_FLAG_PROMPT_STATE_INIT:
|
||||
if (!UndergroundTextPrinter_IsPrinterActive(CommManUnderground_GetCommonTextPrinter())) {
|
||||
ctx->menu = Menu_MakeYesNoChoice(ctx->fieldSystem->bgConfig, &sWindowTemplate, BASE_TILE_STANDARD_WINDOW_FRAME, 11, HEAP_ID_FIELD1);
|
||||
ctx->state = TAKE_FLAG_PROMPT_STATE_MAIN;
|
||||
}
|
||||
break;
|
||||
case TAKE_FLAG_PROMPT_STATE_MAIN:
|
||||
int input = Menu_ProcessInputAndHandleExit(ctx->menu, HEAP_ID_FIELD1);
|
||||
|
||||
if (input == MENU_NOTHING_CHOSEN) {
|
||||
return;
|
||||
} else if (input == 0) {
|
||||
CommSys_SendDataFixedSize(89, &ctx->pcInteraction);
|
||||
} else {
|
||||
CommPlayerMan_ResumeFieldSystemWithContextBit(PAUSE_BIT_LINK_PC);
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetCommonTextPrinter());
|
||||
}
|
||||
|
||||
ctx->state = TAKE_FLAG_PROMPT_STATE_EXIT;
|
||||
ctx->menu = NULL;
|
||||
break;
|
||||
case TAKE_FLAG_PROMPT_STATE_EXIT:
|
||||
Heap_Free(ctx);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
SysTask_Done(sysTask);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void UndergroundPC_EndFlagPromptTask(SysTask *sysTask, void *data)
|
||||
{
|
||||
TakeFlagPromptContext *ctx = data;
|
||||
|
||||
if (ctx->menu) {
|
||||
Menu_DestroyForExit(ctx->menu, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
Heap_Free(ctx);
|
||||
SysTask_Done(sysTask);
|
||||
}
|
||||
|
||||
static void UndergroundPC_StartTakeFlagPromptTask(FieldSystem *fieldSystem, PCInteraction *pcInteraction)
|
||||
{
|
||||
TakeFlagPromptContext *ctx = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UndergroundMenu));
|
||||
|
||||
MI_CpuFill8(ctx, 0, sizeof(TakeFlagPromptContext));
|
||||
|
||||
ctx->state = TAKE_FLAG_PROMPT_STATE_INIT;
|
||||
ctx->fieldSystem = fieldSystem;
|
||||
ctx->sysTask = SysTask_Start(UndergroundPC_TakeFlagPromptTask, ctx, 10000);
|
||||
|
||||
UndergroundTextPrinter_SetPlayerNameIndex0(CommManUnderground_GetCommonTextPrinter(), CommInfo_TrainerInfo(pcInteraction->pcNetID));
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCommonTextPrinter(), UndergroundCommon_Text_TakeFlagPrompt, FALSE, NULL);
|
||||
|
||||
ctx->pcInteraction.playerNetID = pcInteraction->playerNetID;
|
||||
ctx->pcInteraction.pcNetID = pcInteraction->pcNetID;
|
||||
ctx->pcInteraction.canTakeFlag = pcInteraction->canTakeFlag;
|
||||
|
||||
CommManUnderground_SetCurrentSysTask(ctx, ctx->sysTask, UndergroundPC_EndFlagPromptTask);
|
||||
}
|
||||
|
||||
void UndergroundPC_ProcessTakeFlagAttempt(int unused0, int unused1, void *data, void *unused3)
|
||||
{
|
||||
PCInteraction *pcInteraction = data;
|
||||
|
||||
if (ov23_TryTakeFlag(pcInteraction->playerNetID, pcInteraction->pcNetID)) {
|
||||
sub_02035B48(90, pcInteraction);
|
||||
}
|
||||
}
|
||||
|
||||
void UndergroundPC_ProcessTakenFlag(int unused0, int unused1, void *data, void *unused3)
|
||||
{
|
||||
PCInteraction *pcInteraction = data;
|
||||
|
||||
if (CommSys_CurNetId() == pcInteraction->playerNetID) {
|
||||
UndergroundTextPrinter_SetPlayerNameIndex0(CommManUnderground_GetCaptureFlagTextPrinter(), CommInfo_TrainerInfo(pcInteraction->pcNetID));
|
||||
UndergroundTextPrinter_PrintText(CommManUnderground_GetCaptureFlagTextPrinter(), UndergroundCaptureFlag_Text_YouObtainedFlag, TRUE, UndergroundPC_ResumeFieldSystem);
|
||||
Sound_PlayBGM(SEQ_HATANIGE);
|
||||
}
|
||||
|
||||
ov23_TryTakeFlag(pcInteraction->playerNetID, pcInteraction->pcNetID);
|
||||
ov23_0224D500(pcInteraction->playerNetID, pcInteraction->pcNetID);
|
||||
}
|
||||
|
||||
static void UndergroundPC_UpdateCursorPos(UndergroundMenu *menu)
|
||||
{
|
||||
u16 prevPos = menu->unk_2AE;
|
||||
ListMenu_CalcTrueCursorPos(menu->unk_48, &menu->unk_2AE);
|
||||
|
||||
if (prevPos != menu->unk_2AE) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
}
|
||||
}
|
||||
|
|
@ -360,8 +360,8 @@ static void UndergroundTalk_Exit(SysTask *sysTask, TalkMenu *menu)
|
|||
}
|
||||
|
||||
if (menu->giftMenu) {
|
||||
UndergroundMenu_ExitGiftMenu(menu->giftMenu, LIST_CANCEL);
|
||||
ov23_02243204();
|
||||
UndergroundMenu_Exit(menu->giftMenu, LIST_CANCEL);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
}
|
||||
|
||||
UndergroundTalk_CloseTalkMenu(sysTask, menu);
|
||||
|
|
@ -908,8 +908,8 @@ static void UndergroundTalk_Main(SysTask *sysTask, void *data)
|
|||
}
|
||||
|
||||
if (menu->giftMenu) {
|
||||
UndergroundMenu_ExitGiftMenu(menu->giftMenu, LIST_CANCEL);
|
||||
ov23_02243204();
|
||||
UndergroundMenu_Exit(menu->giftMenu, LIST_CANCEL);
|
||||
CommManUnderground_ClearCurrentSysTaskInfo();
|
||||
UndergroundTextPrinter_EraseMessageBoxWindow(CommManUnderground_GetItemNameTextPrinter());
|
||||
menu->giftMenu = NULL;
|
||||
}
|
||||
|
|
@ -1456,12 +1456,10 @@ void UndergroundTalk_ExitConversation(void)
|
|||
|
||||
static void UndergroundTalk_UpdateCursorPos(TalkMenu *menu)
|
||||
{
|
||||
u16 pos = menu->cursorPos;
|
||||
u16 prevPos = menu->cursorPos;
|
||||
ListMenu_CalcTrueCursorPos(menu->listMenu, &menu->cursorPos);
|
||||
|
||||
if (pos != menu->cursorPos) {
|
||||
if (prevPos != menu->cursorPos) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -270,11 +270,11 @@ int Player_MoveState(const PlayerAvatar *playerAvatar)
|
|||
return playerAvatar->unk_18;
|
||||
}
|
||||
|
||||
void PlayerAvatar_SetHidden(PlayerAvatar *playerAvatar, int param1)
|
||||
void PlayerAvatar_SetVisible(PlayerAvatar *playerAvatar, BOOL visible)
|
||||
{
|
||||
MapObject *mapObj = Player_MapObject(playerAvatar);
|
||||
|
||||
if (param1 == 1) {
|
||||
if (visible == TRUE) {
|
||||
MapObject_SetStatusFlagOff(mapObj, MAP_OBJ_STATUS_HIDE);
|
||||
} else {
|
||||
MapObject_SetStatusFlagOn(mapObj, MAP_OBJ_STATUS_HIDE);
|
||||
|
|
|
|||
|
|
@ -1274,15 +1274,15 @@ void UndergroundRecord_IncrementGiftsReceived(UndergroundRecord *undergroundReco
|
|||
}
|
||||
}
|
||||
|
||||
int sub_020297AC(const UndergroundRecord *param0)
|
||||
int UndergroundRecord_GetTimesFlagTaken(const UndergroundRecord *undergroundRecord)
|
||||
{
|
||||
return param0->unk_2C_0;
|
||||
return undergroundRecord->timesFlagTaken;
|
||||
}
|
||||
|
||||
void sub_020297B4(UndergroundRecord *param0)
|
||||
void UndergroundRecord_IncrementTimesFlagTaken(UndergroundRecord *undergroundRecord)
|
||||
{
|
||||
if (param0->unk_2C_0 < 999999) {
|
||||
param0->unk_2C_0++;
|
||||
if (undergroundRecord->timesFlagTaken < 999999) {
|
||||
undergroundRecord->timesFlagTaken++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -779,7 +779,7 @@ static int sub_02033DDC(void)
|
|||
return v0;
|
||||
}
|
||||
|
||||
BOOL sub_02033DFC(void)
|
||||
BOOL CommServerClient_IsInClosedSecretBase(void)
|
||||
{
|
||||
if (sCommServerClient && (sCommServerClient->unk_1516 == 3)) {
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -2478,7 +2478,7 @@ void sub_02038A20(int param0)
|
|||
|
||||
BOOL sub_02038AB8(void)
|
||||
{
|
||||
if (sub_02033DFC() || !CommMan_IsInitialized()) {
|
||||
if (CommServerClient_IsInClosedSecretBase() || !CommMan_IsInitialized()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ void sub_0205CA94(SysTask *param0, void *param1)
|
|||
switch (v0->unk_1E4) {
|
||||
case 0:
|
||||
MapObject_SetPauseMovementOff(Player_MapObject(v0->fieldSystem->playerAvatar));
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 0);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 0);
|
||||
v0->unk_1E4++;
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -189,7 +189,7 @@ void sub_0205CBFC(SysTask *param0, void *param1)
|
|||
|
||||
switch (v0->unk_1E4) {
|
||||
case 0:
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 0);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 0);
|
||||
v0->unk_1E4++;
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -216,7 +216,7 @@ void sub_0205CBFC(SysTask *param0, void *param1)
|
|||
|
||||
if (v0->unk_1E8 > 0) {
|
||||
v0->unk_1E4++;
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 1);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 1);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
|
|
@ -242,7 +242,7 @@ void sub_0205CD3C(SysTask *param0, void *param1)
|
|||
|
||||
switch (v0->unk_1E4) {
|
||||
case 0:
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 0);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 0);
|
||||
v0->unk_1E4++;
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -303,7 +303,7 @@ void sub_0205CE7C(SysTask *param0, void *param1)
|
|||
|
||||
switch (v0->unk_1E4) {
|
||||
case 0:
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 0);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 0);
|
||||
sub_0205D274(v0, &v0->unk_1C0[0], 4);
|
||||
sub_0205D274(v0, &v0->unk_1C0[1], 5);
|
||||
v0->unk_1E0 = 2;
|
||||
|
|
@ -323,7 +323,7 @@ void sub_0205CE7C(SysTask *param0, void *param1)
|
|||
v1[0] = v0->unk_1C0[0].unk_0C(&v0->unk_1C0[0]);
|
||||
|
||||
if (v1[0] == 0) {
|
||||
PlayerAvatar_SetHidden(v0->fieldSystem->playerAvatar, 1);
|
||||
PlayerAvatar_SetVisible(v0->fieldSystem->playerAvatar, 1);
|
||||
v0->unk_1E8 = 6;
|
||||
v0->unk_1E4++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
#include "overlay023/ov23_02241F74.h"
|
||||
#include "overlay023/ov23_0224A1D0.h"
|
||||
#include "overlay023/ov23_0224B05C.h"
|
||||
#include "overlay023/ov23_0225128C.h"
|
||||
#include "overlay023/ov23_02253598.h"
|
||||
#include "overlay023/underground_pc.h"
|
||||
#include "overlay023/underground_player_talk.h"
|
||||
#include "overlay023/underground_spheres.h"
|
||||
#include "overlay023/underground_traps.h"
|
||||
|
|
@ -49,7 +49,7 @@ static const CommCmdTable Unk_020F68A4[] = {
|
|||
{ CommPlayer_RecvLocation, CommPacketSizeOf_RecvLocation, NULL },
|
||||
{ CommPlayer_RecvLocationAndInit, CommPacketSizeOf_RecvLocationAndInit, NULL },
|
||||
{ ov23_022431C4, CommPacketSizeOf_NetId, NULL },
|
||||
{ ov23_0224ACE8, sub_0203294C, NULL },
|
||||
{ ov23_0224ACE8, sub_0203294C, NULL }, // 25
|
||||
{ ov23_0224ACF8, CommPacketSizeOf_NetId, NULL },
|
||||
{ ov23_0224A348, sub_0203294C, NULL },
|
||||
{ ov23_022428D8, ov23_022428D4, NULL },
|
||||
|
|
@ -74,7 +74,7 @@ static const CommCmdTable Unk_020F68A4[] = {
|
|||
{ UndergroundTraps_ReceiveTrapRadarResults, CommPacketSizeOf_TrapRadarResult, NULL },
|
||||
{ ov23_022425F8, CommPacketSizeOf_Coordinates, NULL },
|
||||
{ ov23_02242624, sub_02032944, NULL },
|
||||
{ ov23_02242654, sub_02032944, NULL },
|
||||
{ ov23_02242654, sub_02032944, NULL }, // 50
|
||||
{ UndergroundTraps_ProcessDisengagedTrap, CommPacketSizeOf_TriggeredTrap, NULL },
|
||||
{ CommPlayer_RecvDelete, CommPacketSizeOf_NetId, NULL },
|
||||
{ ov23_0224C384, ov23_0224C41C, NULL },
|
||||
|
|
@ -99,7 +99,7 @@ static const CommCmdTable Unk_020F68A4[] = {
|
|||
{ ov23_0224142C, ov23_022414D0, NULL },
|
||||
{ UndergroundTalk_RequestLinkTalkStateUpdateServer, CommPacketSizeOf_TalkStateChangeRequest, NULL },
|
||||
{ UndergroundTalkResponse_RequestLinkTalkStateUpdateServer, CommPacketSizeOf_TalkStateChangeRequest, NULL },
|
||||
{ UndergroundTalkResponse_HandleLinkTalkStateUpdateServer, CommPacketSizeOf_TalkStateChangeRequest, NULL },
|
||||
{ UndergroundTalkResponse_HandleLinkTalkStateUpdateServer, CommPacketSizeOf_TalkStateChangeRequest, NULL }, // 75
|
||||
{ UndergroundTalk_HandleLinkTalkStateUpdateServer, CommPacketSizeOf_TalkStateChangeRequest, NULL },
|
||||
{ UndergroundTalk_SendGiftServer, CommPacketSizeOf_Gift, NULL },
|
||||
{ UndergroundTalkResponse_ReceiveGiftOffer, CommPacketSizeOf_Gift, NULL },
|
||||
|
|
@ -107,14 +107,14 @@ static const CommCmdTable Unk_020F68A4[] = {
|
|||
{ UndergroundTalk_ReceiveTalkMessage, CommPacketSizeOf_TalkMessage, NULL },
|
||||
{ ov23_SendRecordServer, sub_02032944, NULL },
|
||||
{ ov23_ReceiveRecord, sub_02032944, NULL },
|
||||
{ ov23_022513B0, ov23_02251414, NULL },
|
||||
{ UndergroundPC_ProcessPCInteraction, CommPacketSizeOf_PCInteraction, NULL }, // 83
|
||||
{ ov23_0224A570, CommPacketSizeOf_NetId, NULL },
|
||||
{ ov23_0224A77C, ov23_0224A56C, NULL },
|
||||
{ ov23_0224CD80, CommPacketSizeOf_NetId, NULL },
|
||||
{ ov23_0224CF18, ov23_0224CD7C, NULL },
|
||||
{ sub_02059EAC, CommPacketSizeOf_TrainerCard, sub_02059EBC },
|
||||
{ ov23_0225215C, ov23_02251414, NULL },
|
||||
{ ov23_02252178, ov23_02251414, NULL },
|
||||
{ UndergroundPC_ProcessTakeFlagAttempt, CommPacketSizeOf_PCInteraction, NULL },
|
||||
{ UndergroundPC_ProcessTakenFlag, CommPacketSizeOf_PCInteraction, NULL },
|
||||
{ ov23_0224AB30, ov23_0224AB2C, NULL },
|
||||
{ ov23_0224ABC4, ov23_0224AC0C, ov23_0224AAA0 },
|
||||
{ ov23_0224AC10, CommPacketSizeOf_NetId, NULL },
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user