using vnxbqy.UI; using System; using System.Collections.Generic; using LitJson; using System.Linq; public class MapLevelModel : ILModel { public List realmMaps = new List(); //可选境界地图 public List realmSelects = new List(); //可选境界 //确认选则后的难度 public event Action OnSelectUpdate; int m_SelectIndex = 0; public int selectIndex { get { return m_SelectIndex; } set { if (m_SelectIndex != value) { m_SelectIndex = value; OnSelectUpdate?.Invoke(); } } } //点击某个难度 public event Action OnClickUpdate; int m_ClickIndex = 0; public int clickIndex { get { return m_ClickIndex; } set { if (m_ClickIndex != value) { m_ClickIndex = value; OnClickUpdate?.Invoke(); } } } protected override void Init() { ParseConfig(); GameEvent.playerDataRefreshEvent += OnPlayerDataRefreshEvent; GameEvent.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitializeEvent; } protected override void UnInit() { GameEvent.playerDataRefreshEvent -= OnPlayerDataRefreshEvent; GameEvent.afterPlayerDataInitializeEvent -= OnAfterPlayerDataInitializeEvent; } void ParseConfig() { var config = FuncConfigConfig.Get("RealmDifficulty"); realmMaps = JsonMapper.ToObject(config.Numerical1).ToList(); realmSelects = JsonMapper.ToObject(config.Numerical2).ToList(); } //index 对应显示列表 第一个为普通模式 m_SelectIndex public int GetRealmByIndex(int index) { if (index == 0) { return 0; } if (index >= realmSelects.Count) return realmSelects[realmSelects.Count - 1]; return realmSelects[index - 1]; } void OnPlayerDataRefreshEvent(PlayerDataType dataType) { if (dataType != PlayerDataType.default9) { return; } var selectRealm = (int)PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default9); if (selectRealm == 0) { selectIndex = 0; } else { selectIndex = realmSelects.IndexOf(selectRealm - 1000) + 1; SysNotifyMgr.Instance.ShowTip("MapLevelSelect1", RealmConfig.Get(selectRealm - 1000).Name); WindowCenter.Instance.CloseIL(); WindowCenter.Instance.CloseEx(); } } //服务端的境界难度选择保存在ExAttr18;上线要通过0102获取,改变通过0418 void OnAfterPlayerDataInitializeEvent() { var selectRealm = PlayerDatas.Instance.baseData.mapRealmSelect; if (selectRealm == 0) { selectIndex = 0; } else { selectIndex = realmSelects.IndexOf(selectRealm - 1000) + 1; } } public int GetSelectIndex() { return selectIndex; } public int GetSelectLowLV(int npcID) { var realm = GetRealmByIndex(selectIndex); var config = ILNPCRealmStrengthenConfig.GetConfig(new Int2(npcID, realm)); if (config == null) return 0; return config.LowLV; } public int GetSelectHighestLV(int npcID) { var realm = GetRealmByIndex(selectIndex); var config = ILNPCRealmStrengthenConfig.GetConfig(new Int2(npcID, realm)); if (config == null) return 0; return config.HighestLV; } }