mirror of
				https://github.com/AxioDL/metaforce.git
				synced 2025-10-27 15:30:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "Runtime/MP1/World/CChozoGhost.hpp"
 | |
| 
 | |
| #include "Runtime/CStateManager.hpp"
 | |
| #include "Runtime/CRandom16.hpp"
 | |
| 
 | |
| #include "TCastTo.hpp" // Generated file, do not modify include path
 | |
| namespace urde::MP1 {
 | |
| CChozoGhost::CBehaveChance::CBehaveChance(CInputStream& in)
 | |
| : x0_propertyCount(in.readUint32Big())
 | |
| , x4_(in.readFloatBig())
 | |
| , x8_(in.readFloatBig())
 | |
| , xc_(in.readFloatBig())
 | |
| , x10_(in.readFloatBig())
 | |
| , x14_(in.readFloatBig())
 | |
| , x18_(x0_propertyCount <= 5 ? 0.5f : in.readFloatBig() * .01f)
 | |
| , x1c_(x0_propertyCount <= 6 ? 2 : in.readUint32Big()) {
 | |
|   float f2 = 1.f / (x10_ + xc_ + x4_ + x8_);
 | |
|   x4_ *= f2;
 | |
|   x8_ *= f2;
 | |
|   xc_ *= f2;
 | |
|   x10_ *= f2;
 | |
| }
 | |
| 
 | |
| u32 CChozoGhost::CBehaveChance::GetBehave(EBehaveType type, CStateManager& mgr) const {
 | |
|   float dVar5 = x4_;
 | |
|   float dVar4 = x8_;
 | |
|   float dVar3 = xc_;
 | |
|   if (type == EBehaveType::Zero) {
 | |
|     float dVar2 = dVar5 / 3.f;
 | |
|     dVar5 = 0.f;
 | |
|     dVar4 += dVar2;
 | |
|     dVar3 += dVar2;
 | |
|   } else if (type == EBehaveType::One) {
 | |
|     float dVar2 = dVar4 / 3.f;
 | |
|     dVar4 = 0.f;
 | |
|     dVar5 += dVar2;
 | |
|     dVar3 += dVar2;
 | |
|   } else if (type == EBehaveType::Two) {
 | |
|     float dVar2 = dVar3 / 3.f;
 | |
|     dVar3 = 0.f;
 | |
|     dVar5 += dVar2;
 | |
|     dVar4 += dVar2;
 | |
|   } else if (type == EBehaveType::Three) {
 | |
|     float dVar2 = x10_ / 3.f;
 | |
|     dVar5 += dVar2;
 | |
|     dVar4 += dVar2;
 | |
|     dVar3 += dVar2;
 | |
|   }
 | |
| 
 | |
|   float rnd = mgr.GetActiveRandom()->Float();
 | |
|   if (dVar5 > rnd)
 | |
|     return 0;
 | |
|   else if (dVar4 > (rnd - dVar5))
 | |
|     return 1;
 | |
|   else if (dVar3 > (rnd - dVar5) - dVar4)
 | |
|     return 2;
 | |
|   return 3;
 | |
| }
 | |
| 
 | |
| CChozoGhost::CChozoGhost(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
 | |
|                          CModelData&& mData, const CActorParameters& actParms, const CPatternedInfo& pInfo, float f1,
 | |
|                          float f2, float f3, float f4, CAssetId wpsc1, const CDamageInfo& dInfo1, CAssetId wpsc2,
 | |
|                          const CDamageInfo& dInfo2, const CBehaveChance& chance1, const CBehaveChance& chance2,
 | |
|                          const CBehaveChance& chance3, u16 sId1, float f5, u16 sId2, u16 sId3, u32 w1, float f6, u32 w2,
 | |
|                          float f7, CAssetId partId, s16 sId4, float f8, float f9, u32 w3, u32 w4)
 | |
| : CPatterned(ECharacter::ChozoGhost, uid, name, EFlavorType::Zero, info, xf, std::move(mData), pInfo,
 | |
|              EMovementType::Flyer, EColliderType::Zero, EBodyType::BiPedal, actParms, EKnockBackVariant::Medium)
 | |
| , x568_(f1)
 | |
| , x56c_(f2)
 | |
| , x570_(f3)
 | |
| , x574_(f4)
 | |
| , x578_(wpsc1, dInfo1)
 | |
| , x5a0_(wpsc2, dInfo2)
 | |
| , x5c8_(chance1)
 | |
| , x5e8_(chance2)
 | |
| , x608_(chance3)
 | |
| , x628_(sId1)
 | |
| , x62c_(f5)
 | |
| , x630_(sId2)
 | |
| , x632_(sId3)
 | |
| , x634_(f6)
 | |
| , x638_(f7)
 | |
| , x63c_(w2)
 | |
| , x650_(sId4)
 | |
| , x654_(f8)
 | |
| , x658_(f9)
 | |
| , x65c_(w3)
 | |
| , x660_(w4)
 | |
| , x664_24_(w1)
 | |
| , x664_25_(w1)
 | |
| , x664_26_(false)
 | |
| , x664_27_(false)
 | |
| , x664_28_(false)
 | |
| , x664_29_(false)
 | |
| , x664_30_(false)
 | |
| , x664_31_(false)
 | |
| , x665_24_(true)
 | |
| , x665_25_(false)
 | |
| , x665_26_(false)
 | |
| , x665_27_(false)
 | |
| , x665_28_(false)
 | |
| , x665_29_(false)
 | |
| , x68c_boneTracking(*GetModelData()->GetAnimationData(), "Head_1"sv, zeus::degToRad(80.f), zeus::degToRad(180.f),
 | |
|                     EBoneTrackingFlags::None) {}
 | |
| } // namespace urde::MP1
 |