using UnityEngine; using vnxbqy.UI; using LitJson; using System.Collections.Generic; public class ArenaManager { //技能获取 static Dictionary Job1LevelSkill = new Dictionary(); static Dictionary Job2LevelSkill = new Dictionary(); static List jobSill = new List(); // public static List dayAwardTypelist = new List(); public static List seasonAwardTypelist = new List(); public static Dictionary> playInfo = new Dictionary>(); public static GA_ILClientPlayer iLClientPlayer; public const int MapID = 31290; public static int ArenaCheckDistance = 200; public static int ArenaCheckAngle = 360; public static bool isArenaClient = false; public static bool isArenaRobot = false; public static bool isArenaOver = false; public static bool isArenaUse = false;//是否可以购买竞技券 public static bool isArenaPK = false; public static string myName; public static string opponentName; public static string ShowLeftTimes; //ILClientPlayer public static UnityEngine.Events.UnityAction OnILPlayerResult; public static UnityEngine.Events.UnityAction OnILInit; public static UnityEngine.Events.UnityAction OnILPlayerInit; public static UnityEngine.Events.UnityAction OnILPlayerReset; public static UnityEngine.Events.UnityAction OnILPlayerDestroy; public static UnityEngine.Events.UnityAction OnILPlayerUpdateAI; public static UnityEngine.Events.UnityAction OnILPlayerUnit; public static UnityEngine.Events.UnityAction OnILPlayerRequestName; public static UnityEngine.Events.UnityAction OnILPlayerHorse; public static UnityEngine.Events.UnityAction OnILPlayerSelect; public static UnityEngine.Events.UnityAction OnILPlayerUnSelect; public static UnityEngine.Events.UnityAction OnILPlayerSyncSuitEffect; public static UnityEngine.Events.UnityAction OnILPlayerClick; public static UnityEngine.Events.UnityAction OnILPlayerSwitchHorse; public static UnityEngine.Events.UnityAction OnILPlayerPutonWing; public static UnityEngine.Events.UnityAction OnILPlayerPutonWeapon; public static UnityEngine.Events.UnityAction OnILPlayerPutonSecondary; public static UnityEngine.Events.UnityAction OnILPlayerPutonClothes; public static UnityEngine.Events.UnityAction OnILPlayerRefreshLifeBar; //Arena Stage 场景切换 public static UnityEngine.Events.UnityAction OnILStageInitialize; public static UnityEngine.Events.UnityAction OnILStageUnInitialize; public static UnityEngine.Events.UnityAction OnILStageLoadFinish; public static UnityEngine.Events.UnityAction OnILStageUpdate; //Arena pk 场景 public static UnityEngine.Events.UnityAction OnILPKWinShow; //非服务端玩家的镜像战斗 public static bool IsArenaClientNotMirrorFight { get { return isArenaClient && !ArenaManagerModel.isMirrorFight; } } public static bool IsArenaStage() { if (isArenaClient) { return isArenaClient; } var dungeonModel = ModelCenter.Instance.GetModel(); var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); return dataMapId == MapID; } //获得职业技能 public static void ParseItemJobSkill() { var textConfig = FuncConfigConfig.Get("ArenaLVSet"); var json = JsonMapper.ToObject(textConfig.Numerical1); foreach (var key in json.Keys) { var itemID = int.Parse(key); Job1LevelSkill[itemID] = (int)json[key]; } json = JsonMapper.ToObject(textConfig.Numerical2); foreach (var key in json.Keys) { var itemID = int.Parse(key); Job2LevelSkill[itemID] = (int)json[key]; } } //通过职业和等级获得技能 public static int[] GetJobSkill(int job, int level) { jobSill.Clear(); if (job == 1) { foreach (var key in Job1LevelSkill.Keys) { if(level >= key) jobSill.Add(Job1LevelSkill[key]); } } else { foreach (var key in Job2LevelSkill.Keys) { if (level >= key) jobSill.Add(Job2LevelSkill[key]); } } return jobSill.ToArray(); } public static void ParseAwardFuncConfig() { var ArenaBillboradAward = FuncConfigConfig.Get("ArenaBillboradAward"); var MatchAwardData1 = JsonMapper.ToObject(ArenaBillboradAward.Numerical1); foreach (var num in MatchAwardData1.Keys) { int times = int.Parse(num); var items = MatchAwardData1[num]; var awardType = new AwardType(times, 1); dayAwardTypelist.Add(awardType); if (items.IsArray) { for (int i = 0; i < items.Count; i++) { var itemInfo = items[i]; if (itemInfo.IsArray && itemInfo.Count >= 3) { int id = 0; int.TryParse(itemInfo[0].ToString(), out id); int count = 0; int.TryParse(itemInfo[1].ToString(), out count); int isBind = 0; int.TryParse(itemInfo[2].ToString(), out isBind); AwardItem awardItem = new AwardItem(id, count, isBind); awardType.SetAwardItems(awardItem); } } } } var itemArray = LitJson.JsonMapper.ToObject(ArenaBillboradAward.Numerical2); if (itemArray != null) { int times = 10000; //保底排名 var awardType = new AwardType(times, 1); dayAwardTypelist.Add(awardType); for (int i = 0; i < itemArray.Length; i++) { var item = itemArray[i]; int id = 0; int.TryParse(item[0].ToString(), out id); int count = 0; int.TryParse(item[1].ToString(), out count); int isBind = 0; int.TryParse(item[2].ToString(), out isBind); AwardItem awardItem = new AwardItem(id, count, isBind); awardType.SetAwardItems(awardItem); } } var MatchAwardData3 = JsonMapper.ToObject(ArenaBillboradAward.Numerical3); foreach (var num in MatchAwardData3.Keys) { int times = int.Parse(num); var items = MatchAwardData3[num]; var awardType = new AwardType(times, 2); seasonAwardTypelist.Add(awardType); if (items.IsArray) { for (int i = 0; i < items.Count; i++) { var itemInfo = items[i]; if (itemInfo.IsArray && itemInfo.Count >= 3) { int id = 0; int.TryParse(itemInfo[0].ToString(), out id); int count = 0; int.TryParse(itemInfo[1].ToString(), out count); int isBind = 0; int.TryParse(itemInfo[2].ToString(), out isBind); AwardItem awardItem = new AwardItem(id, count, isBind); awardType.SetAwardItems(awardItem); } } } } itemArray = LitJson.JsonMapper.ToObject(ArenaBillboradAward.Numerical4); if (itemArray != null) { int times = 10000; //保底排名 var awardType = new AwardType(times, 2); seasonAwardTypelist.Add(awardType); for (int i = 0; i < itemArray.Length; i++) { var item = itemArray[i]; int id = 0; int.TryParse(item[0].ToString(), out id); int count = 0; int.TryParse(item[1].ToString(), out count); int isBind = 0; int.TryParse(item[2].ToString(), out isBind); AwardItem awardItem = new AwardItem(id, count, isBind); awardType.SetAwardItems(awardItem); } } } public class AwardType { public int type { get; private set; } //1 当日奖励 2 赛季奖励 public int num { get; private set; } public List awardItems = new List(); public AwardType(int _num, int _type) { type = _type; num = _num; awardItems.Clear(); } public void SetAwardItems(AwardItem awardItem) { awardItems.Add(awardItem); } } public struct AwardItem { public int itemId; public int itemCount; public int isBind; public AwardItem(int _id, int _count, int _isBind) { itemId = _id; itemCount = _count; isBind = _isBind; } } }