first commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using NitroxClient.GameLogic.Spawning.Metadata.Extractor.Abstract;
|
||||
using NitroxClient.Unity.Helper;
|
||||
using NitroxModel.DataStructures.GameLogic.Entities.Metadata;
|
||||
using UnityEngine;
|
||||
using static NitroxClient.GameLogic.Spawning.Metadata.Extractor.CyclopsMetadataExtractor;
|
||||
|
||||
namespace NitroxClient.GameLogic.Spawning.Metadata.Extractor;
|
||||
|
||||
public class CyclopsMetadataExtractor : EntityMetadataExtractor<CyclopsGameObject, CyclopsMetadata>
|
||||
{
|
||||
public override CyclopsMetadata Extract(CyclopsGameObject cyclops)
|
||||
{
|
||||
GameObject gameObject = cyclops.GameObject;
|
||||
CyclopsSilentRunningAbilityButton silentRunning = gameObject.RequireComponentInChildren<CyclopsSilentRunningAbilityButton>(true);
|
||||
|
||||
CyclopsEngineChangeState engineState = gameObject.RequireComponentInChildren<CyclopsEngineChangeState>(true);
|
||||
bool engineShuttingDown = (engineState.motorMode.engineOn && engineState.invalidButton);
|
||||
bool engineOn = (engineState.startEngine || engineState.motorMode.engineOn) && !engineShuttingDown;
|
||||
|
||||
CyclopsShieldButton shield = gameObject.GetComponentInChildren<CyclopsShieldButton>(true);
|
||||
bool shieldOn = (shield) ? shield.active : false;
|
||||
|
||||
CyclopsSonarButton sonarButton = gameObject.GetComponentInChildren<CyclopsSonarButton>(true);
|
||||
bool sonarOn = (sonarButton) ? sonarButton._sonarActive : false;
|
||||
|
||||
CyclopsMotorMode.CyclopsMotorModes motorMode = engineState.motorMode.cyclopsMotorMode;
|
||||
|
||||
LiveMixin liveMixin = gameObject.RequireComponentInChildren<LiveMixin>();
|
||||
float health = liveMixin.health;
|
||||
|
||||
SubRoot subRoot = gameObject.RequireComponentInChildren<SubRoot>();
|
||||
bool isDestroyed = subRoot.subDestroyed || health <= 0f;
|
||||
|
||||
return new(silentRunning.active, shieldOn, sonarOn, engineOn, (int)motorMode, health, isDestroyed);
|
||||
}
|
||||
|
||||
public struct CyclopsGameObject
|
||||
{
|
||||
public GameObject GameObject { get; set; }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user