mirror of https://github.com/AxioDL/metaforce.git
CTweakPlayerGun rep (THE FINAL ONE YAY!!!)
This commit is contained in:
parent
b103ae3943
commit
933e731817
|
@ -3,7 +3,8 @@ make_dnalist(liblist DNACommon
|
|||
MAPA
|
||||
EGMC
|
||||
SAVWCommon
|
||||
ParticleCommon)
|
||||
ParticleCommon
|
||||
Tweaks/ITweakPlayerGun)
|
||||
|
||||
set(DNACOMMON_SOURCES
|
||||
DNACommon.hpp DNACommon.cpp
|
||||
|
@ -37,7 +38,6 @@ set(DNACOMMON_SOURCES
|
|||
Tweaks/ITweakParticle.hpp
|
||||
Tweaks/ITweakPlayer.hpp
|
||||
Tweaks/ITweakPlayerControl.hpp
|
||||
Tweaks/ITweakPlayerGun.hpp
|
||||
Tweaks/ITweakGunRes.hpp
|
||||
Tweaks/ITweakPlayerRes.hpp
|
||||
Tweaks/ITweakGui.hpp
|
||||
|
|
|
@ -6,17 +6,41 @@
|
|||
|
||||
namespace DataSpec
|
||||
{
|
||||
struct SShotParam : BigYAML
|
||||
{
|
||||
DECL_YAML
|
||||
Value<atUint32> weaponType = -1;
|
||||
Value<float> damage = 0.f;
|
||||
Value<float> radiusDamage = 0.f;
|
||||
Value<float> radius = 0.f;
|
||||
Value<float> knockback = 0.f;
|
||||
virtual bool Charged() const { return false; }
|
||||
virtual bool Comboed() const { return false; }
|
||||
virtual bool InstaKill() const { return false; }
|
||||
};
|
||||
|
||||
struct SComboShotParam : SShotParam
|
||||
{
|
||||
DECL_YAML
|
||||
bool Comboed() const { return true; }
|
||||
};
|
||||
|
||||
struct SChargedShotParam : SShotParam
|
||||
{
|
||||
DECL_YAML
|
||||
bool Charged() const { return true; }
|
||||
};
|
||||
|
||||
struct ITweakPlayerGun : ITweak
|
||||
{
|
||||
virtual float GetSomething1() const=0; // x24
|
||||
virtual float GetSomething2() const=0; // x28
|
||||
virtual float GetSomething3() const=0; // x2c
|
||||
virtual float GetSomething4() const=0; // x30
|
||||
virtual float GetSomething5() const=0; // x34
|
||||
virtual float GetSomething6() const=0; // x38
|
||||
DECL_YAML
|
||||
virtual float GetX24() const = 0; // x24
|
||||
virtual float GetX28() const = 0; // x28
|
||||
virtual float GetX2c() const = 0; // x2c
|
||||
virtual float GetX30() const = 0; // x30
|
||||
virtual float GetX34() const = 0; // x34
|
||||
virtual float GetX38() const = 0; // x38
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // __DNACOMMON_ITWEAKPLAYERGUN_HPP__
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "Tweaks/CTweakBall.hpp"
|
||||
#include "Tweaks/CTweakParticle.hpp"
|
||||
#include "Tweaks/CTweakGuiColors.hpp"
|
||||
#include "Tweaks/CTweakPlayerGun.hpp"
|
||||
|
||||
namespace DataSpec
|
||||
{
|
||||
|
@ -406,6 +407,8 @@ ResExtractor<PAKBridge> PAKBridge::LookupExtractor(const PAK& pak, const PAK::En
|
|||
return {ExtractTweak<CTweakParticle>, {_S(".yaml")}};
|
||||
if (!name.compare("GuiColors"))
|
||||
return {ExtractTweak<CTweakGuiColors>, {_S(".yaml")}};
|
||||
if (!name.compare("PlayerGun"))
|
||||
return {ExtractTweak<CTweakPlayerGun>, {_S(".yaml")}};
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -58,6 +58,12 @@ struct CTweakBall : public ITweakBall
|
|||
float x128_ = 40000.f;
|
||||
float x12c_ = 10000.f;
|
||||
float x130_ = 10000.f;
|
||||
float x134_ = 1000.f;
|
||||
float x138_ = 10000.f;
|
||||
float x13c_ = 2000.f;
|
||||
float x140_ = 2000.f;
|
||||
float x144_ = 2000.f;
|
||||
float x148_ = 2000.f;
|
||||
Value<float> x14c_;
|
||||
Value<float> x150_;
|
||||
Value<float> x158_;
|
||||
|
@ -114,7 +120,22 @@ struct CTweakBall : public ITweakBall
|
|||
Value<float> x234_;
|
||||
|
||||
CTweakBall()=default;
|
||||
CTweakBall(athena::io::IStreamReader& r) { this->read(r); }
|
||||
CTweakBall(athena::io::IStreamReader& r)
|
||||
{
|
||||
this->read(r);
|
||||
x74_ = zeus::degToRad(x74_);
|
||||
x90_ = zeus::degToRad(x90_);
|
||||
x15c_ = zeus::degToRad(x15c_);
|
||||
x16c_ = zeus::degToRad(x16c_);
|
||||
x174_ = zeus::degToRad(x174_);
|
||||
x17c_ = zeus::degToRad(x17c_);
|
||||
x184_ = zeus::degToRad(x184_);
|
||||
x188_ = zeus::degToRad(x188_);
|
||||
x1a8_ = zeus::degToRad(x1a8_);
|
||||
x1b0_ = zeus::degToRad(x1b0_);
|
||||
x1b4_ = zeus::degToRad(x1b4_);
|
||||
x1ec_ = zeus::degToRad(x1ec_);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,8 +11,55 @@ namespace DNAMP1
|
|||
struct CTweakPlayerGun : ITweakPlayerGun
|
||||
{
|
||||
DECL_YAML
|
||||
};
|
||||
Value<float> x4_;
|
||||
Value<float> x8_;
|
||||
Value<float> xc_;
|
||||
Value<float> x10_;
|
||||
Value<float> x14_;
|
||||
Value<float> x18_;
|
||||
Value<float> x1c_;
|
||||
Value<float> x20_;
|
||||
Value<float> x24_;
|
||||
Value<float> x28_;
|
||||
Value<float> x2c_;
|
||||
Value<float> x30_;
|
||||
Value<float> x34_;
|
||||
Value<float> x38_;
|
||||
Value<float> x3c_;
|
||||
Value<float> x40_;
|
||||
Value<float> x44_;
|
||||
Value<float> x48_;
|
||||
Value<zeus::CVector3f> x4c_;
|
||||
Value<zeus::CVector3f> x58_;
|
||||
Value<zeus::CVector3f> x64_;
|
||||
SShotParam x70_bomb;
|
||||
SShotParam x8c_powerBomb;
|
||||
SShotParam x1d4_missile;
|
||||
struct SWeaponInfo : BigYAML
|
||||
{
|
||||
DECL_YAML
|
||||
Value<float> x0_coolDown = 0.1f;
|
||||
SShotParam x4_normal;
|
||||
SChargedShotParam x20_charged;
|
||||
};
|
||||
SWeaponInfo xa8_beams[5];
|
||||
SComboShotParam x1f0_combos[5]; // Originally rstl::prereserved_vector<SShotParam,5>
|
||||
Value<float> x280_ricochetData[5]; // Originally rstl::prereserved_vector<float,5>
|
||||
Value<float> unused; // Kept for consistency
|
||||
CTweakPlayerGun() = default;
|
||||
CTweakPlayerGun(athena::io::IStreamReader& r)
|
||||
{
|
||||
this->read(r);
|
||||
x44_ = zeus::degToRad(x44_);
|
||||
}
|
||||
|
||||
float GetX24() const { return x24_; }
|
||||
float GetX28() const { return x28_; }
|
||||
float GetX2c() const { return x2c_; }
|
||||
float GetX30() const { return x30_; }
|
||||
float GetX34() const { return x34_; }
|
||||
float GetX38() const { return x38_; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "DNAMP1/Tweaks/CTweakBall.hpp"
|
||||
#include "DNAMP1/Tweaks/CTweakParticle.hpp"
|
||||
#include "DNAMP1/Tweaks/CTweakGuiColors.hpp"
|
||||
#include "DNAMP1/Tweaks/CTweakPlayerGun.hpp"
|
||||
|
||||
#include "hecl/ClientProcess.hpp"
|
||||
|
||||
|
@ -393,6 +394,8 @@ struct SpecMP1 : SpecBase
|
|||
return true;
|
||||
else if (!strcmp(classType, DNAMP1::CTweakGuiColors::DNAType()))
|
||||
return true;
|
||||
else if (!strcmp(classType, DNAMP1::CTweakPlayerGun::DNAType()))
|
||||
return true;
|
||||
else if (!strcmp(classType, DNAMP1::HINT::DNAType()))
|
||||
return true;
|
||||
else if (!strcmp(classType, "ATBL"))
|
||||
|
@ -552,7 +555,8 @@ struct SpecMP1 : SpecBase
|
|||
!strcmp(className, "DataSpec::DNAMP1::CTweakPlayerControl") ||
|
||||
!strcmp(className, "DataSpec::DNAMP1::CTweakBall") ||
|
||||
!strcmp(className, "DataSpec::DNAMP1::CTweakParticle") ||
|
||||
!strcmp(className, "DataSpec::DNAMP1::CTweakGuiColors"))
|
||||
!strcmp(className, "DataSpec::DNAMP1::CTweakGuiColors") ||
|
||||
!strcmp(className, "DataSpec::DNAMP1::CTweakPlayerGun"))
|
||||
{
|
||||
resTag.type = SBIG('CTWK');
|
||||
return true;
|
||||
|
@ -809,6 +813,18 @@ struct SpecMP1 : SpecBase
|
|||
gColors.read(reader);
|
||||
WriteTweak(gColors, out);
|
||||
}
|
||||
else if (!classStr.compare(DNAMP1::CTweakPlayerGun::DNAType()))
|
||||
{
|
||||
DNAMP1::CTweakPlayerGun pGun;
|
||||
pGun.read(reader);
|
||||
WriteTweak(pGun, out);
|
||||
}
|
||||
else if (!classStr.compare(DNAMP1::CTweakPlayerControl::DNAType()))
|
||||
{
|
||||
DNAMP1::CTweakPlayerControl pControl;
|
||||
pControl.read(reader);
|
||||
WriteTweak(pControl, out);
|
||||
}
|
||||
else if (!classStr.compare(DNAMP1::HINT::DNAType()))
|
||||
{
|
||||
DNAMP1::HINT::Cook(in, out);
|
||||
|
|
|
@ -138,6 +138,7 @@ void CGuiTextSupport::ClearRenderBuffer()
|
|||
|
||||
void CGuiTextSupport::CheckAndRebuildTextBuffer()
|
||||
{
|
||||
#if 0
|
||||
g_TextExecuteBuf->Clear();
|
||||
g_TextExecuteBuf->x18_textState.x7c_enableWordWrap = x14_props.x0_wordWrap;
|
||||
g_TextExecuteBuf->BeginBlock(0, 0, x34_extentX, x38_extentY, x14_props.xc_direction,
|
||||
|
@ -153,6 +154,7 @@ void CGuiTextSupport::CheckAndRebuildTextBuffer()
|
|||
g_TextParser->ParseText(*g_TextExecuteBuf, initStr.c_str(), initStr.size());
|
||||
|
||||
g_TextExecuteBuf->EndBlock();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CGuiTextSupport::CheckAndRebuildRenderBuffer()
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "DataSpec/DNAMP1/Tweaks/CTweakParticle.hpp"
|
||||
#include "DataSpec/DNAMP1/Tweaks/CTweakBall.hpp"
|
||||
#include "DataSpec/DNAMP1/Tweaks/CTweakGuiColors.hpp"
|
||||
#include "DataSpec/DNAMP1/Tweaks/CTweakPlayerGun.hpp"
|
||||
#include "World/CPlayerCameraBob.hpp"
|
||||
|
||||
namespace urde
|
||||
|
@ -62,6 +63,9 @@ void CTweaks::RegisterTweaks()
|
|||
g_tweakBall = new DataSpec::DNAMP1::CTweakBall(*strm);
|
||||
|
||||
/* PlayerGun */
|
||||
tag = factory.GetResourceIdByName("PlayerGun");
|
||||
strm.emplace(factory.LoadResourceSync(*tag).release(), factory.ResourceSize(*tag));
|
||||
g_tweakPlayerGun = new DataSpec::DNAMP1::CTweakPlayerGun(*strm);
|
||||
|
||||
/* Targeting */
|
||||
tag = factory.GetResourceIdByName("Targeting");
|
||||
|
|
|
@ -9,12 +9,12 @@ CPlayerGun::CPlayerGun(TUniqueId id)
|
|||
: x0_lights(8, zeus::CVector3f{-30.f, 0.f, 30.f}, 4, 4, 0, 0, 0, 0.1f), x538_thisId(id),
|
||||
x550_camBob(CPlayerCameraBob::ECameraBobType::One,
|
||||
zeus::CVector2f(0.071f, 0.141f), 0.47f),
|
||||
x678_morph(g_tweakPlayerGun->GetSomething6(), g_tweakPlayerGun->GetSomething5())
|
||||
x678_morph(g_tweakPlayerGun->GetX38(), g_tweakPlayerGun->GetX34())
|
||||
{
|
||||
x354_ = g_tweakPlayerGun->GetSomething3();
|
||||
x358_ = g_tweakPlayerGun->GetSomething4();
|
||||
x668_ = g_tweakPlayerGun->GetSomething1();
|
||||
x66c_ = g_tweakPlayerGun->GetSomething2();
|
||||
x354_ = g_tweakPlayerGun->GetX2c();
|
||||
x358_ = g_tweakPlayerGun->GetX30();
|
||||
x668_ = g_tweakPlayerGun->GetX24();
|
||||
x66c_ = g_tweakPlayerGun->GetX28();
|
||||
|
||||
x832_31_ = true;
|
||||
x833_24_ = true;
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
#include "CWeaponMode.hpp"
|
||||
#include "DataSpec/DNACommon/Tweaks/ITweakPlayerGun.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
CWeaponMode::CWeaponMode(EWeaponType type, bool b1, bool b2, bool b3)
|
||||
CWeaponMode::CWeaponMode(EWeaponType type, bool charged, bool comboed, bool instaKill)
|
||||
: x0_weaponType(type)
|
||||
, x4_24_(b1)
|
||||
, x4_25_(b2)
|
||||
, x4_26_instantKill(b3)
|
||||
, x4_24_charged(charged)
|
||||
, x4_25_comboed(comboed)
|
||||
, x4_26_instantKill(instaKill)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -8,25 +8,18 @@ namespace urde
|
|||
class CWeaponMode
|
||||
{
|
||||
EWeaponType x0_weaponType = EWeaponType::None;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
bool x4_24_ : 1;
|
||||
bool x4_25_ : 1;
|
||||
bool x4_26_instantKill : 1;
|
||||
};
|
||||
u8 dummy = 0;
|
||||
};
|
||||
bool x4_24_charged : 1;
|
||||
bool x4_25_comboed : 1;
|
||||
bool x4_26_instantKill : 1;
|
||||
public:
|
||||
CWeaponMode() = default;
|
||||
CWeaponMode(EWeaponType, bool = false, bool = false, bool instaKill = false);
|
||||
CWeaponMode(EWeaponType, bool charged = false, bool comboed = false, bool instaKill = false);
|
||||
EWeaponType GetType() const;
|
||||
|
||||
|
||||
bool IsCharged() const;
|
||||
bool IsComboed() const;
|
||||
bool IsInstantKill() const;
|
||||
bool IsCharged() const { return x4_24_charged; }
|
||||
bool IsComboed() const { return x4_25_comboed; }
|
||||
bool IsInstantKill() const { return x4_26_instantKill; }
|
||||
|
||||
static CWeaponMode Invalid();
|
||||
static CWeaponMode Phazon();
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
#define __URDE_WEAPONCOMMON_HPP__
|
||||
|
||||
#include "RetroTypes.hpp"
|
||||
#include "DataSpec/DNACommon/Tweaks/ITweakPlayerGun.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
enum class EWeaponType
|
||||
{
|
||||
None = -1,
|
||||
|
|
|
@ -1,12 +1,29 @@
|
|||
#include "CDamageInfo.hpp"
|
||||
#include "CDamageVulnerability.hpp"
|
||||
#include "DataSpec/DNACommon/Tweaks/ITweakPlayerGun.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
float CDamageInfo::GetRadiusDamage(const CDamageVulnerability& dVuln)
|
||||
float CDamageInfo::GetRadiusDamage(const CDamageVulnerability& dVuln) { return 0.f; }
|
||||
|
||||
CDamageInfo::CDamageInfo(const DataSpec::SShotParam& other)
|
||||
: x0_weaponMode(CWeaponMode(EWeaponType(other.weaponType), other.Charged(), other.Comboed(), other.InstaKill()))
|
||||
, x8_damage(other.damage)
|
||||
, xc_radiusDamage(other.radiusDamage)
|
||||
, x10_radius(other.radius)
|
||||
, x14_knockback(other.knockback)
|
||||
{
|
||||
return 0.f;
|
||||
}
|
||||
|
||||
CDamageInfo& CDamageInfo::operator=(const DataSpec::SShotParam& other)
|
||||
{
|
||||
x0_weaponMode = CWeaponMode(EWeaponType(other.weaponType), other.Charged(), other.Comboed(), other.InstaKill());
|
||||
x8_damage = other.damage;
|
||||
xc_radiusDamage = x8_damage;
|
||||
x10_radius = other.radius;
|
||||
x14_knockback = other.knockback;
|
||||
x18_ = false;
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,9 +5,13 @@
|
|||
#include "Weapon/CWeaponMgr.hpp"
|
||||
#include "Weapon/CWeaponMode.hpp"
|
||||
|
||||
namespace DataSpec
|
||||
{
|
||||
struct SShotParam;
|
||||
}
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
class CDamageVulnerability;
|
||||
class CDamageInfo
|
||||
{
|
||||
|
@ -17,6 +21,7 @@ class CDamageInfo
|
|||
float x10_radius;
|
||||
float x14_knockback;
|
||||
bool x18_ = false;
|
||||
|
||||
public:
|
||||
CDamageInfo() = default;
|
||||
CDamageInfo(CInputStream& in)
|
||||
|
@ -29,14 +34,13 @@ public:
|
|||
x14_knockback = in.readFloatBig();
|
||||
}
|
||||
CDamageInfo(const CWeaponMode& mode, float damage, float radius, float knockback)
|
||||
: x0_weaponMode(mode)
|
||||
, x8_damage(damage)
|
||||
, xc_radiusDamage(damage)
|
||||
, x10_radius(radius)
|
||||
, x14_knockback(knockback)
|
||||
{}
|
||||
: x0_weaponMode(mode), x8_damage(damage), xc_radiusDamage(damage), x10_radius(radius), x14_knockback(knockback)
|
||||
{
|
||||
}
|
||||
|
||||
CDamageInfo(const CDamageInfo& other) = default;
|
||||
CDamageInfo(const DataSpec::SShotParam& other);
|
||||
CDamageInfo& operator=(const DataSpec::SShotParam& other);
|
||||
|
||||
const CWeaponMode& GetWeaponMode() const { return x0_weaponMode; }
|
||||
float GetRadius() const { return x10_radius; }
|
||||
|
@ -47,7 +51,6 @@ public:
|
|||
float GetRadiusDamage() const { return xc_radiusDamage; }
|
||||
float GetRadiusDamage(const CDamageVulnerability& dVuln);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // __URDE_CDAMAGEINFO_HPP__
|
||||
|
|
|
@ -92,7 +92,7 @@ set(WORLD_SOURCES
|
|||
CScannableParameters.hpp
|
||||
CVisorParameters.hpp
|
||||
CAnimationParameters.hpp
|
||||
CDamageInfo.hpp
|
||||
CDamageInfo.hpp CDamageInfo.cpp
|
||||
CDamageVulnerability.hpp
|
||||
CFluidUVMotion.hpp CFluidUVMotion.cpp
|
||||
CPatternedInfo.hpp CPatternedInfo.cpp
|
||||
|
|
Loading…
Reference in New Issue