//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, June 11, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
using DG.Tweening;
|
|
//竞技场主UI
|
public class ArenaWin : ILWindow
|
{
|
Text m_txtPlayerName; //玩家名字
|
Text m_txtPlayerScore; //玩家积分
|
Text m_txtPlayerBlackBoard; //玩家排名
|
Text m_txtPlayerFight;//玩家战力
|
Text m_txtCountdown;//倒计时
|
Text m_txtDailyChallenge;//每日挑战次数
|
Text m_txtCountdownTxt;//倒计时
|
Text m_txtDailyChallengeTxt;//每日挑战次数
|
Text m_txtRefreshTxt;//刷新次数
|
//5个玩家信息
|
List<Transform> m_PlayerList = new List<Transform>();
|
|
Button Button_Close;//关闭
|
Button Btn_DailyRewards;//每日奖励
|
Button Btn_SeasonRewards;//赛季奖励
|
Button Btn_BlackBoard; //排行榜
|
Button Btn_Refresh;//刷新
|
Button Btn_BattleRecord;//对战记录
|
Button Btn_Add;//购买对战次数
|
Button Btn_RewardBoard;//打开奖励按钮
|
AvatarCell avatarCell;
|
|
ItemCell m_ItemCellToday; //当日奖励
|
ItemCell m_ItemCellSeason;//赛季奖励
|
Text DailyRewardTxt; //当日奖励
|
Text SeasonReawardTxt;//赛季奖励
|
Text TipsTxt;//提示
|
|
ToggleButton m_ToggleButton; //跳过战斗
|
|
ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
|
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
float DeltaTmp = 0;
|
|
float lastClickFightTime = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
Button_Close = proxy.GetWidgtEx<Button>("Button_Close");
|
for(int i = 1;i < 6;i++)
|
{
|
m_PlayerList.Add( proxy.GetWidgtEx<Transform>("Button" + i.ToString()));
|
}
|
avatarCell = proxy.GetWidgtEx<AvatarCell>("avatarCell"); //关闭
|
Button_Close = proxy.GetWidgtEx<Button>("Button_Close"); //关闭
|
Btn_DailyRewards = proxy.GetWidgtEx<Button>("Btn_DailyRewards");//每日奖励
|
Btn_SeasonRewards = proxy.GetWidgtEx<Button>("Btn_SeasonRewards");//赛季奖励
|
Btn_BlackBoard = proxy.GetWidgtEx<Button>("Btn_BlackBoard"); //排行榜
|
Btn_Refresh = proxy.GetWidgtEx<Button>("Btn_Refresh");//刷新
|
m_txtRefreshTxt = Btn_Refresh.transform.Find("Text").GetComponent<Text>();
|
Btn_BattleRecord = proxy.GetWidgtEx<Button>("Btn_BattleRecord") ;//对战记录
|
Btn_Add = proxy.GetWidgtEx<Button>("Btn_Add");//购买对战次数
|
Btn_RewardBoard = proxy.GetWidgtEx<Button>("Btn_RewardBoard");//
|
|
m_txtPlayerName = proxy.GetWidgtEx<Text>("PlayerName"); //玩家名字
|
m_txtPlayerScore = proxy.GetWidgtEx<Text>("PlayerScore"); //玩家积分
|
m_txtPlayerBlackBoard = proxy.GetWidgtEx<Text>("PlayerBlackBoard"); //玩家排名
|
m_txtPlayerFight = proxy.GetWidgtEx<Text>("PlayerFight");//玩家战力
|
m_txtCountdown = proxy.GetWidgtEx<Text>("Countdown");//倒计时
|
m_txtDailyChallenge = proxy.GetWidgtEx<Text>("DailyChallenge");//每日挑战次数
|
|
m_txtCountdownTxt = proxy.GetWidgtEx<Text>("CountdownTxt");//倒计时
|
m_txtDailyChallengeTxt = proxy.GetWidgtEx<Text>("DailyChallengeTxt");//每日挑战次数
|
|
//当日奖励
|
m_ItemCellToday = proxy.GetWidgtEx<ItemCell>("ItemCellToday");
|
DailyRewardTxt = proxy.GetWidgtEx<Text>("DailyRewardTxt");
|
//赛季奖励
|
m_ItemCellSeason = proxy.GetWidgtEx<ItemCell>("ItemCellSeason");
|
SeasonReawardTxt = proxy.GetWidgtEx<Text>("SeasonReawardTxt");
|
TipsTxt = proxy.GetWidgtEx<Text>("TipsTxt");
|
m_ToggleButton = proxy.GetWidgtEx<ToggleButton>("Toggle_Inevitable");
|
|
//第6个放挑战记录里的数据
|
for (int i= 0;i < 7;i++)
|
{
|
IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo EmptyInfo = new IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo();
|
ArenaModel.Instance.m_PlayerInfo.Add(EmptyInfo);
|
}
|
|
}
|
|
protected override void AddListeners()
|
{
|
//关闭
|
Button_Close.SetListener(() =>
|
{
|
WindowCenter.Instance.CloseIL<ArenaWin>();
|
});
|
//每日奖励
|
Btn_DailyRewards.SetListener(() =>
|
{
|
TipsTxt.text = StringUtility.Contact(Language.Get("L1003"), ":", Language.Get("ArenaTodayRewardTips"));
|
});
|
//赛季奖励
|
Btn_SeasonRewards.SetListener(() =>
|
{
|
TipsTxt.text = StringUtility.Contact(Language.Get("L1003"), ":", Language.Get("ArenaSeasonRewardTips"));
|
});
|
//排行榜
|
Btn_BlackBoard.SetListener(() =>
|
{
|
WindowCenter.Instance.OpenIL<ArenaRankWin>();
|
});
|
Btn_RewardBoard.SetListener(() =>
|
{
|
WindowCenter.Instance.OpenIL<ArenaRewardWin>();
|
});
|
//刷新
|
Btn_Refresh.SetListener(() =>
|
{
|
int count = ArenaModel.Instance.freeRefreshPlayerMax - ArenaModel.Instance.playerInfo.MatchRefreshCount;
|
if (count > 0)
|
{
|
ArenaModel.Instance.SendRefreshMatch(1);
|
Btn_Refresh.GetComponent<Image>().color = Color.white;
|
}
|
else
|
{
|
count = 0;
|
Btn_Refresh.GetComponent<Image>().color = Color.gray;
|
SysNotifyMgr.Instance.ShowTip("ArenaRefreshTimes");
|
}
|
m_txtRefreshTxt.text = Language.Get("ArenaSetRefresh", count);
|
});
|
//对战记录
|
Btn_BattleRecord.SetListener(() =>
|
{
|
ArenaModel.Instance.bCheckRedPoint = false;
|
ArenaModel.Instance.UpdateRedPoint();
|
WindowCenter.Instance.OpenIL<ArenaRecordWin>();
|
});
|
//购买对战次数
|
Btn_Add.SetListener(() =>
|
{
|
WindowCenter.Instance.OpenIL<ArenaAddTimesWin>();
|
});
|
for (int i = 1; i < 6; i++)
|
{
|
int tmp = i - 1;
|
m_PlayerList[tmp].Find("Btn_OK").GetComponent<Button>().SetListener(() =>
|
{
|
if (!ArenaModel.Instance.bArenaOpen)
|
{
|
SysNotifyMgr.Instance.ShowTip("ArenaTimeLimit");
|
return;
|
}
|
|
int error;
|
if (!dungeonModel.CanEnter(out error))
|
{
|
dungeonModel.ProcessEnterError(error);
|
return;
|
}
|
|
if (Time.realtimeSinceStartup - lastClickFightTime < 0.5)
|
return;
|
lastClickFightTime = Time.realtimeSinceStartup;
|
|
if (ArenaModel.Instance.playerInfo.GetDayMatchCount() > 0)
|
{
|
ArenaModel.Instance.SelectMatchPlayer = tmp; //当前选择的用户
|
// B2 10 竞技场挑战玩家 通知后端登记挑战目标ID
|
var tmpPlayer = ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer];
|
uint PlayerID = tmpPlayer.PlayerID;
|
if (ArenaModel.Instance.isSkipFightChoose)
|
{
|
//ArenaManager.isArenaClient = true;
|
ArenaModel.Instance.SendArenaBattle(PlayerID, 0);
|
if (PlayerID > 10000)
|
{
|
mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, PlayerID, 3);
|
}
|
else
|
{
|
Clock.AlarmAfter(0.2, () =>
|
{
|
ulong fightpower = tmpPlayer.FightPowerEx * Constants.ExpPointValue + tmpPlayer.FightPower;
|
|
ArenaModel.Instance.SendArenaBattle(PlayerID, (byte)(PlayerDatas.Instance.baseData.FightPoint >= fightpower ? 1 : 2));
|
});
|
}
|
}
|
else
|
{
|
if (PlayerID > 10000)
|
{
|
mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, PlayerID, 0);
|
}
|
else
|
{
|
ArenaModel.Instance.StartClientArena();
|
}
|
ArenaModel.Instance.bFirstStageLoadCheck = true;
|
LocalSave.SetInt("MatchInfoSelect", tmp);
|
LocalSave.SetInt("MatchInfoPlayerID", (int)ArenaModel.Instance.m_PlayerInfo[tmp].PlayerID);
|
LocalSave.SetString("MatchInfoPlayerName", ArenaModel.Instance.m_PlayerInfo[tmp].PlayerName);
|
LocalSave.SetInt("MatchInfoJob", ArenaModel.Instance.m_PlayerInfo[tmp].Job);
|
LocalSave.SetInt("MatchInfoLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].LV);
|
LocalSave.SetInt("MatchInfoRealmLV", (int)ArenaModel.Instance.m_PlayerInfo[tmp].RealmLV);
|
LocalSave.SetInt("MatchInfoFightPower", (int)ArenaModel.Instance.m_PlayerInfo[tmp].FightPower);
|
LocalSave.SetInt("MatchInfoScore", (int)ArenaModel.Instance.m_PlayerInfo[tmp].Score);
|
LocalSave.SetInt("ArenaAllSeconds", TimeUtility.AllSeconds);
|
LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, "");
|
}
|
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("ArenaPKTimes");
|
}
|
|
});
|
}
|
|
SeasonReawardTxt.text = Language.Get("ArenaSeasonReward");
|
TipsTxt.text = StringUtility.Contact(Language.Get("L1003"), ":", Language.Get("ArenaTodayRewardTips"));
|
|
m_ToggleButton.AddListener(SkipChallenge);
|
}
|
|
protected override void OnPreOpen()
|
{
|
ArenaModel.Instance.currentRecordIndex = 0;
|
UpdatePlayerInfo();
|
UpdateServerTimeRefresh();
|
ArenaModel.Instance.playerInfo.UpdatePlayerInfoEvent += UpdatePlayerInfo;
|
ArenaModel.Instance.UpdateMatchUserEvent += UpdateMatchUser;
|
TimeUtility.OnServerTimeRefresh += UpdateServerTimeRefresh;
|
ArenaRankModel.Instance.UpdateUserRankEvent += UpdateUserRank;
|
//只有第一次自动刷新,其他要点刷新按钮
|
if(ArenaModel.Instance.bFirstShow)
|
{
|
ArenaModel.Instance.FirstData();
|
ArenaModel.Instance.bFirstShow = false;
|
}
|
ArenaModel.Instance.SendRefreshMatch(0);
|
ArenaModel.Instance.UpdateRedPoint();
|
ArenaRankModel.Instance.SendArenaWatchBillboard(0, 1, 1);
|
if (ArenaModel.Instance.pkList != null)
|
UpdateMatchUser(ArenaModel.Instance.pkList);
|
|
Debug.Log("PlayerID:"+PlayerDatas.Instance.PlayerId);
|
|
if (PlayerDatas.Instance.baseData.LV < ArenaModel.Instance.skipFightLV)
|
{
|
m_ToggleButton.isOn = false;
|
}
|
else
|
{
|
m_ToggleButton.isOn = ArenaModel.Instance.isSkipFightChoose;
|
}
|
lastClickFightTime = 0;
|
}
|
|
|
protected override void OnPreClose()
|
{
|
ArenaModel.Instance.playerInfo.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
|
ArenaModel.Instance.UpdateMatchUserEvent -= UpdateMatchUser;
|
TimeUtility.OnServerTimeRefresh -= UpdateServerTimeRefresh;
|
ArenaRankModel.Instance.UpdateUserRankEvent -= UpdateUserRank;
|
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
protected override void OnAfterClose()
|
{
|
}
|
protected override void LateUpdate()
|
{
|
DeltaTmp += Time.deltaTime;
|
if(DeltaTmp > 1)
|
{
|
DeltaTmp = 0;
|
UpdateServerTimeRefresh();
|
}
|
}
|
#endregion
|
|
//更新排名
|
void UpdateUserRank(uint type,int index)
|
{
|
if (type != ArenaModel.Instance.RankType) //28代表竞技场,
|
return;
|
|
//Debug.Log("UpdateUserRank:" + index);
|
m_txtPlayerBlackBoard.color = UIHelper.GetUIColor(TextColType.Green);
|
if (index <= 0)
|
{
|
UpdateRewardItem(10000);
|
m_txtPlayerBlackBoard.text = Language.Get("DemonJar13");
|
}
|
else
|
{
|
UpdateRewardItem(index);
|
m_txtPlayerBlackBoard.text = StringUtility.Contact(Language.Get("ArenaSetMentle_Blackboard"), ":", index.ToString());
|
}
|
}
|
//更新个人信息
|
void UpdatePlayerInfo()
|
{
|
var playerData = PlayerDatas.Instance.baseData;
|
avatarCell.InitUI(AvatarHelper.GetMyAvatarModel());
|
m_txtPlayerName.text = playerData.PlayerName;//玩家名字
|
m_txtPlayerScore.text = StringUtility.Contact(Language.Get("Arena_Score") , ":" , ArenaModel.Instance.playerInfo.Score.ToString());//玩家积分
|
m_txtPlayerFight.text = StringUtility.Contact(Language.Get("L1056") , ":", UIHelper.ReplaceLargeNum(playerData.FightPoint)); //玩家战力
|
|
m_txtCountdownTxt.text = StringUtility.Contact(Language.Get("Arena_CountDownTxt") , ":");//倒计时
|
m_txtDailyChallengeTxt.text = StringUtility.Contact(Language.Get("Arena_PKTimes") , ":");//每日挑战次数
|
m_txtDailyChallenge.text = ArenaModel.Instance.playerInfo.GetDayMatchInfo();//每日挑战次数
|
m_txtDailyChallenge.color = UIHelper.GetUIColor(ArenaManager.isArenaOver ? TextColType.Red : TextColType.Green);
|
|
////////////////////////////////////////////////////////////////////////////////////////////
|
//更新列表
|
if (ArenaModel.Instance.m_PlayerInfo.Count > 0)
|
{
|
for (int i = 0; i < m_PlayerList.Count; i++)
|
{
|
ulong fightpower = ArenaModel.Instance.m_PlayerInfo[i].FightPowerEx;
|
fightpower = fightpower * Constants.ExpPointValue;
|
fightpower = fightpower + ArenaModel.Instance.m_PlayerInfo[i].FightPower;
|
|
//目标玩家ID,小于10000为机器人ID
|
m_PlayerList[i].Find("TextPlayerName").GetComponent<Text>().text = ArenaModel.Instance.m_PlayerInfo[i].PlayerName;
|
m_PlayerList[i].Find("ImageHead").GetComponent<AvatarCell>().InitUI(AvatarHelper.GetAvatarModel((int)ArenaModel.Instance.m_PlayerInfo[i].PlayerID, (int)ArenaModel.Instance.m_PlayerInfo[i].Face, (int)ArenaModel.Instance.m_PlayerInfo[i].FacePic, ArenaModel.Instance.m_PlayerInfo[i].Job));
|
//战力,机器人读等级表取等级对应战力
|
m_PlayerList[i].Find("TextPlayerFight").GetComponent<Text>().text = StringUtility.Contact(Language.Get("L1056") , ":" , UIHelper.ReplaceLargeNum(fightpower));
|
//积分
|
m_PlayerList[i].Find("TextPlayerScore").GetComponent<Text>().text = StringUtility.Contact(Language.Get("Arena_Score") , ":" , ArenaModel.Instance.m_PlayerInfo[i].Score.ToString());
|
}
|
}
|
|
//免费刷新次数
|
int count = ArenaModel.Instance.freeRefreshPlayerMax - ArenaModel.Instance.playerInfo.MatchRefreshCount;
|
m_txtRefreshTxt.text = Language.Get("ArenaSetRefresh", count);
|
|
if (count > 0)
|
{
|
Btn_Refresh.GetComponent<Image>().color = Color.white;
|
}
|
else
|
{
|
Btn_Refresh.GetComponent<Image>().color = Color.gray;
|
}
|
|
}
|
|
//更新匹配列表
|
void UpdateMatchUser(IL_HA922_tagGCArenaMatchList vNetData)
|
{
|
for (int i = 0; i < vNetData.MatchList.Length; i++)
|
{
|
//目标玩家ID,小于10000为机器人ID
|
if (vNetData.MatchList[i].PlayerID < 10000)
|
{
|
vNetData.MatchList[i].PlayerName = ArenaModel.Instance.RobotName;
|
vNetData.MatchList[i].FightPower = (uint)ArenaModel.Instance.GetLevel(vNetData.MatchList[i].LV,2);
|
vNetData.MatchList[i].FightPowerEx = 0;
|
}
|
|
ulong fightpower = vNetData.MatchList[i].FightPowerEx;
|
fightpower = fightpower * Constants.ExpPointValue;
|
fightpower = fightpower + vNetData.MatchList[i].FightPower;
|
|
|
ArenaModel.Instance.m_PlayerInfo[i] = vNetData.MatchList[i];
|
//Debug.Log(ArenaModel.Instance.m_PlayerInfo[i].PlayerID);
|
m_PlayerList[i].Find("TextPlayerName").GetComponent<Text>().text = ArenaModel.Instance.m_PlayerInfo[i].PlayerName;
|
m_PlayerList[i].Find("ImageHead").GetComponent<AvatarCell>().InitUI(AvatarHelper.GetAvatarModel((int)ArenaModel.Instance.m_PlayerInfo[i].PlayerID, (int)ArenaModel.Instance.m_PlayerInfo[i].Face, (int)ArenaModel.Instance.m_PlayerInfo[i].FacePic, ArenaModel.Instance.m_PlayerInfo[i].Job));
|
//战力,机器人读等级表取等级对应战力
|
m_PlayerList[i].Find("TextPlayerFight").GetComponent<Text>().text = StringUtility.Contact(Language.Get("L1056") , ":" , UIHelper.ReplaceLargeNum(fightpower));
|
//积分
|
m_PlayerList[i].Find("TextPlayerScore").GetComponent<Text>().text = StringUtility.Contact(Language.Get("Arena_Score") , ":" ,ArenaModel.Instance.m_PlayerInfo[i].Score.ToString());
|
}
|
}
|
//判断当前奖励类型
|
void UpdateRewardItem(int reward)
|
{
|
int index = 0;
|
for(int i=0;i < ArenaManager.dayAwardTypelist.Count;i++)
|
{
|
if (reward == ArenaManager.dayAwardTypelist[0].num)
|
{
|
index = 0;
|
}
|
else
|
{
|
|
if (reward > ArenaManager.dayAwardTypelist[i].num && reward <= ArenaManager.dayAwardTypelist[i + 1].num)
|
{
|
index = i + 1;
|
}
|
}
|
}
|
int allCount = ArenaManager.dayAwardTypelist.Count;
|
//当日奖励
|
int m_ItemID = ArenaManager.dayAwardTypelist[index].awardItems[0].itemId;
|
int m_Count = ArenaManager.dayAwardTypelist[index].awardItems[0].itemCount;
|
m_ItemCellToday.Init(new ItemCellModel(m_ItemID, false, (ulong)m_Count));
|
m_ItemCellToday.button.AddListener(() => ItemTipUtility.Show(m_ItemID));
|
DailyRewardTxt.text = Language.Get("ArenaTodayReward");
|
|
|
index = 0;
|
for (int i = 0; i < ArenaManager.seasonAwardTypelist.Count; i++)
|
{
|
if (reward == ArenaManager.seasonAwardTypelist[0].num)
|
{
|
index = 0;
|
}
|
else
|
{
|
|
if (reward > ArenaManager.seasonAwardTypelist[i].num && reward <= ArenaManager.seasonAwardTypelist[i + 1].num)
|
{
|
index = i + 1;
|
}
|
}
|
}
|
|
|
//赛季奖励
|
int m_ItemID1 = ArenaManager.seasonAwardTypelist[index].awardItems[0].itemId;
|
m_Count = ArenaManager.seasonAwardTypelist[index].awardItems[0].itemCount;
|
m_ItemCellSeason.Init(new ItemCellModel(m_ItemID1, false, (ulong)m_Count));
|
m_ItemCellSeason.button.AddListener(() => ItemTipUtility.Show(m_ItemID1));
|
|
}
|
//更新服务器时间,倒计时
|
void UpdateServerTimeRefresh()
|
{
|
int day = 0;
|
int hour = 0;
|
|
if(TimeUtility.OpenDay < GeneralDefine.openServerCustomDays)
|
{
|
day = GeneralDefine.openServerCustomDays - TimeUtility.OpenDay - 1;
|
hour = 24 - TimeUtility.ServerNow.Hour +4;
|
if(hour > 24)
|
{
|
day += 1;
|
hour -= 24;
|
}
|
}
|
else
|
{
|
day = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek;
|
day = GeneralDefine.openServerCustomDays - day;
|
if (TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Monday && TimeUtility.ServerNow.Hour < 5)
|
{
|
day = 0;
|
hour = 4 - TimeUtility.ServerNow.Hour ;
|
}else
|
{
|
hour = 24 - TimeUtility.ServerNow.Hour + 4 -1;
|
if (hour > 24)
|
{
|
day += 1;
|
hour -= 24;
|
}
|
}
|
}
|
var minute = 60 - TimeUtility.ServerNow.Minute;
|
if(TimeUtility.ServerNow.Hour == 4 && TimeUtility.ServerNow.Minute > 58)
|
{
|
m_txtCountdown.text = Language.Get("ArenaTimeLimit");
|
m_txtCountdown.color = UIHelper.GetUIColor(TextColType.Red);
|
ArenaModel.Instance.bArenaOpen = false;
|
}
|
else
|
{
|
m_txtCountdown.color = UIHelper.GetUIColor(TextColType.Green);
|
m_txtCountdown.text = StringUtility.Contact(day.ToString(), Language.Get("L1074"), hour.ToString(), Language.Get("RealmWin_Bewrite_33"), minute, Language.Get("L1073"));
|
ArenaModel.Instance.bArenaOpen = true;
|
}
|
}
|
|
void SkipChallenge()
|
{
|
if (PlayerDatas.Instance.baseData.LV < ArenaModel.Instance.skipFightLV)
|
{
|
SysNotifyMgr.Instance.ShowTip("RuneSpecialHoleLevelError", ArenaModel.Instance.skipFightLV);
|
return;
|
}
|
|
m_ToggleButton.isOn = !m_ToggleButton.isOn;
|
ArenaModel.Instance.isSkipFightChoose = m_ToggleButton.isOn;
|
}
|
|
}
|