mirror of
https://github.com/zeldaret/st
synced 2026-05-23 15:01:41 -04:00
90203403dd
* GameModeAdventure_001 OK * GameModeAdventure_024 17% * GameModeAdventure_024 73% * GameModeAdventure_024 99% * jp region differences * rename GameModeAdventure_024 and GameModeAdventure + UnkStruct_ov000_020d8660_024 OK * UnkActorSystem1OK * UnkActorSystem2 OK * delink more of ov024 & UnkStruct_027e0998_024 OK * improve instance stuff & UnkStruct_027e0cf8_024 OK * AdventureModeManager_160_024 OK & GameModeStartUp OK * fix regressions * fix regressions 2 * AdventureModeManager_170 OK * AdventureModeManager_174_Base OK * AdventureModeManager_174 OK * mark GameModeAdventure_024 as complete * AdventureModeManager_178 OK * AdventureModeManager_180 OK * AdventureModeManager_184_024 OK * AdventureModeManager_18C_024 OK & AdventureModeManager_190_024 OK * AdventureModeManager_15C_20_00 61% * AdventureModeManager_15C_20_00 OK * jp version differences * delink what's left in the overlay * fix regressions * AdventureModeManager_1B8_Base_024 98% * AdventureModeManager_1B8 48% and link AdventureModeManager_024 * AdventureModeManager_1B8_Base and AdventureModeManager_1B8 OK * oops * mark statics as local
111 lines
4.7 KiB
C++
111 lines
4.7 KiB
C++
#pragma once
|
|
|
|
#include "Item/Item.hpp"
|
|
#include "Save/AdventureFlags.hpp"
|
|
#include "global.h"
|
|
#include "types.h"
|
|
|
|
#include <nitro/math.h>
|
|
|
|
#define MAX_PRICECARDS 99
|
|
|
|
enum LetterType_ {
|
|
/* -1 */ LetterType_None = -1,
|
|
/* 0 */ LetterType_MetPostmanFirst = 0, // AdventureFlag_MetPostmanFirstLetter
|
|
/* 1 */ LetterType_ReceivedZeldas = 1, // AdventureFlag_ReceivedZeldasLetter
|
|
/* 2 */ LetterType_ReceivedAlfonzos = 2, // AdventureFlag_ReceivedAlfonzosLetter
|
|
/* 3 */ LetterType_ReceivedRussells = 3, // AdventureFlag_ReceivedRussellsLetter
|
|
/* 4 */ LetterType_ObtainedLinebecks = 4, // AdventureFlag_ObtainedLinebecksLetter
|
|
/* 5 */ LetterType_ReceivedBeedlesFirst = 5, // AdventureFlag_ReceivedBeedlesFirstLetter
|
|
/* 6 */ LetterType_Unk_03E = 6, // AdventureFlag_Unk_03E
|
|
/* 7 */ LetterType_Unk_03F = 7, // AdventureFlag_Unk_03F
|
|
/* 8 */ LetterType_Unk_040 = 8, // AdventureFlag_Unk_040
|
|
/* 9 */ LetterType_Unk_041 = 9, // AdventureFlag_Unk_041
|
|
/* 10 */ LetterType_Unk_042 = 10, // AdventureFlag_Unk_042
|
|
/* 11 */ LetterType_Unk_043 = 11, // AdventureFlag_Unk_043
|
|
/* 12 */ LetterType_Unk_044 = 12, // AdventureFlag_Unk_044
|
|
/* 13 */ LetterType_Unk_045 = 13, // AdventureFlag_Unk_045
|
|
/* 14 */ LetterType_ReceivedCarbens = 14, // AdventureFlag_ReceivedCarbensLetter
|
|
/* 15 */ LetterType_ReceivedNikos = 15, // AdventureFlag_ReceivedNikosLetter
|
|
/* 16 */ LetterType_ReceivedFerrus1 = 16, // AdventureFlag_ReceivedFerrusLetter1
|
|
/* 17 */ LetterType_ReceivedFerrus2 = 17, // AdventureFlag_ReceivedFerrusLetter2
|
|
/* 18 */ LetterType_ReceivedFerrus3 = 18, // AdventureFlag_ReceivedFerrusLetter3
|
|
/* 19 */ LetterType_ReceivedKagorons = 19, // AdventureFlag_ReceivedKagoronsLetter
|
|
/* 20 */ LetterType_Max = 20,
|
|
};
|
|
|
|
enum StampType_ {
|
|
/* -1 */ StampType_None = -1,
|
|
/* 0 */ StampType_TowerOfSpirits = 0,
|
|
/* 1 */ StampType_CastleTown = 1,
|
|
/* 2 */ StampType_OutsetVillage = 2,
|
|
/* 3 */ StampType_Mayscore = 3,
|
|
/* 4 */ StampType_WoodlandSanctuary = 4,
|
|
/* 5 */ StampType_AnoukiVillage = 5,
|
|
/* 6 */ StampType_SnowfallSanctuary = 6,
|
|
/* 7 */ StampType_PapuziaVillage = 7,
|
|
/* 8 */ StampType_IslandSanctuary = 8,
|
|
/* 9 */ StampType_GoronVillage = 9,
|
|
/* 10 */ StampType_ValleySanctuary = 10,
|
|
/* 11 */ StampType_DuneSanctuary = 11,
|
|
/* 12 */ StampType_WoodedTemple = 12,
|
|
/* 13 */ StampType_BlizzardTemple = 13,
|
|
/* 14 */ StampType_MarineTemple = 14,
|
|
/* 15 */ StampType_MountainTemple = 15,
|
|
/* 16 */ StampType_DesertTemple = 16,
|
|
/* 17 */ StampType_PirateHideout = 17,
|
|
/* 18 */ StampType_TradingPost = 18,
|
|
/* 19 */ StampType_IcySpring = 19,
|
|
/* 20 */ StampType_Max = 20,
|
|
};
|
|
|
|
class MiscAdvManager : public AutoInstance<MiscAdvManager> {
|
|
public:
|
|
/* 00 */ u16 mStampDates[StampType_Max];
|
|
/* 28 */ u16 mUnk_28;
|
|
/* 2A */ u16 mPostDate;
|
|
/* 2C */ Vec2b mStampPositions[StampType_Max];
|
|
/* 54 */ s8 mObtainedLetters[LetterType_Max];
|
|
/* 68 */ s8 mObtainedStamps[StampType_Max];
|
|
/* 7C */ u8 mLastRandomNum;
|
|
/* 7D */ u8 mRandomNum;
|
|
/* 7E */ s8 mNumPriceCards; // current amount of price cards
|
|
/* 7F */ s8 mNumPostedPriceCards; // current amount of posted price cards
|
|
/* 80 */ unk8 mUnk_80;
|
|
/* 81 */ unk8 mUnk_81; // pad?
|
|
/* 82 */ unk8 mUnk_82; // pad?
|
|
/* 83 */ unk8 mUnk_83; // pad?
|
|
/* 84 */ unk32 mLettersRead; // bitfield
|
|
/* 88 */ unk32 mStampsFlag; // bitfield, related to the checkmarks from the stampbook
|
|
/* 8C */ unk16 mSongs; // bitfield
|
|
/* 8E */ unk16 mUnk_8E; // pad?
|
|
/* 90 */
|
|
|
|
MiscAdvManager();
|
|
~MiscAdvManager();
|
|
|
|
bool GotMaxPriceCards() {
|
|
return this->GetNumPostcards() >= MAX_PRICECARDS ? true : false;
|
|
}
|
|
|
|
void func_ov024_020d6310(MiscAdvManager *pSrc);
|
|
void GiveLetterOrPriceCard(ItemId itemId);
|
|
void GiveLetter(AdventureFlag_Half flag);
|
|
unk32 GetObtainedLetterCount();
|
|
bool GotUnreadLetters();
|
|
unk32 func_ov024_020d6468();
|
|
unk32 GetStamp(unk32 index);
|
|
u16 *GetStampDate(unk32 index);
|
|
Vec2b *GetStampPos(unk32 index);
|
|
void func_ov024_020d64b4(unk32 param1, unk32 param2, u16 *param3);
|
|
void func_ov024_020d6530();
|
|
unk32 GetNumPostcards();
|
|
void GivePriceCard(unk32 amount);
|
|
void PostPriceCard(unk32 amount, unk32 param2);
|
|
void func_ov024_020d6610();
|
|
|
|
static MiscAdvManager *Create();
|
|
};
|
|
|
|
extern MiscAdvManager *gpMiscAdvManager;
|