65 lines
1.8 KiB
C#
65 lines
1.8 KiB
C#
using UnityEngine;
|
|
|
|
public enum NpcEnumState
|
|
{
|
|
InCover,
|
|
InDirectPoint,
|
|
InRunning,
|
|
}
|
|
|
|
public enum NpcBodyState
|
|
{
|
|
Crouching,
|
|
Standing,
|
|
}
|
|
|
|
public class NpcCrouchingState : INpcBaseBodyState
|
|
{
|
|
public NpcBodyState State => NpcBodyState.Crouching;
|
|
|
|
public Vector3 GetPointToHit(GameObject go)
|
|
{
|
|
return go.transform.position + new Vector3(0, 1, 0);
|
|
}
|
|
}
|
|
|
|
public class NpcStandingState : INpcBaseBodyState
|
|
{
|
|
public NpcBodyState State => NpcBodyState.Standing;
|
|
|
|
public Vector3 GetPointToHit(GameObject go)
|
|
{
|
|
return go.transform.position + new Vector3(0, 1.8f, 0);
|
|
}
|
|
}
|
|
|
|
public class NpcDirectPointState : INpcBaseState
|
|
{
|
|
public bool InCover => false;
|
|
public bool IsRunning => false;
|
|
public bool InDirectPoint => false;
|
|
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInDirectPoint;
|
|
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInDirectPoint;
|
|
public NpcEnumState State => NpcEnumState.InDirectPoint;
|
|
}
|
|
|
|
public class NpcRunningState : INpcBaseState
|
|
{
|
|
public bool InCover => false;
|
|
public bool IsRunning => true;
|
|
public bool InDirectPoint => false;
|
|
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInRunning;
|
|
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInRunning;
|
|
public NpcEnumState State => NpcEnumState.InRunning;
|
|
}
|
|
|
|
public class NpcInCoverState : INpcBaseState
|
|
{
|
|
public bool InCover => true;
|
|
public bool IsRunning => false;
|
|
public bool InDirectPoint => false;
|
|
public float HitChance => SettingsReader.Instance.GetSettings.GetHitChanceInCover;
|
|
public float DoDamageChance => SettingsReader.Instance.GetSettings.DoDamageChanceInCover;
|
|
public NpcEnumState State => NpcEnumState.InCover;
|
|
}
|