Files
Genesis_Unity/Assets/02_Scripts/_Shared/Status/CharacterIdentity.cs

47 lines
1.7 KiB
C#

using UnityEngine;
public enum CharacterType { Playable, NPC, Enemy, None }
public class CharacterIdentity : MonoBehaviour
{
[SerializeField] private string _characterCode;
public string CharacterCode { get { return _characterCode; } private set { _characterCode = value; } }
public bool IsControlling { get; private set; } = false;
public bool IsDefaultControl { get; set;}
public CharacterType GetCharacterType()
{
string CharacterTypeStr = null;
if (DataManager.Instance.PlayableCharacterData.TryGetValue(_characterCode, out var c1)) CharacterTypeStr = c1.CharacterType;
if (DataManager.Instance.EnemyCharacterData.TryGetValue(_characterCode, out var c2)) CharacterTypeStr = c2.CharacterType;
if (DataManager.Instance.NpcCharacterData.TryGetValue(_characterCode, out var c3)) CharacterTypeStr = c3.CharacterType;
if (CharacterTypeStr == "PLAYABLE")
return CharacterType.Playable;
if (CharacterTypeStr == "ENEMY")
return CharacterType.Enemy;
if (CharacterTypeStr == "NPC")
return CharacterType.NPC;
return CharacterType.None;
}
public void SynchronizeControll()
{
if (GetCharacterType() != CharacterType.Playable) return;
// 정렬없이 씬의 모든 PlayerCharacterController 검색
PlayerCharacterController[] pccs = Object.FindObjectsByType<PlayerCharacterController>(FindObjectsSortMode.None);
//모든 컨트롤을 끄고 자기 자신만 킴으로써 IsControlling은 한개체만 true임
foreach (PlayerCharacterController pcc in pccs)
{
pcc.gameObject.GetComponent<CharacterIdentity>().IsControlling = false;
}
this.IsControlling = true;
}
}