using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using LitJson;
|
using System.Linq;
|
|
public class MapLevelModel : ILModel<MapLevelModel>
|
{
|
public List<int> realmMaps = new List<int>(); //可选境界地图
|
public List<int> realmSelects = new List<int>(); //可选境界
|
|
|
//确认选则后的难度
|
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<int[]>(config.Numerical1).ToList();
|
realmSelects = JsonMapper.ToObject<int[]>(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<MapLevelSelectWin>();
|
WindowCenter.Instance.CloseEx<LocalMapWin>();
|
}
|
}
|
|
//服务端的境界难度选择保存在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;
|
}
|
|
}
|