Add CDamageVulnerability.cpp, fill header

Former-commit-id: dc47a3af22
This commit is contained in:
Henrique Gemignani Passos Lima
2022-10-02 00:38:39 +03:00
parent 18ab1ef2b5
commit ac12cf1321
28 changed files with 372 additions and 54 deletions

View File

@@ -1,8 +1,10 @@
#ifndef _CDAMAGEVULNERABILITY_HPP
#define _CDAMAGEVULNERABILITY_HPP
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
#include "types.h"
enum EVulnerability {
kVN_Weak,
kVN_Normal,
@@ -27,11 +29,34 @@ class CInputStream;
class CDamageVulnerability {
public:
CDamageVulnerability(CInputStream& in);
CDamageVulnerability(EVulnerability, EVulnerability, EVulnerability, EVulnerability,
EVulnerability, EVulnerability, EVulnerability, EVulnerability,
EVulnerability, EVulnerability, EDeflectionType);
CDamageVulnerability(EVulnerability power, EVulnerability ice, EVulnerability wave,
EVulnerability plasma, EVulnerability bomb, EVulnerability powerBomb,
EVulnerability missile, EVulnerability boostBall, EVulnerability phazon,
EVulnerability enemyWp1, EVulnerability enemyWp2, EVulnerability enemyWp3,
EVulnerability enemyWp4, EVulnerability v1, EVulnerability v2,
EDeflectionType deflectType);
// TODO
CDamageVulnerability(EVulnerability power, EVulnerability ice, EVulnerability wave,
EVulnerability plasma, EVulnerability bomb, EVulnerability powerBomb,
EVulnerability missile, EVulnerability boostBall, EVulnerability phazon,
EVulnerability enemyWp1, EVulnerability enemyWp2, EVulnerability enemyWp3,
EVulnerability enemyWp4, EVulnerability v1, EVulnerability v2,
EVulnerability chargedPower, EVulnerability chargedIce,
EVulnerability chargedWave, EVulnerability chargedPlasma,
EVulnerability superMissile, EVulnerability iceSpreader,
EVulnerability waveBuster, EVulnerability flameThrower,
EDeflectionType deflected);
EDeflectionType GetDeflectionType(const CWeaponMode& mode) const;
bool WeaponHurts(const CWeaponMode&, int ignoreDirect) const;
bool WeaponHits(const CWeaponMode& mode, int checkDirect) const;
EVulnerability GetVulnerability(const CWeaponMode& mode, int ignoreDirect) const;
static const CDamageVulnerability& NormalVulnerabilty() { return sNormalVulnerability; }
static const CDamageVulnerability& ImmuneVulnerabilty() { return sImmuneVulnerability; }
static const CDamageVulnerability& ReflectVulnerabilty() { return sReflectVulnerability; }
static const CDamageVulnerability& PassThroughVulnerabilty() { return sPassThroughVulnerability; }
private:
EVulnerability x0_normal[15];
@@ -40,6 +65,13 @@ private:
EDeflectionType x5c_deflect;
EDeflectionType x60_chargedDeflect;
EDeflectionType x64_comboDeflect;
void LoadData(CInputStream& in, int propCount);
static const CDamageVulnerability sNormalVulnerability;
static const CDamageVulnerability sImmuneVulnerability;
static const CDamageVulnerability sReflectVulnerability;
static const CDamageVulnerability sPassThroughVulnerability;
};
CHECK_SIZEOF(CDamageVulnerability, 0x68)