using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
|
public class ArenaFightingPKWin : ILWindow
|
{
|
RoleInformation m_RoleInformation1;
|
RoleInformation m_RoleInformation2;
|
Button m_AutoBtn;
|
Transform m_AutoImg;
|
Text m_CountdownText;
|
|
ScrollerController m_ScrollerController1;
|
Transform Viewport1;
|
|
ScrollerController m_ScrollerController2;
|
Transform Viewport2;
|
|
|
public float UpperAndLower = 17f;
|
public float ItemHeight = 135f;
|
public float MaxHeight = 422f;
|
private ScrollRect _ScrollRect1;
|
private ScrollRect _ScrollRect2;
|
|
private List<int> _MyBuffSortList = new List<int>();//自身BUff列表
|
private List<int> _OpponentBuffSortList = new List<int>();//对手buff列表
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
DateTime dungeonEndTime;
|
BuffModel m_BuffModel;
|
BuffModel Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel<BuffModel>()); } }
|
|
private int positionType = 1;
|
#region Built-in
|
protected override void BindController()
|
{
|
m_RoleInformation1 = proxy.GetWidgtEx<RoleInformation>("HeadPortraitTip1");
|
m_RoleInformation2 = proxy.GetWidgtEx<RoleInformation>("HeadPortraitTip2");
|
m_AutoBtn = proxy.GetWidgtEx<Button>("AutoBtn");
|
m_AutoImg = proxy.GetWidgtEx<Transform>("AutoImg");
|
m_CountdownText = proxy.GetWidgtEx<Text>("CountdownText");
|
m_ScrollerController1 = proxy.GetWidgtEx<ScrollerController>("ScrollerController1");
|
Viewport1 = proxy.GetWidgtEx<Transform>("Viewport1");
|
|
m_ScrollerController2 = proxy.GetWidgtEx<ScrollerController>("ScrollerController2");
|
Viewport2 = proxy.GetWidgtEx<Transform>("Viewport2");
|
|
_ScrollRect1 = Viewport1.GetComponent<ScrollRect>();
|
_ScrollRect2 = Viewport2.GetComponent<ScrollRect>();
|
|
}
|
|
protected override void AddListeners()
|
{
|
m_AutoBtn.AddListener(AutoButton);
|
m_RoleInformation1.BuffButton.AddListener(myBuffList);
|
m_RoleInformation2.BuffButton.AddListener(opponentBuffList);
|
}
|
|
protected override void OnPreOpen()
|
{
|
positionType = ArenaModel.Instance.ArenaPKUpInfoData.myBornPoint;
|
PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418)
|
GA_Player.s_OnRefreshLife += OnRefreshPlayerLifeBar;
|
if (PlayerDatas.Instance.hero != null)
|
{
|
PlayerDatas.Instance.hero.ActorInfo.OnHpChange += OnHeroHpChanged;
|
}
|
_MyBuffSortList.Clear();
|
_OpponentBuffSortList.Clear();
|
|
BuffScheduling();//buff排序
|
GetopponentBuff();
|
|
IsShowMyBuffBtn();
|
IsShowOpponentBuffBtn();
|
}
|
|
protected override void OnActived()
|
{
|
dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart);
|
PlaceOfBirth(positionType);//从出生位置设置信息
|
Viewport1.SetActiveIL(false);
|
Viewport2.SetActiveIL(false);
|
}
|
protected override void OnAfterOpen()
|
{
|
OnCreateGridLineCell(m_ScrollerController1);
|
OnCreateGridLineCel2(m_ScrollerController2);
|
|
ArenaModel.Instance.UpdatePKInfoListEvent += PlaceOfBirth;
|
m_ScrollerController1.OnRefreshCell += OnRefreshGridCell1;
|
m_ScrollerController2.OnRefreshCell += OnRefreshGridCell2;
|
HeroBehaviour.OnStopHandupAI += OnHeroHandupAIStopPassive;
|
HeroBehaviour.OnStartHandupAI += OnHeroHandupAIStarted;
|
dungeonModel.dungeonCoolDownEvent += DungeonCoolDownEvent;
|
BuffModel.Even_ObjAddBuf += AddBuff;
|
BuffModel.Even_ObjDelBuff += DelBuff;
|
BuffModel.BuffUpdateEvent += BuffUpdateEvent;
|
GA_Player.ShieldUpdate += ShieldUpdate;
|
}
|
|
protected override void OnPreClose()
|
{
|
ArenaModel.Instance.UpdatePKInfoListEvent -= PlaceOfBirth;
|
m_ScrollerController1.OnRefreshCell -= OnRefreshGridCell1;
|
m_ScrollerController2.OnRefreshCell -= OnRefreshGridCell2;
|
PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418)
|
GA_Player.s_OnRefreshLife -= OnRefreshPlayerLifeBar;
|
if (PlayerDatas.Instance.hero != null)
|
{
|
PlayerDatas.Instance.hero.ActorInfo.OnHpChange -= OnHeroHpChanged;
|
}
|
HeroBehaviour.OnStopHandupAI -= OnHeroHandupAIStopPassive;
|
HeroBehaviour.OnStartHandupAI -= OnHeroHandupAIStarted;
|
dungeonModel.dungeonCoolDownEvent -= DungeonCoolDownEvent;
|
BuffModel.Even_ObjAddBuf -= AddBuff;
|
BuffModel.Even_ObjDelBuff -= DelBuff;
|
BuffModel.BuffUpdateEvent -= BuffUpdateEvent;
|
GA_Player.ShieldUpdate -= ShieldUpdate;
|
}
|
|
protected override void LateUpdate()
|
{
|
if (PlayerDatas.Instance.hero != null && PlayerDatas.Instance.hero.aiHandler.IsAuto())
|
{
|
m_AutoImg.SetActiveIL(false);
|
}
|
else
|
{
|
m_AutoImg.SetActiveIL(true);
|
}
|
if (WindowCenter.Instance.IsOpen("ArenaSettlementWin"))
|
{
|
return;
|
}
|
|
if (TimeUtility.ServerNow >= dungeonEndTime)
|
{
|
m_CountdownText.text = "0";
|
}
|
else
|
{
|
var surplus = dungeonEndTime - TimeUtility.ServerNow;
|
m_CountdownText.text = (Mathf.CeilToInt((float)surplus.TotalSeconds)).ToString();
|
}
|
|
}
|
#endregion
|
|
private void OnHeroHpChanged(ulong hp)
|
{
|
PlaceOfBirthUpdate(positionType);
|
}
|
|
private void DelBuff()
|
{
|
BuffScheduling();
|
UpdateControllerPosition();
|
IsShowMyBuffBtn();
|
if (positionType == 1)
|
{
|
OnCreateGridLineCell(m_ScrollerController1);
|
}
|
else
|
{
|
OnCreateGridLineCel2(m_ScrollerController2);
|
}
|
}
|
|
private void AddBuff()
|
{
|
BuffScheduling();
|
UpdateControllerPosition();
|
IsShowMyBuffBtn();
|
if (positionType == 1)
|
{
|
OnCreateGridLineCell(m_ScrollerController1);
|
}
|
else
|
{
|
OnCreateGridLineCel2(m_ScrollerController2);
|
}
|
}
|
|
|
private void BuffUpdateEvent(int playerID)
|
{
|
int opponentPlayerId = ArenaModel.Instance.ArenaPKUpInfoData.opponentPlayerId;
|
if (playerID == opponentPlayerId)
|
{
|
GetopponentBuff();
|
UpdateControllerPositionOppoent();
|
IsShowOpponentBuffBtn();
|
if (positionType == 1)
|
{
|
OnCreateGridLineCel2(m_ScrollerController2);
|
}
|
else
|
{
|
OnCreateGridLineCell(m_ScrollerController1);
|
}
|
}
|
}
|
private void DungeonCoolDownEvent(DungeonCoolDownType type)
|
{
|
if (type == DungeonCoolDownType.FightStart)
|
{
|
dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart);
|
ArenaManagerModel.Instance.dungeonEndTime = dungeonEndTime;
|
ArenaManagerModel.Instance.fightStart = true;
|
}
|
}
|
private void Updatefighting(PlayerDataType _tCDBPlayerRefresh)
|
{
|
switch (_tCDBPlayerRefresh)
|
{
|
case PlayerDataType.LV://等级的刷新8
|
case PlayerDataType.MaxHP://最大血量的刷新28
|
case PlayerDataType.HP://当前血量29
|
case PlayerDataType.ExAttr4://当前护盾值
|
case PlayerDataType.MaxProDef://最大护盾值
|
PlaceOfBirthUpdate(positionType);
|
break;
|
}
|
}
|
|
private void OnRefreshPlayerLifeBar(uint _instanceId, ulong _hp, ulong _maxHp)
|
{
|
// Debug.Log("============== 最大血量" + _maxHp + "当前血量" + _hp);
|
if (_instanceId == PlayerDatas.Instance.baseData.PlayerID)
|
return;
|
|
//对手固定是右边
|
m_RoleInformation2.SetHeroHP(_maxHp, _hp);
|
}
|
|
private void ShieldUpdate(int playerID, int maxShield, int shieldNow)
|
{
|
if (playerID == PlayerDatas.Instance.baseData.PlayerID)
|
return;
|
|
//对手固定是右边
|
m_RoleInformation2.SetShieldNumber(maxShield, shieldNow);
|
}
|
|
private void OnHeroHandupAIStopPassive()
|
{
|
//if (!m_AutoImg.activeSelf)
|
//{
|
// m_AutoImg.SetActive(true);
|
//}
|
}
|
|
void OnHeroHandupAIStarted()
|
{
|
//if (m_AutoImg.activeSelf)
|
//{
|
// m_AutoImg.SetActive(false);
|
//}
|
}
|
private void AutoButton()
|
{
|
var _hero = PlayerDatas.Instance.hero;
|
if (_hero != null && !_hero.ActorInfo.serverDie)
|
{
|
if (!_hero.aiHandler.IsAuto())
|
{
|
_hero.Behaviour.StartHandupAI();
|
}
|
else
|
{
|
_hero.Behaviour.StopHandupAI(true);
|
}
|
}
|
//m_AutoImg.SetActive(!m_AutoImg.activeSelf);
|
}
|
|
private void myBuffList()
|
{
|
Viewport1.SetActiveIL(true);
|
}
|
private void opponentBuffList()
|
{
|
Viewport2.SetActiveIL(true);
|
}
|
private void OnCreateGridLineCell(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
|
if (positionType == 1)
|
{
|
for (int i = 0; i < _MyBuffSortList.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, _MyBuffSortList[i]);
|
}
|
}
|
else
|
{
|
for (int i = 0; i < _OpponentBuffSortList.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, _OpponentBuffSortList[i]);
|
}
|
}
|
|
gridCtrl.Restart();
|
}
|
private void OnCreateGridLineCel2(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
|
if (positionType == 1)
|
{
|
for (int i = 0; i < _OpponentBuffSortList.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, _OpponentBuffSortList[i]);
|
}
|
}
|
else
|
{
|
for (int i = 0; i < _MyBuffSortList.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, _MyBuffSortList[i]);
|
}
|
|
}
|
gridCtrl.Restart();
|
}
|
private void OnRefreshGridCell1(ScrollerDataType type, CellView cell)
|
{
|
if (cell == null)
|
return;
|
int _index = cell.index;
|
BuffBGMScripts _buffBGM = cell.GetComponent<BuffBGMScripts>();
|
var skillconfig = SkillConfig.Get(_index);
|
_buffBGM.b_BuffIcon.SetSprite(skillconfig.IconName);
|
_buffBGM.b_BuffName.text = skillconfig.SkillName;
|
_buffBGM.b_BuffContent.text = skillconfig.BuffDescription;
|
_buffBGM.b_BuffTime.SetActiveIL(false);
|
_buffBGM.BiBuffText.SetActiveIL(false);
|
_buffBGM._OnOff = false;
|
|
}
|
private void OnRefreshGridCell2(ScrollerDataType type, CellView cell)
|
{
|
if (cell == null)
|
return;
|
int _index = cell.index;
|
BuffBGMScripts _buffBGM = cell.GetComponent<BuffBGMScripts>();
|
var skillconfig = SkillConfig.Get(_index);
|
_buffBGM.b_BuffIcon.SetSprite(skillconfig.IconName);
|
_buffBGM.b_BuffName.text = skillconfig.SkillName;
|
_buffBGM.b_BuffContent.text = skillconfig.BuffDescription;
|
_buffBGM.b_BuffTime.SetActiveIL(false);
|
_buffBGM.BiBuffText.SetActiveIL(false);
|
_buffBGM._OnOff = false;
|
}
|
void UpdateControllerPosition()
|
{
|
if (_MyBuffSortList.Count == 0)
|
{
|
return;
|
}
|
if (_MyBuffSortList.Count * ItemHeight >= MaxHeight)
|
{
|
if (positionType == 1)
|
{
|
_ScrollRect1.vertical = true;
|
(Viewport1 as RectTransform).sizeDelta = (Viewport1 as RectTransform).sizeDelta.SetY(MaxHeight + UpperAndLower);
|
}
|
else
|
{
|
_ScrollRect2.vertical = true;
|
(Viewport2 as RectTransform).sizeDelta = (Viewport2 as RectTransform).sizeDelta.SetY(MaxHeight + UpperAndLower);
|
}
|
}
|
else
|
{
|
if (positionType == 1)
|
{
|
_ScrollRect1.vertical = false;
|
(Viewport1 as RectTransform).sizeDelta = (Viewport1 as RectTransform).sizeDelta.SetY(_MyBuffSortList.Count * ItemHeight + UpperAndLower);
|
}
|
else
|
{
|
_ScrollRect2.vertical = false;
|
(Viewport2 as RectTransform).sizeDelta = (Viewport2 as RectTransform).sizeDelta.SetY(_MyBuffSortList.Count * ItemHeight + UpperAndLower);
|
}
|
}
|
}
|
void UpdateControllerPositionOppoent()
|
{
|
if (_OpponentBuffSortList.Count == 0)
|
{
|
return;
|
}
|
if (_OpponentBuffSortList.Count * ItemHeight >= MaxHeight)
|
{
|
if (positionType == 1)
|
{
|
_ScrollRect2.vertical = true;
|
(Viewport2 as RectTransform).sizeDelta = (Viewport2 as RectTransform).sizeDelta.SetY(MaxHeight + UpperAndLower);
|
}
|
else
|
{
|
_ScrollRect1.vertical = true;
|
(Viewport1 as RectTransform).sizeDelta = (Viewport1 as RectTransform).sizeDelta.SetY(MaxHeight + UpperAndLower);
|
}
|
}
|
else
|
{
|
if (positionType == 1)
|
{
|
_ScrollRect2.vertical = false;
|
(Viewport2 as RectTransform).sizeDelta = (Viewport2 as RectTransform).sizeDelta.SetY(_OpponentBuffSortList.Count * ItemHeight + UpperAndLower);
|
}
|
else
|
{
|
_ScrollRect1.vertical = false;
|
(Viewport1 as RectTransform).sizeDelta = (Viewport1 as RectTransform).sizeDelta.SetY(_OpponentBuffSortList.Count * ItemHeight + UpperAndLower);
|
}
|
}
|
}
|
void BuffScheduling()//buff排序
|
{
|
//_MyBuffSortList.Clear();
|
//foreach (int key in Buffmodel._BuffDic.Keys)
|
//{
|
// _MyBuffSortList.Add(key);
|
//}
|
|
}
|
private void IsShowMyBuffBtn()
|
{
|
if (_MyBuffSortList.Count > 0)
|
{
|
if (positionType == 1)
|
{
|
m_RoleInformation1.BuffButton.SetActiveIL(true);
|
}
|
else
|
{
|
m_RoleInformation2.BuffButton.SetActiveIL(true);
|
}
|
}
|
else
|
{
|
if (positionType == 1)
|
{
|
m_RoleInformation1.BuffButton.SetActiveIL(false);
|
Viewport1.SetActiveIL(false);
|
}
|
else
|
{
|
m_RoleInformation2.BuffButton.SetActiveIL(false);
|
Viewport2.SetActiveIL(false);
|
}
|
UpdateControllerPosition();
|
}
|
if (positionType == 1)
|
{
|
m_RoleInformation1.BuffNumber.text = _MyBuffSortList.Count.ToString();
|
}
|
else
|
{
|
m_RoleInformation2.BuffNumber.text = _MyBuffSortList.Count.ToString();
|
}
|
}
|
private void IsShowOpponentBuffBtn()
|
{
|
if (_OpponentBuffSortList.Count > 0)
|
{
|
if (positionType == 1)
|
{
|
m_RoleInformation2.BuffButton.SetActiveIL(true);
|
}
|
else
|
{
|
m_RoleInformation1.BuffButton.SetActiveIL(true);
|
}
|
UpdateControllerPositionOppoent();
|
}
|
else
|
{
|
if (positionType == 1)
|
{
|
m_RoleInformation2.BuffButton.SetActiveIL(false);
|
Viewport2.SetActiveIL(false);
|
}
|
else
|
{
|
m_RoleInformation1.BuffButton.SetActiveIL(false);
|
Viewport1.SetActiveIL(false);
|
}
|
}
|
if (positionType == 1)
|
{
|
m_RoleInformation2.BuffNumber.text = _OpponentBuffSortList.Count.ToString();
|
}
|
else
|
{
|
m_RoleInformation1.BuffNumber.text = _OpponentBuffSortList.Count.ToString();
|
}
|
}
|
|
private void PlaceOfBirth(int type)//关于出生点设置位置信息
|
{
|
dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart);
|
int realmLv;
|
|
//-----------自己的信息
|
ArenaModel.ArenaPKUpInfo arenaPKUpInfo = ArenaModel.Instance.ArenaPKUpInfoData;
|
m_RoleInformation1.SetHeroHead((int)PlayerDatas.Instance.baseData.PlayerID, arenaPKUpInfo.myJob, arenaPKUpInfo.myFace, arenaPKUpInfo.myJob);
|
string PlayerName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.myName);
|
realmLv = PlayerDatas.Instance.baseData.realmLevel;
|
m_RoleInformation1.SetHeroLvAndNameLV((int)PlayerDatas.Instance.baseData.LV, PlayerName, realmLv);
|
m_RoleInformation1.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, PlayerDatas.Instance.baseData.HP);
|
m_RoleInformation1.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield);
|
m_RoleInformation1.BuffButton.SetActiveIL(false);
|
|
//------------------------------------//对手信息 固定是右边
|
m_RoleInformation2.SetHeroHead(arenaPKUpInfo.opponentPlayerId, arenaPKUpInfo.opponentFace, arenaPKUpInfo.opponentFacePic, arenaPKUpInfo.opponentJob);
|
string OpponentName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.opponentName);
|
realmLv = ArenaModel.Instance.ArenaPKUpInfoData.realmLV;
|
m_RoleInformation2.SetHeroLvAndNameLV((int)ArenaModel.Instance.ArenaPKUpInfoData.opponentLevel, OpponentName, realmLv);
|
if (ArenaManagerModel.playerInfo != null)
|
m_RoleInformation2.SetHeroHP(ArenaManagerModel.playerInfo.maxHp, ArenaManagerModel.playerInfo.maxHp);
|
|
m_RoleInformation2.SetShieldNumber(ArenaModel.Instance.ArenaPKUpInfoData.MaxProDef, ArenaModel.Instance.ArenaPKUpInfoData.opponentShield);
|
|
}
|
|
private void PlaceOfBirthUpdate(int type)//自身玩家属性刷新
|
{
|
//玩家固定是左边
|
string PlayerName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.myName);
|
m_RoleInformation1.SetHeroLvAndName((int)PlayerDatas.Instance.baseData.LV, PlayerName);
|
m_RoleInformation1.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, PlayerDatas.Instance.baseData.HP);
|
m_RoleInformation1.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield);
|
}
|
|
private void GetopponentBuff()//获取对手身上的Buff
|
{
|
List<int> buffIds = new List<int>();
|
_OpponentBuffSortList.Clear();
|
StatusMgr.Instance.GetBuffIds((uint)ArenaModel.Instance.ArenaPKUpInfoData.opponentPlayerId, ref buffIds);
|
if (buffIds.Count > 0)
|
{
|
for (int i = 0; i < buffIds.Count; i++)
|
{
|
_OpponentBuffSortList.Add(buffIds[i]);
|
}
|
}
|
}
|
}
|
|
|
|
|
|
|