using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using TableConfig;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
public class TrialDungeonModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
{
|
Dictionary<int, List<TrialExchangeConfig>> trialTokenExchangeDict = new Dictionary<int, List<TrialExchangeConfig>>();
|
Dictionary<int, int> lineToTokenClassDict;
|
public List<int> trialTokens = new List<int>();
|
|
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
|
|
public event Action SelectEquipClassEvent;
|
|
bool serverInited = false;
|
public override void Init()
|
{
|
ParseConfig();
|
dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent;
|
GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
serverInited = false;
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
serverInited = true;
|
UpdateRedpoint();
|
}
|
|
void ParseConfig()
|
{
|
var configs = ConfigManager.Instance.GetAllValues<TrialExchangeConfig>();
|
for (int i = 0; i < configs.Count; i++)
|
{
|
List<TrialExchangeConfig> list;
|
var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(configs[i].tokenId);
|
if (!trialTokenExchangeDict.TryGetValue(itemConfig.LV, out list))
|
{
|
list = new List<TrialExchangeConfig>();
|
trialTokenExchangeDict.Add(itemConfig.LV, list);
|
}
|
list.Add(configs[i]);
|
if (!trialTokens.Contains(configs[i].tokenId))
|
{
|
trialTokens.Add(configs[i].tokenId);
|
}
|
}
|
var funcConfig = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("LineToItemStage");
|
lineToTokenClassDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical1);
|
}
|
|
public override void UnInit()
|
{
|
dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent;
|
}
|
|
private void DailyQuestProgressUpdateEvent(int _id)
|
{
|
if (_id == (int)DailyQuestType.Trial)
|
{
|
UpdateRedpoint();
|
}
|
}
|
|
int m_SelectEquipClass = 0;//1-全部阶数
|
public int selectEquipClass
|
{
|
get { return m_SelectEquipClass; }
|
set
|
{
|
if (m_SelectEquipClass != value && SelectEquipClassEvent != null)
|
{
|
m_SelectEquipClass = value;
|
SelectEquipClassEvent();
|
}
|
m_SelectEquipClass = value;
|
}
|
}
|
|
public int GetTrialTokenCount(int itemId)
|
{
|
var count = 0;
|
count += packModel.GetSinglePackModel(PackType.rptItem).GetItemCountByID(itemId);
|
return count;
|
}
|
|
public int LineToTokenClass(int line)
|
{
|
if (lineToTokenClassDict != null && lineToTokenClassDict.ContainsKey(line))
|
{
|
return lineToTokenClassDict[line];
|
}
|
return lineToTokenClassDict != null ? lineToTokenClassDict.Values.Last() : 0;
|
}
|
|
public bool TryGetTrialExchanges(int lv, out List<TrialExchangeConfig> list)
|
{
|
return trialTokenExchangeDict.TryGetValue(lv, out list);
|
}
|
|
public bool TrialSendExchange(int _id, out int error)
|
{
|
error = 0;
|
if (!FuncOpen.Instance.IsFuncOpen(88))
|
{
|
error = 2;
|
return false;
|
}
|
var config = ConfigManager.Instance.GetTemplate<TrialExchangeConfig>(_id);
|
if (config == null)
|
{
|
return false;
|
}
|
var count = GetTrialTokenCount(config.tokenId);
|
if (count < config.tokenCount)
|
{
|
error = 1;
|
return false;
|
}
|
CA32F_tagCMTrialExchange pak = new CA32F_tagCMTrialExchange();
|
pak.ID = (uint)_id;
|
GameNetSystem.Instance.SendInfo(pak);
|
return true;
|
}
|
|
public void ProcessTrialError(int error)
|
{
|
switch (error)
|
{
|
case 1:
|
SysNotifyMgr.Instance.ShowTip("TrialTokenCountError");
|
break;
|
case 2:
|
FuncOpen.Instance.ProcessorFuncErrorTip(88);
|
break;
|
}
|
}
|
|
#region 红点
|
public void SetDayRemind()
|
{
|
if (dailyQuestModel.trialExchangeRedpoint.state == RedPointState.Simple)
|
{
|
DayRemind.Instance.SetDayRemind(DayRemind.TRIALEXCHANGE_REDPOINT, true);
|
UpdateRedpoint();
|
}
|
}
|
|
private void SecondEvent()
|
{
|
if (serverInited && !DayRemind.Instance.GetDayRemind(DayRemind.TRIALEXCHANGE_REDPOINT))
|
{
|
UpdateRedpoint();
|
}
|
}
|
|
void UpdateRedpoint()
|
{
|
var state = dailyQuestModel.GetQuestState((int)DailyQuestType.Trial);
|
dailyQuestModel.trialExchangeRedpoint.state = state == DailyQuestModel.DailyQuestState.Completed
|
&& !DayRemind.Instance.GetDayRemind(DayRemind.TRIALEXCHANGE_REDPOINT) ?
|
RedPointState.Simple : RedPointState.None;
|
}
|
#endregion
|
}
|
}
|