using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { [XLua.LuaCallCSharp] [XLua.Hotfix] public class RidingPetBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public int[] BossIDArray; public int[] Boss1RewardIDArray; public int[] Boss2RewardIDArray; public bool isActivityOver { get; private set; } public const int RIDINGPETBOSS_MAP = 31200; Dictionary RidingPetBossLineDict = new Dictionary(); private string m_MountsBossID; private string m_Boss1RewardID; private string m_Boss2RewardID; public event Action GetRidingPetBossLineDictAction; public string MountsBossID { get { if (m_MountsBossID == null) { m_MountsBossID = FuncConfigConfig.Get("QCBOSSID").Numerical1; } return m_MountsBossID; } } public string Boss1RewardID { get { if (m_Boss1RewardID == null) { m_Boss1RewardID = FuncConfigConfig.Get("QCBOSSID").Numerical2; } return m_Boss1RewardID; } } public string Boss2RewardID { get { if (m_Boss2RewardID == null) { m_Boss2RewardID = FuncConfigConfig.Get("QCBOSSID").Numerical3; } return m_Boss2RewardID; } } public override void Init() { BossIDArray = ConfigParse.GetMultipleStr(MountsBossID); Boss1RewardIDArray = ConfigParse.GetMultipleStr(Boss1RewardID); Boss2RewardIDArray = ConfigParse.GetMultipleStr(Boss2RewardID); } public void OnBeforePlayerDataInitialize() { } public void OnPlayerLoginOk() { } public override void UnInit() { } public void ReceivePackage(HAC07_tagGCHorsePetBossInfo package) { if (package.IsEnd == 1) { isActivityOver = true; } } 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 struct RidingPetBossLine { public int playerCnt; public int remainedHP; } }