metaforce/DataSpec/DNACommon/Tweaks/ITweakPlayerRes.hpp

167 lines
5.6 KiB
C++
Raw Normal View History

2018-10-06 20:42:33 -07:00
#pragma once
2016-08-16 15:49:19 -07:00
2017-01-20 22:03:37 -08:00
#include "ITweak.hpp"
2016-09-18 16:47:48 -07:00
#include "Runtime/IFactory.hpp"
2017-02-11 19:17:18 -08:00
#include "Runtime/CPlayerState.hpp"
2016-08-16 15:49:19 -07:00
namespace DataSpec
{
2017-01-20 22:03:37 -08:00
struct ITweakPlayerRes : ITweak
2016-08-16 15:49:19 -07:00
{
2017-08-12 22:26:14 -07:00
using ResId = urde::CAssetId;
2017-02-11 19:17:18 -08:00
using EBeamId = urde::CPlayerState::EBeamId;
2016-08-16 15:49:19 -07:00
2016-09-18 16:47:48 -07:00
ResId x4_saveStationIcon;
ResId x8_missileStationIcon;
ResId xc_elevatorIcon;
2016-08-16 15:49:19 -07:00
2016-09-18 16:47:48 -07:00
ResId x10_minesBreakFirstTopIcon;
ResId x14_minesBreakFirstBottomIcon;
ResId x18_minesBreakSecondTopIcon;
ResId x1c_minesBreakSecondBottomIcon;
2016-08-16 15:49:19 -07:00
2016-09-18 16:47:48 -07:00
/* N, U, UL, L, DL, D, DR, R, UR */
ResId x24_lStick[9];
ResId x4c_cStick[9];
2016-08-16 15:49:19 -07:00
2016-09-18 16:47:48 -07:00
/* Out, In */
ResId x74_lTrigger[2];
ResId x80_rTrigger[2];
ResId x8c_startButton[2];
ResId x98_aButton[2];
ResId xa4_bButton[2];
ResId xb0_xButton[2];
ResId xbc_yButton[2];
ResId xc4_ballTransitionsANCS;
/* Power, Ice, Wave, Plasma, Phazon */
ResId xc8_ballTransitions[5];
ResId xc8_cineGun[5];
float xf0_cinematicMoveOutofIntoPlayerDistance;
2016-09-18 16:47:48 -07:00
ResId GetBeamBallTransitionModel(EBeamId beam) const
2016-08-16 15:49:19 -07:00
{
int b = int(beam);
if (b < 0 || b > 4)
b = 0;
switch (EBeamId(b))
{
case EBeamId::Power:
default:
2016-09-18 16:47:48 -07:00
return xc8_ballTransitions[0];
2016-08-16 15:49:19 -07:00
case EBeamId::Ice:
2016-09-18 16:47:48 -07:00
return xc8_ballTransitions[1];
2016-08-16 15:49:19 -07:00
case EBeamId::Wave:
2016-09-18 16:47:48 -07:00
return xc8_ballTransitions[2];
2017-08-30 19:42:37 -07:00
case EBeamId::Plasma:
return xc8_ballTransitions[3];
2016-08-16 15:49:19 -07:00
case EBeamId::Phazon:
2016-09-18 16:47:48 -07:00
return xc8_ballTransitions[4];
2016-08-16 15:49:19 -07:00
}
}
2016-09-18 16:47:48 -07:00
ResId GetBeamCineModel(EBeamId beam) const
2016-08-16 15:49:19 -07:00
{
int b = int(beam);
if (b < 0 || b > 4)
b = 0;
switch (EBeamId(b))
{
case EBeamId::Power:
default:
2016-09-18 16:47:48 -07:00
return xc8_cineGun[0];
2016-08-16 15:49:19 -07:00
case EBeamId::Ice:
2016-09-18 16:47:48 -07:00
return xc8_cineGun[1];
2016-08-16 15:49:19 -07:00
case EBeamId::Wave:
2016-09-18 16:47:48 -07:00
return xc8_cineGun[2];
2017-08-30 19:42:37 -07:00
case EBeamId::Plasma:
return xc8_cineGun[3];
2016-08-16 15:49:19 -07:00
case EBeamId::Phazon:
2016-09-18 16:47:48 -07:00
return xc8_cineGun[4];
2016-08-16 15:49:19 -07:00
}
}
2016-09-18 16:47:48 -07:00
void ResolveResources(const urde::IFactory& factory)
{
2017-11-12 22:19:18 -08:00
x4_saveStationIcon = factory.GetResourceIdByName(_GetSaveStationIcon().data())->id;
x8_missileStationIcon = factory.GetResourceIdByName(_GetMissileStationIcon().data())->id;
xc_elevatorIcon = factory.GetResourceIdByName(_GetElevatorIcon().data())->id;
2016-09-18 16:47:48 -07:00
2017-11-12 22:19:18 -08:00
x10_minesBreakFirstTopIcon = factory.GetResourceIdByName(_GetMinesBreakFirstTopIcon().data())->id;
x14_minesBreakFirstBottomIcon = factory.GetResourceIdByName(_GetMinesBreakFirstTopIcon().data())->id;
x18_minesBreakSecondTopIcon = factory.GetResourceIdByName(_GetMinesBreakFirstTopIcon().data())->id;
x1c_minesBreakSecondBottomIcon = factory.GetResourceIdByName(_GetMinesBreakFirstTopIcon().data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<9 ; ++i)
2017-11-12 22:19:18 -08:00
x24_lStick[i] = factory.GetResourceIdByName(_GetLStick(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<9 ; ++i)
2017-11-12 22:19:18 -08:00
x4c_cStick[i] = factory.GetResourceIdByName(_GetCStick(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
x74_lTrigger[i] = factory.GetResourceIdByName(_GetLTrigger(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
x80_rTrigger[i] = factory.GetResourceIdByName(_GetRTrigger(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
x8c_startButton[i] = factory.GetResourceIdByName(_GetStartButton(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
x98_aButton[i] = factory.GetResourceIdByName(_GetAButton(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
xa4_bButton[i] = factory.GetResourceIdByName(_GetBButton(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
xb0_xButton[i] = factory.GetResourceIdByName(_GetXButton(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<2 ; ++i)
2017-11-12 22:19:18 -08:00
xbc_yButton[i] = factory.GetResourceIdByName(_GetYButton(i).data())->id;
2016-09-18 16:47:48 -07:00
2017-11-12 22:19:18 -08:00
xc4_ballTransitionsANCS = factory.GetResourceIdByName(_GetBallTransitionsANCS().data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<5 ; ++i)
2017-11-12 22:19:18 -08:00
xc8_ballTransitions[i] = factory.GetResourceIdByName(_GetBallTransitionBeamRes(i).data())->id;
2016-09-18 16:47:48 -07:00
for (int i=0 ; i<5 ; ++i)
2017-11-12 22:19:18 -08:00
xc8_cineGun[i] = factory.GetResourceIdByName(_GetBeamCineModel(i).data())->id;
2016-09-18 16:47:48 -07:00
xf0_cinematicMoveOutofIntoPlayerDistance = _GetCinematicMoveOutofIntoPlayerDistance();
2016-09-18 16:47:48 -07:00
}
protected:
2017-11-12 22:19:18 -08:00
virtual std::string_view _GetSaveStationIcon() const=0;
virtual std::string_view _GetMissileStationIcon() const=0;
virtual std::string_view _GetElevatorIcon() const=0;
virtual std::string_view _GetMinesBreakFirstTopIcon() const=0;
virtual std::string_view _GetMinesBreakFirstBottomIcon() const=0;
virtual std::string_view _GetMinesBreakSecondTopIcon() const=0;
virtual std::string_view _GetMinesBreakSecondBottomIcon() const=0;
virtual std::string_view _GetLStick(size_t idx) const=0;
virtual std::string_view _GetCStick(size_t idx) const=0;
virtual std::string_view _GetLTrigger(size_t idx) const=0;
virtual std::string_view _GetRTrigger(size_t idx) const=0;
virtual std::string_view _GetStartButton(size_t idx) const=0;
virtual std::string_view _GetAButton(size_t idx) const=0;
virtual std::string_view _GetBButton(size_t idx) const=0;
virtual std::string_view _GetXButton(size_t idx) const=0;
virtual std::string_view _GetYButton(size_t idx) const=0;
virtual std::string_view _GetBallTransitionsANCS() const=0;
virtual std::string_view _GetBallTransitionBeamRes(size_t idx) const=0;
virtual std::string_view _GetBeamCineModel(size_t idx) const=0;
2016-09-18 16:47:48 -07:00
virtual float _GetCinematicMoveOutofIntoPlayerDistance() const=0;
2016-08-16 15:49:19 -07:00
};
}