using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System;
|
using TableConfig;
|
|
namespace Snxxz.UI
|
{
|
public class BossRebornModel : Model
|
{
|
int m_BossRebornIntegral = 0;
|
public int bossRebornIntegral {
|
get { return m_BossRebornIntegral; }
|
set {
|
if (m_BossRebornIntegral != value)
|
{
|
m_BossRebornIntegral = value;
|
if (bossRebornIntergralEvent != null)
|
{
|
bossRebornIntergralEvent();
|
}
|
}
|
}
|
}
|
|
public int surplusSecond { get { return OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.BossReborn); } }
|
|
public event Action bossRebornIntergralEvent;
|
public event Action<int> bossTaskStateChangeEvent;
|
Dictionary<int, BossRebornTask> bossRebornTasks = new Dictionary<int, BossRebornTask>();
|
|
const int bossRebornPointId = 20108;
|
Redpoint bossRebornPoint = new Redpoint(201, bossRebornPointId);
|
|
public override void Init()
|
{
|
ParseConfig();
|
}
|
|
public override void UnInit()
|
{
|
}
|
|
public bool IsOpen()
|
{
|
return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.BossReborn);
|
}
|
|
public int GetWorldLevel()
|
{
|
OperationBase operation;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.BossReborn, out operation))
|
{
|
var bossOperation = operation as OperationBossReborn;
|
return bossOperation != null ? bossOperation.worldLevel : 0;
|
}
|
else
|
{
|
return 0;
|
}
|
}
|
|
public List<BossRebornTask> GetTasks()
|
{
|
return new List<BossRebornTask>(bossRebornTasks.Values);
|
}
|
|
public BossRebornTask GetTaskData(int _id)
|
{
|
if (!bossRebornTasks.ContainsKey(_id))
|
{
|
bossRebornTasks[_id] = new BossRebornTask(_id);
|
}
|
|
return bossRebornTasks[_id];
|
}
|
|
public int GetBossRebornNeedPoint()
|
{
|
var worldLevel = GetWorldLevel();
|
|
var index = 0;
|
for (int i = 0; i < GeneralConfig.Instance.bossRebornTotalPointWorldLevelNeed.Count; i++)
|
{
|
if (worldLevel >= GeneralConfig.Instance.bossRebornTotalPointWorldLevelNeed[i])
|
{
|
index = i + 1;
|
}
|
}
|
|
return GeneralConfig.Instance.bossRebornTotalPoint[Mathf.Clamp(index, 0, GeneralConfig.Instance.bossRebornTotalPoint.Count - 1)];
|
}
|
|
public void RequestTaskReward(int _id)
|
{
|
var sendInfo = new CA504_tagCMPlayerGetReward();
|
sendInfo.RewardType = (int)GotServerRewardType.Def_RewardType_BossReborn;
|
sendInfo.DataEx = (uint)_id;
|
sendInfo.DataExStrLen = 0;
|
sendInfo.DataExStr = string.Empty;
|
GameNetSystem.Instance.SendInfo(sendInfo);
|
}
|
|
public void UpdateTaskData(HAB03_tagMCBossRebornPlayerInfo _serverInfo)
|
{
|
foreach (var info in _serverInfo.DataList)
|
{
|
var id = info.ActID;
|
var data = GetTaskData(id);
|
var oldState = data.GetState();
|
data.UpdateActivityData(info.CurTimes, info.GotTimes);
|
var newState = data.GetState();
|
|
if (oldState != newState && bossTaskStateChangeEvent != null)
|
{
|
bossTaskStateChangeEvent(id);
|
}
|
}
|
|
UpdateRedpoint();
|
}
|
|
private void UpdateRedpoint()
|
{
|
if (!IsOpen())
|
{
|
bossRebornPoint.state = RedPointState.None;
|
}
|
else
|
{
|
var rewardable = false;
|
foreach (var task in bossRebornTasks.Values)
|
{
|
if (task.GetState() == BossRebornTask.State.Rewardable)
|
{
|
rewardable = true;
|
break;
|
}
|
}
|
|
bossRebornPoint.state = rewardable ? RedPointState.Simple : RedPointState.None;
|
}
|
}
|
|
private void ParseConfig()
|
{
|
var keys = ConfigManager.Instance.GetAllKeys<BossRebornConfig>();
|
foreach (var key in keys)
|
{
|
var id = int.Parse(key);
|
bossRebornTasks[id] = new BossRebornTask(id);
|
}
|
}
|
|
}
|
|
|
}
|