public static bool DeleteManager(Type _Managertype) { if (Instance == null) { return(false); } if (TYPE_DICT.ContainsKey(_Managertype) == false) { return(false); } BaseObject _curObject = TYPE_DICT[_Managertype]; TYPE_DICT.Remove(_Managertype); if (VOLATILE_LIST.Contains(_curObject)) { VOLATILE_LIST.Remove(_curObject); return(true); } if (STABLE_LIST.Contains(_curObject)) { STABLE_LIST.Remove(_curObject); return(true); } Debug.LogError("whole list has manager but no other has"); return(false); }
static void ResetManagers() { foreach (BaseObject _manager in VOLATILE_LIST) { if (_manager == null) { continue; } TYPE_DICT.Remove(_manager.GetType()); //VOLATILE_LIST.Remove(_manager); BaseObject.ThrowObject(_manager, eThrowEventType.E_THROW_EVENT_TYPE_MANAGER_RESET); GameObject _container = _manager.SelfObject; GameObject.Destroy(_manager); if (_container != null) { GameObject.Destroy(_container); } } VOLATILE_LIST.Clear(); foreach (BaseObject _manager in STABLE_LIST) { BaseObject.ThrowObject(_manager, eThrowEventType.E_THROW_EVENT_TYPE_MANAGER_RESET); } }
public static bool AddManager(Type _Managertype, BaseObject _manager, eManagerResetType _type = eManagerResetType.VOLATILE) { if (TYPE_DICT.ContainsKey(_Managertype)) { return(false); } TYPE_DICT.Add(_Managertype, _manager); if (_type == eManagerResetType.VOLATILE) { VOLATILE_LIST.Add(_manager); } else if (_type == eManagerResetType.STABLE) { STABLE_LIST.Add(_manager); } return(true); }