mirror of https://github.com/AxioDL/metaforce.git
195 lines
4.6 KiB
C++
195 lines
4.6 KiB
C++
#include "CInventoryScreen.hpp"
|
|
#include "GuiSys/CGuiTableGroup.hpp"
|
|
|
|
namespace urde
|
|
{
|
|
namespace MP1
|
|
{
|
|
|
|
struct SInventoryItem
|
|
{
|
|
u32 idx;
|
|
u32 nameStrIdx;
|
|
u32 entryStrIdx;
|
|
};
|
|
|
|
static const SInventoryItem ArmCannonItems[] =
|
|
{
|
|
{0, 0x24, 0x46}, // Power Beam
|
|
{1, 0x25, 0x48}, // Ice Beam
|
|
{2, 0x26, 0x4a}, // Wave Beam
|
|
{3, 0x27, 0x4c}, // Plasma Beam
|
|
{4, 0x28, 0x4e}, // Phazon Beam
|
|
};
|
|
|
|
static const SInventoryItem MorphballItems[] =
|
|
{
|
|
{5, 0x2e, 0x57}, // Morph Ball
|
|
{6, 0x2f, 0x58}, // Boost Ball
|
|
{7, 0x30, 0x59}, // Spider Ball
|
|
{8, 0x31, 0x5a}, // Morph Ball Bomb
|
|
{9, 0x32, 0x5b}, // Power Bomb
|
|
};
|
|
|
|
static const SInventoryItem SuitItems[] =
|
|
{
|
|
{10, 0x33, 0x52}, // Power Suit
|
|
{11, 0x34, 0x53}, // Varia Suit
|
|
{12, 0x35, 0x54}, // Gravity Suit
|
|
{13, 0x36, 0x55}, // Phazon Suit
|
|
{14, 0x37, 0x56}, // Energy Tank
|
|
};
|
|
|
|
static const SInventoryItem VisorItems[] =
|
|
{
|
|
{15, 0x38, 0x42}, // Combat Visor
|
|
{16, 0x39, 0x43}, // Scan Visor
|
|
{17, 0x3a, 0x44}, // X-Ray Visor
|
|
{18, 0x3b, 0x45}, // Thermal Visor
|
|
};
|
|
|
|
static const SInventoryItem SecondaryItems[] =
|
|
{
|
|
{19, 0x3c, 0x4f}, // Space Jump Boots
|
|
{20, 0x3d, 0x50}, // Grapple Beam
|
|
{21, 0x3e, 0x51}, // Missile Launcher
|
|
{22, 0x3f, 0x5c}, // Charge Beam
|
|
{23, 0x40, 0x5d}, // Beam Combo
|
|
};
|
|
|
|
static const std::pair<u32, const SInventoryItem*> InventoryRegistry[] =
|
|
{
|
|
{5, ArmCannonItems},
|
|
{5, MorphballItems},
|
|
{5, SuitItems},
|
|
{4, VisorItems},
|
|
{5, SecondaryItems},
|
|
};
|
|
|
|
CInventoryScreen::CInventoryScreen(const CStateManager& mgr, CGuiFrame& frame, const CStringTable& pauseStrg,
|
|
const CDependencyGroup& suitDgrp, const CDependencyGroup& ballDgrp)
|
|
: CPauseScreenBase(mgr, frame, pauseStrg)
|
|
{
|
|
CPlayerState& playerState = *mgr.GetPlayerState();
|
|
x19c_samusDoll = std::make_unique<CSamusDoll>(suitDgrp, ballDgrp,
|
|
CPlayerState::EPlayerSuit(int(playerState.GetCurrentSuit()) +
|
|
playerState.IsFusionEnabled() * 4),
|
|
playerState.GetCurrentBeam(),
|
|
playerState.HasPowerUp(CPlayerState::EItemType::SpiderBall),
|
|
playerState.HasPowerUp(CPlayerState::EItemType::GrappleBeam));
|
|
}
|
|
|
|
bool CInventoryScreen::InputDisabled() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void CInventoryScreen::TransitioningAway()
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::Update(float dt, CRandom16& rand, CArchitectureQueue& archQueue)
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::Touch()
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::ProcessControllerInput(const CFinalInput& input)
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::Draw(float transInterp, float totalAlpha, float yOff)
|
|
{
|
|
|
|
}
|
|
|
|
float CInventoryScreen::GetCameraYBias() const
|
|
{
|
|
return 0.f;
|
|
}
|
|
|
|
bool CInventoryScreen::VReady() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void CInventoryScreen::VActivate() const
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::ChangedMode()
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::UpdateRightTable()
|
|
{
|
|
|
|
}
|
|
|
|
u32 CInventoryScreen::GetRightTableCount() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
bool CInventoryScreen::IsRightLogDynamic() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void CInventoryScreen::UpdateRightLogColors(bool active, const zeus::CColor& activeColor,
|
|
const zeus::CColor& inactiveColor)
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::UpdateRightLogHighlight(bool active, int idx,
|
|
const zeus::CColor& activeColor,
|
|
const zeus::CColor& inactiveColor)
|
|
{
|
|
|
|
}
|
|
|
|
void CInventoryScreen::UpdateSamusDollPulses()
|
|
{
|
|
bool pulseSuit = false;
|
|
bool pulseBeam = false;
|
|
bool pulseGrapple = false;
|
|
bool pulseBoots = false;
|
|
bool pulseVisor = false;
|
|
int userSel = x70_tablegroup_leftlog->GetUserSelection();
|
|
|
|
if (x10_mode == EMode::RightTable)
|
|
{
|
|
if (userSel == 2)
|
|
pulseSuit = true;
|
|
else if (userSel == 0)
|
|
pulseBeam = true;
|
|
else if (userSel == 3)
|
|
pulseVisor = true;
|
|
else if (userSel == 4)
|
|
{
|
|
pulseGrapple = SecondaryItems[x1c_rightSel].idx == 20;
|
|
pulseBoots = SecondaryItems[x1c_rightSel].idx == 19;
|
|
if (SecondaryItems[x1c_rightSel].idx == 21)
|
|
pulseBeam = true;
|
|
}
|
|
}
|
|
|
|
x19c_samusDoll->SetPulseSuit(pulseSuit);
|
|
x19c_samusDoll->SetPulseBeam(pulseBeam);
|
|
x19c_samusDoll->SetPulseGrapple(pulseGrapple);
|
|
x19c_samusDoll->SetPulseBoots(pulseBoots);
|
|
x19c_samusDoll->SetPulseVisor(pulseVisor);
|
|
}
|
|
|
|
}
|
|
}
|