using System; using UnityEngine; using CSNetwork; using CSNetwork.GPDataType; using PerfectWorld.Scripts.Managers.BrewMonster.Managers; using PerfectWorld.Scripts.Managers; namespace BrewMonster.Managers { [Serializable] public class EC_ManMessageMono : MonoBehaviour { private static EC_ManMessageMono instance; public static EC_ManMessageMono Instance { get { if (instance == null) { instance = FindAnyObjectByType(); } return instance; } } public EC_ManPlayer EC_ManPlayer; public EC_ManMatter EC_ManMatter; public EC_ManPlayer GetECManPlayer { get => EC_ManPlayer;} public EC_ManMatter GetECManMatter { get => EC_ManMatter;} public CECNPCMan CECNPCMan { get; private set; } private void Awake() { instance = this; //TODO: Remove later EC_ManPlayer = new EC_ManPlayer(); CECNPCMan = new CECNPCMan(); EC_ManMessage.RegisterHandler(EC_ManPlayer); EC_ManMessage.RegisterHandler(CECNPCMan); EC_ManMatter = new EC_ManMatter(); EC_ManMessage.RegisterHandler(EC_ManMatter); Debug.Log($"EC_ManMessage RegisterHandlerRegisterHandlerRegisterHandler"); } private void OnDestroy() { EC_ManMessage.Dispose(); } private void Update() { EC_ManMessage.Tick(); CECNPCMan.Tick(); } // Get object by specified ID // iAliveFlag: 0, both alive and dead; 1, must be alive; 2, must be dead public CECObject GetObject(long idObject, int iAliveFlag) { CECObject pObject = null; if (GPDataTypeHelper.ISNPCID((int)idObject)) { if (!(pObject = CECNPCMan.GetNPC((int)idObject))) return null; if ((iAliveFlag == 1 && (pObject as CECNPC).IsDead()) || (iAliveFlag == 2 && !(pObject as CECNPC).IsDead())) return null; } else if (GPDataTypeHelper.ISPLAYERID((int)idObject)) { if (!(pObject = EC_ManPlayer.GetPlayer((int)idObject))) return null; if ((iAliveFlag == 1 && (pObject as CECPlayer).IsDead()) || (iAliveFlag == 2 && !(pObject as CECPlayer).IsDead())) return null; } else if (GPDataTypeHelper.ISMATTERID((int)idObject)) { pObject = EC_ManMatter.GetMatter((int)idObject); } return pObject; } } }