using UnityEngine;
|
using vnxbqy.UI;
|
using LitJson;
|
using System.Collections.Generic;
|
|
public class ArenaManager
|
{
|
//技能获取
|
static Dictionary<int, int> Job1LevelSkill = new Dictionary<int, int>();
|
static Dictionary<int, int> Job2LevelSkill = new Dictionary<int, int>();
|
static List<int> jobSill = new List<int>();
|
//
|
public static List<AwardType> dayAwardTypelist = new List<AwardType>();
|
public static List<AwardType> seasonAwardTypelist = new List<AwardType>();
|
public static Dictionary<int, List<int>> playInfo = new Dictionary<int, List<int>>();
|
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<bool> OnILPlayerResult;
|
public static UnityEngine.Events.UnityAction<uint , uint , GActorPlayerBase.PlayerInfo , E_ActorGroup > OnILInit;
|
public static UnityEngine.Events.UnityAction<GameNetPackBasic> 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<byte> OnILPlayerHorse;
|
public static UnityEngine.Events.UnityAction OnILPlayerSelect;
|
public static UnityEngine.Events.UnityAction OnILPlayerUnSelect;
|
public static UnityEngine.Events.UnityAction<bool> OnILPlayerSyncSuitEffect;
|
public static UnityEngine.Events.UnityAction OnILPlayerClick;
|
public static UnityEngine.Events.UnityAction<uint, GameObject> OnILPlayerSwitchHorse;
|
public static UnityEngine.Events.UnityAction<uint, GameObject> OnILPlayerPutonWing;
|
public static UnityEngine.Events.UnityAction<uint, GameObject> OnILPlayerPutonWeapon;
|
public static UnityEngine.Events.UnityAction<uint, GameObject> OnILPlayerPutonSecondary;
|
public static UnityEngine.Events.UnityAction<uint, GameObject> OnILPlayerPutonClothes;
|
public static UnityEngine.Events.UnityAction<ulong> 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<bool> OnILPKWinShow;
|
|
|
public static bool IsArenaStage()
|
{
|
if (isArenaClient)
|
{
|
return isArenaClient;
|
}
|
|
var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
|
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<int[][]>(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<int[][]>(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<AwardItem> awardItems = new List<AwardItem>();
|
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;
|
}
|
}
|
}
|