using System; using System.Collections.Generic; using Thousandto.Code.Center; using Thousandto.Core.Base; using CoreEventDefine = UnityEngine.Gonbest.MagicCube.CoreEventDefine; namespace Thousandto.Code.Logic { /// /// 配置处理的基础类 /// public class SettingProcessBase { //当配置被改变后的处理 private Dictionary> _settingChangedHandler = new Dictionary>(); //初始化 public void Initialize() { RegisterSettingChangeHandler(); GameCenter.EventManager.UnRegFixEventHandle(CoreEventDefine.EID_CORE_GAME_SETTING_CHANGED, OnSettingChanged); GameCenter.EventManager.RegFixEventHandle(CoreEventDefine.EID_CORE_GAME_SETTING_CHANGED, OnSettingChanged); OnInitializeAfter(); } //加载默认配置 public void LoadDefault(bool isforce, bool save) { OnLoadDefault(isforce, save); } //进入场景时的调用 public void EnterScene(GameScene scene) { OnEnterScene(scene); } //卸载 public void Uninitialize() { OnUninitializeBefore(); GameCenter.EventManager.UnRegFixEventHandle(CoreEventDefine.EID_CORE_GAME_SETTING_CHANGED, OnSettingChanged); } #region//注册回调的处理函数 //配置信息改变 private void OnSettingChanged(object obj,object sender=null) { try { GameSettingKeyCode code = (GameSettingKeyCode)obj; MyAction handler; if (_settingChangedHandler.TryGetValue((int)code, out handler)) { if (handler != null) { var value = GameSettingCore.Get(code); handler(value); } } } catch(Exception ex) { UnityEngine.Debug.LogException(ex); } } //注册设置信息改变后的处理句柄 private void RegisterSettingChangeHandler() { _settingChangedHandler.Clear(); OnRegisterSettingChangedHandler(); } #endregion #region//保护的函数,由子类继承 protected virtual void OnRegisterSettingChangedHandler() { } protected virtual void OnInitializeAfter() { } protected virtual void OnUninitializeBefore() { } protected virtual void OnLoadDefault(bool isforce, bool save) { } protected virtual void OnEnterScene(GameScene scene) { } protected void AddSettingChangedHandler(GameSettingKeyCode code, MyAction action) { _settingChangedHandler.Add((int)code, action); } #endregion } }