public void RemoveAllAdditionalModules() { for (int i = _additionalModules.Count - 1; i >= 0; i--) { BaseModule module = _additionalModules[i]; _additionalModules.RemoveAt(i); module.Destroy(); } }
public void GotoModule(Type moduleClass, object data = null, Action initComplete = null) { if (_currentModule != null) { if (!canGotoSameModule && _currentModule.GetType() == moduleClass) { Debug.LogError("Don't goto the same module twice."); return; } if (_currentModule.isLoading) { Debug.LogError("current module is loading"); return; } } BaseModule lastModule = _currentModule; _currentModule = moduleClass.Assembly.CreateInstance(moduleClass.Name) as BaseModule; if (lastModule != null) { if (lastModule.prepareTime > 0) { Engine.Instance.DoAfter(_currentModule.prepareTime, () => { lastModule.Destroy(); lastModule = null; }); } else { lastModule.Destroy(); lastModule = null; } } _currentModule.Init(data, initComplete); }
public void RemoveAdditionalModule(Type moduleClass) { BaseModule module = _additionalModules.Find(m => m.GetType() == moduleClass); if (module == null) { Debug.LogError("Don't remove the not exist addtional module."); } else { _additionalModules.Remove(module); module.Destroy(); EventManager.instance.DispatchEvent(this, ModuleManager.ADDITIONALMODULE_REMOVED, moduleClass); } }