using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
[XLua.LuaCallCSharp]
|
[XLua.Hotfix]
|
public class RidingPetBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
|
{
|
Dictionary<int, bool> m_BossAliceStates = new Dictionary<int, bool>();
|
|
public const int RIDINGPETBOSS_MAP = 31200;
|
|
public int[] BossIDArray;
|
public int[] Boss1RewardIDArray;
|
public int[] Boss2RewardIDArray;
|
|
Dictionary<int, RidingPetBossLine> RidingPetBossLineDict = new Dictionary<int, RidingPetBossLine>();
|
private string m_MountsBossID;
|
private string m_Boss1RewardID;
|
private string m_Boss2RewardID;
|
|
public readonly Redpoint redpoint = new Redpoint(218, 21801);
|
|
public event Action GetRidingPetBossLineDictAction;
|
public event Action onBossStateRefresh;
|
|
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
|
public override void Init()
|
{
|
m_MountsBossID = FuncConfigConfig.Get("QCBOSSID").Numerical1;
|
m_Boss1RewardID = FuncConfigConfig.Get("QCBOSSID").Numerical2;
|
m_Boss2RewardID = FuncConfigConfig.Get("QCBOSSID").Numerical3;
|
BossIDArray = ConfigParse.GetMultipleStr<int>(m_MountsBossID);
|
Boss1RewardIDArray = ConfigParse.GetMultipleStr<int>(m_Boss1RewardID);
|
Boss2RewardIDArray = ConfigParse.GetMultipleStr<int>(m_Boss2RewardID);
|
|
DailyQuestActionTimer.Instance.RefreshDailyQuestState += RefreshDailyQuestState;
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
m_BossAliceStates.Clear();
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
UpdateRedpoint();
|
}
|
|
public override void UnInit()
|
{
|
DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState;
|
}
|
|
private void RefreshDailyQuestState()
|
{
|
UpdateRedpoint();
|
}
|
|
public void ReceivePackage(HAC07_tagGCHorsePetBossInfo package)
|
{
|
m_BossAliceStates[0] = !MathUtility.GetBitValue(package.IsEnd, 0);
|
m_BossAliceStates[1] = !MathUtility.GetBitValue(package.IsEnd, 1);
|
if (onBossStateRefresh != null)
|
{
|
onBossStateRefresh();
|
}
|
|
UpdateRedpoint();
|
}
|
|
public void ReceivePackage(HA007_tagGCFBLinePlayerCnt package)
|
{
|
if (package.MapID != RIDINGPETBOSS_MAP)
|
{
|
return;
|
}
|
|
RidingPetBossLineDict.Clear();
|
|
for (int i = 0; i < package.Count; i++)
|
{
|
var mapState = package.FBLineInfoList[i];
|
RidingPetBossLineDict[mapState.FBLineID] = new RidingPetBossLine()
|
{
|
playerCnt = mapState.PlayerCnt,
|
remainedHP = int.Parse(mapState.ExtraStr)
|
};
|
}
|
if (GetRidingPetBossLineDictAction != null)
|
{
|
GetRidingPetBossLineDictAction();
|
}
|
}
|
|
public string GetBossName(int index)
|
{
|
return NPCConfig.Get(BossIDArray[index]).charName;
|
}
|
|
public int GetBossRemianedHP(int index)
|
{
|
if (RidingPetBossLineDict.Count == 0 || !RidingPetBossLineDict.ContainsKey(index))
|
{
|
return 100;
|
}
|
else
|
{
|
return RidingPetBossLineDict[index].remainedHP;
|
}
|
}
|
|
public bool IsBossAlive(int index)
|
{
|
return m_BossAliceStates.ContainsKey(index) ? m_BossAliceStates[index] : false;
|
}
|
|
void UpdateRedpoint()
|
{
|
var redpointable = false;
|
if (dailyQuestModel.GetQuestState((int)DailyQuestType.RidingPetActivity)
|
== DailyQuestModel.DailyQuestState.Normal)
|
{
|
if (IsBossAlive(0) || IsBossAlive(1))
|
{
|
redpointable = true;
|
}
|
}
|
|
redpoint.state = redpointable ? RedPointState.Simple : RedPointState.None;
|
}
|
}
|
|
public struct RidingPetBossLine
|
{
|
public int playerCnt;
|
public int remainedHP;
|
}
|
|
}
|