mirror of
				https://github.com/AxioDL/metaforce.git
				synced 2025-10-27 15:30:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.1 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,
 | |
|         Ice = (1 << 3),
 | |
|         Wave = (1 << 4),
 | |
|         Plasma = (1 << 5),
 | |
|         Phazon = (1 << 6),
 | |
|         Unknown1 = (1 << 7),
 | |
|         Bombs = (1 << 8),
 | |
|         PowerBombs = (1 << 9),
 | |
|         StaticInterference = (1 << 14),
 | |
|     };
 | |
| 
 | |
| private:
 | |
|     EProjectileAttrib xe8_projectileAttribs;
 | |
|     TUniqueId xec_uid;
 | |
|     EWeaponType xf0_weaponType;
 | |
|     u32 xf4_;
 | |
|     CMaterialFilter xf8_;
 | |
|     u32 x10c_;
 | |
|     CDamageInfo x110_;
 | |
|     CDamageInfo x12c_;
 | |
|     float x148_;
 | |
|     float x14c_;
 | |
|     float x150_;
 | |
|     float x154_interferenceDuration;
 | |
| public:
 | |
|     CWeapon(TUniqueId, TAreaId, bool, TUniqueId, EWeaponType, const std::string&, const zeus::CTransform&,
 | |
|             const CMaterialFilter&, const CMaterialList&, const CDamageInfo&, EProjectileAttrib, CModelData&&);
 | |
| 
 | |
|     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;
 | |
|     void SetOwnerId(TUniqueId);
 | |
|     EWeaponType GetType() const;
 | |
|     const CDamageInfo& GetDamageInfo() const;
 | |
|     CDamageInfo& DamageInfo();
 | |
|     void SetDamageInfo(const CDamageInfo&);
 | |
|     float GetInterferenceDuration() const { return x154_interferenceDuration; }
 | |
| 
 | |
|     void Think(float, CStateManager &) {}
 | |
|     void Render(const CStateManager&) const {}
 | |
|     EWeaponCollisionResponseTypes GetCollisionResponseType(const zeus::CVector3f&, const zeus::CVector3f&, CWeaponMode&,
 | |
|                                                            int)
 | |
|     {
 | |
|         return EWeaponCollisionResponseTypes::Default;
 | |
|     }
 | |
|     void FluidFXThink(EFluidState, CScriptWater&, CStateManager&) {}
 | |
| };
 | |
| ENABLE_BITWISE_ENUM(CWeapon::EProjectileAttrib)
 | |
| }
 | |
| #endif // __URDE_CWEAPON_HPP__
 |