示例#1
0
        public void RemoveModule <TModule> (object moduleId = null) where TModule : CocoModuleBase
        {
            Dictionary <object, CocoModuleBase> moduleDic = GetModuleDic <TModule> ();
            string moduleKey = GetModuleKeyById(ref moduleId);

            if (!moduleDic.ContainsKey(moduleKey))
            {
                Debug.LogWarningFormat("{0}->RemoveModule: NOT need remove module [{1}<{2}>], because id don't exist!", GetType(), moduleId, typeof(TModule).Name);
                return;
            }

            // clean module
            CocoModuleBase module = moduleDic [moduleKey];

            module.Clean();
            CocoRoot.Unbind <TModule> (moduleId);
            moduleDic.Remove(moduleKey);

            // destroy module
            Destroy(module.gameObject);
        }
示例#2
0
        public TModule AddModule <TModule> (CocoModuleBase module, object moduleId = null) where TModule : CocoModuleBase
        {
            Dictionary <object, CocoModuleBase> moduleDic = GetModuleDic <TModule> ();
            string moduleKey = GetModuleKeyById(ref moduleId);

            if (moduleDic.ContainsKey(moduleKey))
            {
                Debug.LogErrorFormat("{0}->AddModule: can NOT add module [{1}<{2}>], because the one with same id already exists!", GetType(), moduleId, module.GetType().Name);
                return(null);
            }

            if (module.transform.parent != transform)
            {
                CocoLoad.SetParent(module, transform);
            }

            // init module
            CocoRoot.BindValue <TModule> ((TModule)module, moduleId);
            module.Init(moduleId);
            moduleDic.Add(moduleKey, module);

            return((TModule)module);
        }
 protected TModule BindSubModule <TModule> (CocoModuleBase module, object moduleId = null) where TModule : CocoModuleBase
 {
     return(CocoMainController.Instance.AddModule <TModule> (module, moduleId));
 }