mirror of
				https://github.com/AxioDL/metaforce.git
				synced 2025-10-27 15:30:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef __URDE_CWEAPON_HPP__
 | |
| #define __URDE_CWEAPON_HPP__
 | |
| 
 | |
| #include "World/CActor.hpp"
 | |
| #include "Weapon/WeaponCommon.hpp"
 | |
| #include "World/CDamageInfo.hpp"
 | |
| #include "Collision/CMaterialFilter.hpp"
 | |
| 
 | |
| namespace urde
 | |
| {
 | |
| class CWeapon : public CActor
 | |
| {
 | |
| public:
 | |
|     enum class EProjectileAttrib
 | |
|     {
 | |
|         None = 0,
 | |
|         PartialCharge = (1 << 0),
 | |
|         PlasmaProjectile = (1 << 1),
 | |
|         Charged = (1 << 2),
 | |
|         Ice = (1 << 3),
 | |
|         Wave = (1 << 4),
 | |
|         Plasma = (1 << 5),
 | |
|         Phazon = (1 << 6),
 | |
|         Unknown1 = (1 << 7),
 | |
|         Bombs = (1 << 8),
 | |
|         PowerBombs = (1 << 9),
 | |
|         ArmCannon = (1 << 11),
 | |
|         BigStrike = (1 << 12),
 | |
|         StaticInterference = (1 << 14),
 | |
|         KeepInCinematic = (1 << 17),
 | |
|     };
 | |
| 
 | |
| private:
 | |
|     EProjectileAttrib xe8_projectileAttribs;
 | |
|     TUniqueId xec_ownerId;
 | |
|     EWeaponType xf0_weaponType;
 | |
|     u32 xf4_;
 | |
|     CMaterialFilter xf8_;
 | |
|     u32 x10c_;
 | |
|     CDamageInfo x110_;
 | |
|     CDamageInfo x12c_;
 | |
|     float x148_;
 | |
|     float x14c_;
 | |
|     float x150_damageDuration;
 | |
|     float x154_interferenceDuration;
 | |
| public:
 | |
|     CWeapon(TUniqueId uid, TAreaId aid, bool active, TUniqueId owner, EWeaponType type,
 | |
|             std::string_view name, const zeus::CTransform& xf, const CMaterialFilter& filter,
 | |
|             const CMaterialList& mList, const CDamageInfo&, EProjectileAttrib attribs, CModelData&& mData);
 | |
| 
 | |
|     virtual void Accept(IVisitor &visitor);
 | |
|     bool HasAttrib(EProjectileAttrib) const;
 | |
|     EProjectileAttrib GetAttribField() const { return xe8_projectileAttribs; }
 | |
|     const CMaterialFilter& GetFilter() const;
 | |
|     void SetFilter(const CMaterialFilter&);
 | |
|     TUniqueId GetOwnerId() const { return xec_ownerId; }
 | |
|     void SetOwnerId(TUniqueId oid) { xec_ownerId = oid; }
 | |
|     EWeaponType GetType() const;
 | |
|     const CDamageInfo& GetDamageInfo() const;
 | |
|     CDamageInfo& DamageInfo();
 | |
|     void SetDamageInfo(const CDamageInfo&);
 | |
|     float GetDamageDuration() const { return x150_damageDuration; }
 | |
|     float GetInterferenceDuration() const { return x154_interferenceDuration; }
 | |
| 
 | |
|     void Think(float, CStateManager &) {}
 | |
|     void Render(const CStateManager&) const {}
 | |
|     EWeaponCollisionResponseTypes GetCollisionResponseType(const zeus::CVector3f&, const zeus::CVector3f&,
 | |
|                                                            const CWeaponMode&, int) const
 | |
|     {
 | |
|         return EWeaponCollisionResponseTypes::Default;
 | |
|     }
 | |
|     void FluidFXThink(EFluidState, CScriptWater&, CStateManager&) {}
 | |
| };
 | |
| ENABLE_BITWISE_ENUM(CWeapon::EProjectileAttrib)
 | |
| }
 | |
| #endif // __URDE_CWEAPON_HPP__
 |