mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-11 13:07:40 +00:00
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user