Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -584,9 +584,9 @@ Register(typeof(HAA90_tagMCCrossActLianqiInfo), typeof(DTCAA90_tagMCCrossActLianqiInfo)); Register(typeof(HAA91_tagMCActLianqiPlayerInfo), typeof(DTCAA91_tagMCActLianqiPlayerInfo)); Register(typeof(IL_HA922_tagGCArenaMatchList), typeof(IL_DTCA922_tagGCArenaMatchList));// A9 22 竞技场匹配玩家列表 Register(typeof(IL_HA923_tagGCArenaBattleRecordList), typeof(IL_DTCA923_tagGCArenaBattleRecordList));// A9 23 竞技场对战记录列表 Register(typeof(IL_HA926_tagGCArenaBattlePlayerInfo), typeof(IL_DTCA926_tagGCArenaBattlePlayerInfo)); Register(typeof(HA922_tagGCArenaMatchList), typeof(DTCA922_tagGCArenaMatchList));// A9 22 竞技场匹配玩家列表 Register(typeof(HA923_tagGCArenaBattleRecordList), typeof(DTCA923_tagGCArenaBattleRecordList));// A9 23 竞技场对战记录列表 Register(typeof(HA926_tagGCArenaBattlePlayerInfo), typeof(DTCA926_tagGCArenaBattlePlayerInfo)); Register(typeof(HA3C3_tagMCArenaPlayerInfo), typeof(DTCA3C3_tagMCArenaPlayerInfo));// A3 C3 竞技场玩家信息 Register(typeof(HA927_tagGCXiangongNewPlayerInfo), typeof(DTCA927_tagGCXiangongNewPlayerInfo)); Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA922_tagGCArenaMatchList.cs
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA922_tagGCArenaMatchList.cs @@ -1,12 +1,12 @@ using UnityEngine; using System.Collections; // A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList public class IL_DTCA922_tagGCArenaMatchList : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); IL_HA922_tagGCArenaMatchList vNetData = vNetPack as IL_HA922_tagGCArenaMatchList; ArenaModel.Instance.ReceiveMatchData(vNetData); } } // A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList public class DTCA922_tagGCArenaMatchList : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA922_tagGCArenaMatchList vNetData = vNetPack as HA922_tagGCArenaMatchList; ArenaModel.Instance.ReceiveMatchData(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA922_tagGCArenaMatchList.cs.meta
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA922_tagGCArenaMatchList.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 327dfc384d93a984fad159dea05140a2 guid: 9e37346e325b14244ac171e2e275237f MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA923_tagGCArenaBattleRecordList.cs
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA923_tagGCArenaBattleRecordList.cs @@ -1,12 +1,12 @@ using UnityEngine; using System.Collections; // A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList public class IL_DTCA923_tagGCArenaBattleRecordList : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); IL_HA923_tagGCArenaBattleRecordList vNetData = vNetPack as IL_HA923_tagGCArenaBattleRecordList; ArenaModel.Instance.ReceiveBattleRecordList(vNetData); } } // A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList public class DTCA923_tagGCArenaBattleRecordList : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA923_tagGCArenaBattleRecordList vNetData = vNetPack as HA923_tagGCArenaBattleRecordList; ArenaModel.Instance.ReceiveBattleRecordList(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA923_tagGCArenaBattleRecordList.cs.meta
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA923_tagGCArenaBattleRecordList.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 4c280ad1dda1d65438b0fc394e2c65c1 guid: 2992ea3d95f234849ad294a7d23c940e MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA926_tagGCArenaBattlePlayerInfo.cs
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA926_tagGCArenaBattlePlayerInfo.cs @@ -1,12 +1,12 @@ using UnityEngine; using System.Collections; // A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo public class IL_DTCA926_tagGCArenaBattlePlayerInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); IL_HA926_tagGCArenaBattlePlayerInfo vNetData = vNetPack as IL_HA926_tagGCArenaBattlePlayerInfo; ArenaModel.Instance.ReceiveBattLePlayer(vNetData); } } // A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo public class DTCA926_tagGCArenaBattlePlayerInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA926_tagGCArenaBattlePlayerInfo vNetData = vNetPack as HA926_tagGCArenaBattlePlayerInfo; ArenaModel.Instance.ReceiveBattLePlayer(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA926_tagGCArenaBattlePlayerInfo.cs.meta
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/IL_DTCA926_tagGCArenaBattlePlayerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 231e0192ff5e06d419330b686d051a50 guid: 5222f41b82ad6024e8fc57e58a5addad MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/ServerPack/HA9_Function/HA922_tagGCArenaMatchList.cs
New file @@ -0,0 +1,45 @@ using UnityEngine; using System.Collections; // A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList public class HA922_tagGCArenaMatchList : GameNetPackBasic { public byte MatchCount; public tagGCArenaMatchInfo[] MatchList; // 匹配列表 public HA922_tagGCArenaMatchList () { _cmd = (ushort)0xA922; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out MatchCount, vBytes, NetDataType.BYTE); MatchList = new tagGCArenaMatchInfo[MatchCount]; for (int i = 0; i < MatchCount; i ++) { MatchList[i] = new tagGCArenaMatchInfo(); TransBytes (out MatchList[i].PlayerID, vBytes, NetDataType.DWORD); TransBytes (out MatchList[i].PlayerName, vBytes, NetDataType.Chars, 33); TransBytes (out MatchList[i].Job, vBytes, NetDataType.BYTE); TransBytes (out MatchList[i].LV, vBytes, NetDataType.WORD); TransBytes (out MatchList[i].RealmLV, vBytes, NetDataType.WORD); TransBytes (out MatchList[i].FightPower, vBytes, NetDataType.DWORD); TransBytes (out MatchList[i].FightPowerEx, vBytes, NetDataType.DWORD); TransBytes (out MatchList[i].Score, vBytes, NetDataType.DWORD); TransBytes (out MatchList[i].Face, vBytes, NetDataType.DWORD); TransBytes (out MatchList[i].FacePic, vBytes, NetDataType.DWORD); } } public struct tagGCArenaMatchInfo { public uint PlayerID; //目标玩家ID,小于10000为机器人ID public string PlayerName; public byte Job; public ushort LV; //等级 public ushort RealmLV; //境界,机器人读境界表取等级对应境界 public uint FightPower; //战力求余亿部分,机器人读等级表取等级对应战力 public uint FightPowerEx; //战力整除亿部分,机器人读等级表取等级对应战力 public uint Score; //积分 public uint Face; //基本脸型 public uint FacePic; //头像框 } } Core/NetworkPackage/ServerPack/HA9_Function/HA922_tagGCArenaMatchList.cs.meta
File was renamed from Core/NetworkPackage/ServerPack/HA9_Function/IL_HA922_tagGCArenaMatchList.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: ccb17a3b747ab1e488c8ae424595b8f9 guid: f9280ada14e829b4fb2c243d7a8dcd74 MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/ServerPack/HA9_Function/HA923_tagGCArenaBattleRecordList.cs
New file @@ -0,0 +1,53 @@ using UnityEngine; using System.Collections; // A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList public class HA923_tagGCArenaBattleRecordList : GameNetPackBasic { public byte RecordCount; public tagGCArenaBattleRecord[] BattleRecordList; // 对战列表 public HA923_tagGCArenaBattleRecordList () { _cmd = (ushort)0xA923; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out RecordCount, vBytes, NetDataType.BYTE); BattleRecordList = new tagGCArenaBattleRecord[RecordCount]; for (int i = 0; i < RecordCount; i ++) { BattleRecordList[i] = new tagGCArenaBattleRecord(); TransBytes (out BattleRecordList[i].PlayerID, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].PlayerName, vBytes, NetDataType.Chars, 33); TransBytes (out BattleRecordList[i].Job, vBytes, NetDataType.BYTE); TransBytes (out BattleRecordList[i].LV, vBytes, NetDataType.WORD); TransBytes (out BattleRecordList[i].RealmLV, vBytes, NetDataType.WORD); TransBytes (out BattleRecordList[i].FightPower, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].FightPowerEx, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].Score, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].AddScoreLen, vBytes, NetDataType.BYTE); TransBytes (out BattleRecordList[i].AddScore, vBytes, NetDataType.Chars, BattleRecordList[i].AddScoreLen); TransBytes (out BattleRecordList[i].IsWin, vBytes, NetDataType.BYTE); TransBytes (out BattleRecordList[i].Time, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].Face, vBytes, NetDataType.DWORD); TransBytes (out BattleRecordList[i].FacePic, vBytes, NetDataType.DWORD); } } public struct tagGCArenaBattleRecord { public uint PlayerID; //目标玩家ID,小于10000为机器人ID public string PlayerName; public byte Job; public ushort LV; //等级 public ushort RealmLV; //境界,机器人读境界表取等级对应境界 public uint FightPower; //战力求余亿部分,机器人读等级表取等级对应战力 public uint FightPowerEx; //战力整除亿部分,机器人读等级表取等级对应战力 public uint Score; //积分 public byte AddScoreLen; public string AddScore; //本次对战增加的积分,有正负 public byte IsWin; //是否获胜 public uint Time; //时间戳 public uint Face; //基本脸型 public uint FacePic; //头像框 } } Core/NetworkPackage/ServerPack/HA9_Function/HA923_tagGCArenaBattleRecordList.cs.meta
File was renamed from Core/NetworkPackage/ServerPack/HA9_Function/IL_HA923_tagGCArenaBattleRecordList.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: 30d1dda947fb2e948887bf6abcf06445 guid: af5bc007c6a300f458b7dfa3ffcc3deb MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/ServerPack/HA9_Function/HA926_tagGCArenaBattlePlayerInfo.cs
File was renamed from Core/NetworkPackage/ServerPack/HA9_Function/IL_HA926_tagGCArenaBattlePlayerInfo.cs @@ -1,31 +1,33 @@ using UnityEngine; using System.Collections; // A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo public class IL_HA926_tagGCArenaBattlePlayerInfo : GameNetPackBasic { public uint PlayerID; //目标玩家ID public string PlayerName; public byte Job; public ushort LV; //等级 public ushort RealmLV; //境界,机器人读境界表取等级对应境界 public uint FightPower; //战力求余亿部分,机器人读等级表取等级对应战力 public uint FightPoweEx; //战力整除亿部分,机器人读等级表取等级对应战力 public uint Score; //积分 public IL_HA926_tagGCArenaBattlePlayerInfo () { _cmd = (ushort)0xA926; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out PlayerID, vBytes, NetDataType.DWORD); TransBytes (out PlayerName, vBytes, NetDataType.Chars, 33); TransBytes (out Job, vBytes, NetDataType.BYTE); TransBytes (out LV, vBytes, NetDataType.WORD); TransBytes (out RealmLV, vBytes, NetDataType.WORD); TransBytes (out FightPower, vBytes, NetDataType.DWORD); TransBytes (out FightPoweEx, vBytes, NetDataType.DWORD); TransBytes (out Score, vBytes, NetDataType.DWORD); } } // A9 26 竞技场对战玩家最新信息 #tagGCArenaBattlePlayerInfo public class HA926_tagGCArenaBattlePlayerInfo : GameNetPackBasic { public uint PlayerID; //目标玩家ID public string PlayerName; public byte Job; public ushort LV; //等级 public ushort RealmLV; //境界,机器人读境界表取等级对应境界 public uint Face; //基本脸型 public uint FightPower; //战力求余亿部分,机器人读等级表取等级对应战力 public uint FightPowerEx; //战力整除亿部分,机器人读等级表取等级对应战力 public uint Score; //积分 public HA926_tagGCArenaBattlePlayerInfo () { _cmd = (ushort)0xA926; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out PlayerID, vBytes, NetDataType.DWORD); TransBytes (out PlayerName, vBytes, NetDataType.Chars, 33); TransBytes (out Job, vBytes, NetDataType.BYTE); TransBytes (out LV, vBytes, NetDataType.WORD); TransBytes (out RealmLV, vBytes, NetDataType.WORD); TransBytes (out Face, vBytes, NetDataType.DWORD); TransBytes (out FightPower, vBytes, NetDataType.DWORD); TransBytes (out FightPowerEx, vBytes, NetDataType.DWORD); TransBytes (out Score, vBytes, NetDataType.DWORD); } } Core/NetworkPackage/ServerPack/HA9_Function/HA926_tagGCArenaBattlePlayerInfo.cs.meta
File was renamed from Core/NetworkPackage/ServerPack/HA9_Function/IL_HA926_tagGCArenaBattlePlayerInfo.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 guid: e2a25b3f5a1d00f4c89a8d21e7db08e5 guid: 800b7a2fdb5471a4fbd97c3f6ba75e59 MonoImporter: externalObjects: {} serializedVersion: 2 Core/NetworkPackage/ServerPack/HA9_Function/IL_HA922_tagGCArenaMatchList.cs
File was deleted Core/NetworkPackage/ServerPack/HA9_Function/IL_HA923_tagGCArenaBattleRecordList.cs
File was deleted LogicProject/Protocol/ClientPack/ClientToGameServer/CA9_Function/IL_CA9A2_tagCPYWatchBillboard.cs
File was deleted LogicProject/Protocol/ClientPack/ClientToGameServer/CA9_Function/IL_CA9A2_tagCPYWatchBillboard.cs.meta
File was deleted LogicProject/System/ArenaActivity/ArenaFightingPKCell.cs
@@ -4,7 +4,7 @@ using System; using vnxbqy.UI; namespace Snxxz.Arena namespace vnxbqy.UI { public class ArenaFightingPKCell : ILBehaviour { LogicProject/System/ArenaActivity/ArenaFightingPKWin.cs
@@ -1,564 +1,609 @@ 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]); } } } } 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; CrossServerOneVsOneRewardModel.PkDanLvNow = CrossServerOneVsOnePlayerInfo.Instance.DanLV; 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; OpponentInformation.Instance.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; OpponentInformation.Instance.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 (positionType == 1) { m_RoleInformation2.SetHeroHP(_maxHp, _hp); } else { m_RoleInformation1.SetHeroHP(_maxHp, _hp); } } private void ShieldUpdate(int playerID, int shieldNow) { if (playerID == ArenaModel.Instance.ArenaPKUpInfoData.opponentPlayerId) { if (positionType == 1) { m_RoleInformation2.SetShieldNumber(ArenaModel.Instance.ArenaPKUpInfoData.MaxProDef, shieldNow); } else { m_RoleInformation1.SetShieldNumber(ArenaModel.Instance.ArenaPKUpInfoData.MaxProDef, 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; //if (type == 1)//左 //{ // //-----------自己的信息 // m_RoleInformation1.SetHeroHead(ArenaModel.Instance.ArenaPKUpInfoData.myFace); // 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); // //------------------------------------//对手信息 // int face = ArenaModel.Instance.ArenaPKUpInfoData.opponentFace; // m_RoleInformation2.SetHeroHead(face); // string OpponentName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.opponentName); // realmLv = ArenaModel.Instance.ArenaPKUpInfoData.realmLV; // m_RoleInformation2.SetHeroLvAndNameLV((int)ArenaModel.Instance.ArenaPKUpInfoData.opponentLevel, OpponentName, realmLv); // m_RoleInformation2.SetHeroHP(ArenaManagerModel.playerInfo.maxHp, ArenaManagerModel.playerInfo.maxHp); // m_RoleInformation2.SetShieldNumber(ArenaModel.Instance.ArenaPKUpInfoData.MaxProDef, ArenaModel.Instance.ArenaPKUpInfoData.opponentShield); //} //else//右 //{ // //-----------自己的信息 // m_RoleInformation2.SetHeroHead(ArenaModel.Instance.ArenaPKUpInfoData.myFace); // string PlayerName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.myName); // realmLv = PlayerDatas.Instance.baseData.realmLevel; // m_RoleInformation2.SetHeroLvAndNameLV((int)PlayerDatas.Instance.baseData.LV, PlayerName, realmLv); // m_RoleInformation2.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, PlayerDatas.Instance.baseData.HP); // m_RoleInformation2.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield); // m_RoleInformation2.BuffButton.SetActiveIL(false); // //------------------------------------//对手信息 // int face = ArenaModel.Instance.ArenaPKUpInfoData.opponentFace; // m_RoleInformation1.SetHeroHead(face); // string OpponentName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.opponentName); // realmLv = ArenaModel.Instance.ArenaPKUpInfoData.realmLV; // m_RoleInformation1.SetHeroLvAndNameLV((int)ArenaModel.Instance.ArenaPKUpInfoData.opponentLevel, OpponentName, realmLv); // m_RoleInformation1.SetHeroHP(ArenaManagerModel.playerInfo.maxHp, ArenaManagerModel.playerInfo.maxHp); // m_RoleInformation1.SetShieldNumber(100, 0); //} } private void PlaceOfBirthUpdate(int type)//自身玩家属性刷新 { if (type == 1) { 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); #if UNITY_EDITOR // Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); #endif } else { string PlayerName = UIHelper.ServerStringTrim(ArenaModel.Instance.ArenaPKUpInfoData.myName); m_RoleInformation2.SetHeroLvAndName((int)PlayerDatas.Instance.baseData.LV, PlayerName); m_RoleInformation2.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, PlayerDatas.Instance.baseData.HP); m_RoleInformation2.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield); #if UNITY_EDITOR // Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); #endif } } 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]); } } } } LogicProject/System/ArenaActivity/ArenaManagerModel.cs
@@ -19,11 +19,9 @@ } } /// stage public static readonly Vector3 leftBornPoint = new Vector3(4.9f, 0.2f, 3.5f); static readonly Vector3 rightBornPoint = new Vector3(20f, 0.2f, 18.8f); public static readonly Vector3 leftBornPoint = new Vector3(4f, 0.2f, 11.5f); static readonly Vector3 rightBornPoint = new Vector3(11.5f, 0.2f, 4f); static readonly Vector3 initPoint = new Vector3(30f, 0.2f, 30f); public int[] s_StepTimes = null; @@ -31,8 +29,6 @@ static ILPKStageType pkStageType; public static GA_PlayerClient.PlayerInfo playerInfo; static GA_ILClientPlayer opponentPlayer; static GA_Player mirrorPlayer; public static bool isMirrorFight { get; set; } static uint roundWiner = 0; static ILPKStage currentStage; public DateTime dungeonEndTime; @@ -77,7 +73,6 @@ HeroBehaviour.OnUserClickSkill += OnILUserClickSkill; //显示PK UI ArenaManager.OnILPKWinShow += OnILPKWinShow; } protected override void UnInit() { @@ -131,28 +126,7 @@ recordDataMapId = dataMapId; } //副本结算界面 public void UpdateFBEnd() { if (dungeonModel.dungeonResult.isWin == 1) { roundWiner = PlayerDatas.Instance.baseData.PlayerID; } else { roundWiner = ArenaModel.Instance.OPPONENT_PLAYERID; } //ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, // (byte)(dungeonModel.dungeonResult.isWin == 1 ? 1 : 2)); if (ArenaManager.IsArenaStage()) WindowCenter.Instance.OpenIL<ArenaSettlementWin>(); else PopupWindowsProcessor.Instance.Add("ArenaSettlementWin"); //更新排名 ArenaRankModel.Instance.SetMyRank(ArenaModel.Instance.RankType, dungeonModel.dungeonResult.updOrder); } void OnILPKWinShow(bool bShow) { if (bShow) @@ -172,13 +146,13 @@ } void OnILStopHandupAI() { if (!ArenaManager.IsArenaClientNotMirrorFight) if (!ArenaManager.isArenaClient) return; PlayerDatas.Instance.hero.SkillMgr.ResetAllCD(); } void OnILCastSkill(int SkillID) { if (!ArenaManager.IsArenaClientNotMirrorFight) if (!ArenaManager.isArenaClient) return; Skill _skill = PlayerDatas.Instance.hero.SkillMgr.Get(SkillID); if (!_skill.IsValid()) @@ -308,7 +282,7 @@ } void OnILPlayerUpdateAI() { if (!ArenaManager.IsArenaClientNotMirrorFight) if (!ArenaManager.isArenaClient) return; if (Application.isEditor) { @@ -322,7 +296,8 @@ PlayerDatas.Instance.hero.ActorInfo.Hp = 0; } } CameraController.Instance.rotationX = 45; CameraController.Instance.Apply(); if (!ArenaModel.Instance.bILAI) return; if (dungeonModel.dungeonFightStage != DungeonFightStage.Normal) @@ -632,7 +607,7 @@ } //////////////////////////////////////////////////////////////////Arena Stage控制/////////////////////////////////////////////////////////////// void OnILStageInitialize() { { ArenaModel.Instance.FakeMatchOk(); fightInfo = default(ILFightInfo); fightInfo.isOver = false; @@ -651,6 +626,7 @@ opponentPlayer = null; } ArenaManager.isArenaClient = false; ArenaManager.isArenaPK = false; ArenaManagerModel.Instance.ReleasePlayer(); ClientDungeonStageUtility.SetClientDungeon(false, 0); @@ -663,9 +639,9 @@ { if (!ArenaManager.IsArenaStage()) return; ArenaManager.isArenaPK = true; ArenaManager.isArenaClient = true; ArenaManager.isArenaPK = true; ArenaModel.Instance.IsArenaWork = true; recordDataMapId = ArenaManager.MapID; ArenaModel.Instance.StartInit(); @@ -673,10 +649,7 @@ // B2 10 竞技场挑战玩家 通知后端登记挑战目标ID uint PlayerID = ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID; if (PlayerID > 10000) isMirrorFight = true; ArenaModel.Instance.SendArenaBattle(PlayerID, 0); ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, 0); if (opponentPlayer != null) { @@ -710,70 +683,36 @@ } else { ArenaManager.isArenaRobot = false; //发送命令获得个人详细信息 PersonalEnemy.OnMirrorPlayerAppear += OnPlayerAppear; //RoleParticularModel.OnRevPackage += OnRevA705; //ModelCenter.Instance.GetModel<RoleParticularModel>().ViewPlayerCacheData((int)PlayerID, (int)ViewPlayerType.viewPlayerDataArena); ArenaManager.isArenaRobot = false; //发送命令获得个人详细信息 CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo(); pak.PlayerID = (uint)PlayerID; GameNetSystem.Instance.SendInfo(pak); //DTCA705_tagSCQueryPlayerCacheResult.OnRevPackage += OnRevA705; } } //private void OnRevA705(int viewType, int playerID, RoleParticularModel.ViewPlayerData data) //{ // uint PlayerID = ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID; // if (playerID != PlayerID) // return; // RoleParticularModel.OnRevPackage -= OnRevA705; // playerInfo = GetRealPlayerInfo(data.rolePropData); // playerInfo.playerID = PlayerID; // //PersonalEnemy.Create(30000, rightBornPoint, playerInfo,false); // PersonalEnemy.OnILPlayerAppear += OnPlayerAppear; // SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); // ArenaModel.Instance.CallUpdatePKInfo(1); //} private void OnRevA705(HA705_tagSCQueryPlayerCacheResult package) { uint PlayerID = ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID; if (package.PlayerID != PlayerID) return; //DTCA705_tagSCQueryPlayerCacheResult.OnRevPackage -= OnRevA705; RoleParticularModel.RolePropData propData = LitJson.JsonMapper.ToObject<RoleParticularModel.RolePropData>(package.PropData); playerInfo = GetRealPlayerInfo(propData); playerInfo.playerID = PlayerID; PersonalEnemy.Create(30000, rightBornPoint, playerInfo,false); PersonalEnemy.OnILPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); } private void OnPlayerAppear(GA_ILClientPlayer player) { PersonalEnemy.OnILPlayerAppear -= OnPlayerAppear; opponentPlayer = player; opponentPlayer.Pos = rightBornPoint; isMirrorFight = false; opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; dungeonModel.dungeonFightStage = DungeonFightStage.Normal; } private void OnPlayerAppear(GA_Player player) { if (pkStageType != ILPKStageType.Fight) { currentStage = new ILWaitStartStage(); currentStage.Begin(); } playerInfo = new GA_PlayerClient.PlayerInfo() { maxHp = player.ActorInfo.MaxHp, hp = player.ActorInfo.Hp, level = (ushort)player.ActorInfo.LV, job = (byte)player.ActorInfo.Job, face = AvatarHelper.GetAvatarDefaultID(player.ActorInfo.Job), facePic = AvatarHelper.GetAvatarFrameDefaultID(player.ActorInfo.Job), pos = Vector3.zero, name = player.ActorInfo.PlayerName, }; playerInfo.playerID = player.ActorInfo.sid; ArenaModel.Instance.ArenaPKUpInfoData.MaxProDef = (int)player.ActorInfo.maxProDef; ArenaModel.Instance.ArenaPKUpInfoData.opponentMaxHp = playerInfo.maxHp; ArenaModel.Instance.ArenaPKUpInfoData.opponentShield = (int)player.ActorInfo.curProDef; ArenaModel.Instance.ArenaPKUpInfoData.opponentLevel = player.ActorInfo.LV; ArenaModel.Instance.ArenaPKUpInfoData.realmLV = (int)player.ActorInfo.realm; PersonalEnemy.OnMirrorPlayerAppear -= OnPlayerAppear; mirrorPlayer = player; ArenaModel.Instance.CallUpdatePKInfo(1); dungeonModel.dungeonFightStage = DungeonFightStage.Normal; } public void ReleasePlayer() { if (opponentPlayer != null && !opponentPlayer.ActorInfo.serverDie) @@ -856,8 +795,6 @@ hp = maxHp, level = (ushort)level, job = (byte)job, face = AvatarHelper.GetAvatarDefaultID(job), facePic = AvatarHelper.GetAvatarFrameDefaultID(job), pos = Vector3.zero, name = playerName, itemDatas = equipInfos, @@ -894,8 +831,6 @@ hp = (ulong)propData.MaxHP, level = (ushort)propData.LV, job = (byte)propData.Job, face = (int)propData.Face, facePic = (int)propData.FacePic, pos = Vector3.zero, name = propData.Name, itemDatas = equipInfos, @@ -955,7 +890,7 @@ if (pkStageType != ILPKStageType.Fight) { opponentPlayer.Pos = rightBornPoint; opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; currentStage = new ILWaitStartStage(); currentStage.Begin(); } @@ -974,7 +909,17 @@ currentStage = new ILFightStage(); break; case ILPKStageType.Fight: currentStage = new ILFightOverStage(); if (fightInfo.isOver) { currentStage = new ILFightOverStage(); } else { currentStage = new ILRoundPrepareState(); } break; case ILPKStageType.RoundPrepare: //currentStage = new ILFightStage(); break; case ILPKStageType.FightOver: currentStage = null; @@ -1007,14 +952,10 @@ public override void Begin() { pkStageType = ILPKStageType.WaitStart; duration = ArenaManagerModel.Instance.s_StepTimes[1]; if (opponentPlayer != null) { opponentPlayer.ActorInfo.serverDie = false; opponentPlayer.IdleImmediate(); opponentPlayer.Pos = rightBornPoint; } duration = ArenaManagerModel.Instance.s_StepTimes[1]; opponentPlayer.ActorInfo.serverDie = false; opponentPlayer.IdleImmediate(); PlayerDatas.Instance.baseData.HP = PlayerDatas.Instance.extersion.MaxHP; var maxHp = PlayerDatas.Instance.extersion.MaxHP; @@ -1024,8 +965,8 @@ PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true); PlayerDatas.Instance.hero.StopPathFind(); PlayerDatas.Instance.hero.Pos = leftBornPoint; opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; PlayerDatas.Instance.hero.Pos = ArenaModel.Instance.myPlace == 1 ? leftBornPoint : rightBornPoint; ArenaModel.Instance.FakeWaitFight((int)duration); ArenaModel.Instance.CallUpdatePKInfo(1); @@ -1040,10 +981,7 @@ public override void Update() { timer += Time.deltaTime; if (isMirrorFight) completed = timer >= duration; else completed = timer >= duration && opponentPlayer != null; completed = timer >= duration && opponentPlayer != null; } } public class ILFightOverStage : ILPKStage @@ -1052,14 +990,12 @@ { if (ArenaModel.Instance.WinnerID != PlayerDatas.Instance.baseData.PlayerID) { if (!isMirrorFight) ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, 2); ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, 2); LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, ""); } else { if (!isMirrorFight) ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, 1); ArenaModel.Instance.SendArenaBattle(ArenaModel.Instance.m_PlayerInfo[ArenaModel.Instance.SelectMatchPlayer].PlayerID, 1); string MatchInfoPlayerFightNow = LocalSave.GetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId); if(MatchInfoPlayerFightNow != "") { @@ -1095,9 +1031,10 @@ public class ILFightStage : ILPKStage { bool figthCompleted = false; float restTime = 0.5f; float restTime = 2f; float restTimeTimer = 0f; public override void Begin() { pkStageType = ILPKStageType.Fight; @@ -1106,19 +1043,11 @@ figthCompleted = false; restTimeTimer = 0f; if (isMirrorFight) { if (mirrorPlayer != null) PlayerDatas.Instance.hero.SelectTarget = mirrorPlayer; } else { opponentPlayer.Pos = rightBornPoint; opponentPlayer.SelectTarget = PlayerDatas.Instance.hero; PlayerDatas.Instance.hero.SelectTarget = opponentPlayer; } ArenaModel.Instance.bILAI = true; opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; PlayerDatas.Instance.hero.Behaviour.StartHandupAI(); ArenaModel.Instance.bILAI = true; opponentPlayer.SelectTarget = PlayerDatas.Instance.hero; PlayerDatas.Instance.hero.SelectTarget = opponentPlayer; } public override void End() @@ -1132,11 +1061,8 @@ if (fightInfo.isOver) { if (opponentPlayer != null) { PersonalEnemy.ReleaseILPlayer(opponentPlayer,false); opponentPlayer.Destroy(); } PersonalEnemy.ReleaseILPlayer(opponentPlayer,false); opponentPlayer.Destroy(); } ArenaModel.Instance.FakeRoundEnd(fightInfo.isOver, fightInfo.roundCount, fightInfo.roundWinnerIds.ToArray()); @@ -1148,32 +1074,24 @@ return; if (PlayerDatas.Instance.hero == null) return; timer += Time.deltaTime; if (isMirrorFight) if (PlayerDatas.Instance.hero.ActorInfo.Hp <= 0) { if (roundWiner != 0) { figthCompleted = true; ArenaModel.Instance.WinnerID = roundWiner; } figthCompleted = true; PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true); PlayerDatas.Instance.hero.StopPathFind(); ArenaModel.Instance.bILAI = false; roundWiner = ArenaModel.Instance.OPPONENT_PLAYERID; ArenaModel.Instance.WinnerID = ArenaModel.Instance.OPPONENT_PLAYERID; } else { if (PlayerDatas.Instance.hero.ActorInfo.Hp <= 0) { figthCompleted = true; roundWiner = ArenaModel.Instance.OPPONENT_PLAYERID; ArenaModel.Instance.WinnerID = ArenaModel.Instance.OPPONENT_PLAYERID; } if (opponentPlayer.ActorInfo.Hp <= 0) { figthCompleted = true; roundWiner = PlayerDatas.Instance.baseData.PlayerID; ArenaModel.Instance.WinnerID = PlayerDatas.Instance.baseData.PlayerID; } if (opponentPlayer.ActorInfo.Hp <= 0) { figthCompleted = true; PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true); PlayerDatas.Instance.hero.StopPathFind(); ArenaModel.Instance.bILAI = false; roundWiner = PlayerDatas.Instance.baseData.PlayerID; ArenaModel.Instance.WinnerID = PlayerDatas.Instance.baseData.PlayerID; } if (!figthCompleted) { @@ -1183,12 +1101,18 @@ if (roundWiner != 0) { figthCompleted = true; PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true); PlayerDatas.Instance.hero.StopPathFind(); ArenaModel.Instance.bILAI = false; } else if (EndTime <= 0) //else if (timer >= duration) { figthCompleted = true; if (!isMirrorFight && opponentPlayer.ActorInfo.RealHp <= 0) PlayerDatas.Instance.hero.Behaviour.StopHandupAI(true); PlayerDatas.Instance.hero.StopPathFind(); ArenaModel.Instance.bILAI = false; if (opponentPlayer.ActorInfo.RealHp <= 0) { roundWiner = PlayerDatas.Instance.baseData.PlayerID; } @@ -1206,21 +1130,100 @@ if (figthCompleted) { PlayerDatas.Instance.hero.StopAll(); ArenaModel.Instance.bILAI = false; restTimeTimer += Time.deltaTime; completed = restTimeTimer >= restTime; completed = restTimeTimer >= restTime; } } } public class ILRoundPrepareState : ILPKStage { public override void Begin() { pkStageType = ILPKStageType.RoundPrepare; GA_PVPClientPlayer.AutoAI(false); duration = 3f; Debug.LogFormat("进入阶段:{0}", pkStageType); if (fightInfo.roundWinnerIds[fightInfo.roundWinnerIds.Count - 1] == PlayerDatas.Instance.baseData.PlayerID) { if (!opponentPlayer.ActorInfo.serverDie) { PersonalEnemy.ReleaseILPlayer(opponentPlayer, false); opponentPlayer = null; } playerInfo.hp = playerInfo.maxHp; PersonalEnemy.Create(30000, ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo,false); PersonalEnemy.OnILPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); if (PlayerDatas.Instance.hero.ActorInfo.RealHp <= 0) { PlayerDatas.Instance.baseData.HP = 1; PlayerDatas.Instance.hero.ActorInfo.ResetHp(1, (long)PlayerDatas.Instance.extersion.MaxHP); PlayerDatas.Instance.FightRefreshPlayerHp(1); PlayerDatas.Instance.hero.IdleImmediate(); } } else { PlayerDatas.Instance.baseData.HP = PlayerDatas.Instance.extersion.MaxHP; var maxHp = PlayerDatas.Instance.extersion.MaxHP; PlayerDatas.Instance.hero.ActorInfo.ResetHp((long)maxHp, (long)maxHp); PlayerDatas.Instance.FightRefreshPlayerHp(maxHp); PlayerDatas.Instance.hero.IdleImmediate(); if (opponentPlayer.ActorInfo.RealHp <= 0) { opponentPlayer = null; playerInfo.hp = 1; PersonalEnemy.Create(30000, rightBornPoint, playerInfo,false); PersonalEnemy.OnILPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); } } PlayerDatas.Instance.hero.Pos = ArenaModel.Instance.myPlace == 1 ? leftBornPoint : rightBornPoint; } private void OnPlayerAppear(GA_ILClientPlayer player) { PersonalEnemy.OnILPlayerAppear -= OnPlayerAppear; opponentPlayer = player; opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; } private IEnumerator WaitForPlayerCreate() { while (opponentPlayer == null) { yield return null; } opponentPlayer.Pos = ArenaModel.Instance.myPlace == 1 ? rightBornPoint : leftBornPoint; opponentPlayer.ActorInfo.ResetHp((long)playerInfo.maxHp, (long)playerInfo.maxHp); } public override void End() { fightInfo.roundCount++; ArenaModel.Instance.FakeRoundBegin(fightInfo.roundCount, fightInfo.roundWinnerIds.ToArray()); } public override void Update() { timer += Time.deltaTime; completed = timer >= duration && opponentPlayer != null; } } public enum ILPKStageType { WaitStart, Fight, RoundPrepare, FightOver, } LogicProject/System/ArenaActivity/ArenaModel.cs
@@ -2,11 +2,11 @@ using System; using System.Collections.Generic; using UnityEngine; using System.Text.RegularExpressions; using LitJson; using System.Text; //Arena主控制代码 using System.Linq; //Arena主控制代码 public class ArenaModel : ILModel<ArenaModel> { public bool bFirstStageLoadCheck = false; @@ -15,27 +15,27 @@ public int RankType = 28; public int SelectRewardType = 1; //更新匹配用户信息 public event Action<IL_HA922_tagGCArenaMatchList> UpdateMatchUserEvent; public event Action<IL_HA926_tagGCArenaBattlePlayerInfo> UpdateBattlePlayerEvent; public event Action<HA922_tagGCArenaMatchList> UpdateMatchUserEvent; public event Action<HA926_tagGCArenaBattlePlayerInfo> UpdateBattlePlayerEvent; //更新匹配用户信息 public event Action UpdateBattleRecordListEvent; public event Action<int> UpdatePKInfoListEvent; public Redpoint redpoint = new Redpoint(78129001); //查询列表 public List<IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord> ArenaBattleRecordList = new List<IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord>(); public List<HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord> ArenaBattleRecordList = new List<HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord>(); //个人信息 public ArenaPlayerInfo playerInfo; public uint WinnerID; // 胜方ID(本次战斗结束) public bool bCheckRedPoint = false; public int freeMaxMatchNum { get; private set; } //每次挑战免费次数 public int freeMaxMatchNum { get; private set; } //挑战最大次数,配置 + 月卡等增加的次数 public int buyMaxMatchNum { get; private set; } //每日可购买次数 public int ScoreMin { get; private set; } //最低积分 public int ScoreMax { get; private set; } //最高积分 public int RecordMax { get; private set; } //对战记录条数(不超过50) public int freeRefreshPlayerMax { get; private set; } //每次挑战免费刷新次数,0为不限 public int SelectMatchPlayer { get; set; } //当前选择的用户 public List<IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo> m_PlayerInfo = new List<IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo>(); public List<HA922_tagGCArenaMatchList.tagGCArenaMatchInfo> m_PlayerInfo = new List<HA922_tagGCArenaMatchList.tagGCArenaMatchInfo>(); //场景配置 public uint OPPONENT_PLAYERID = 999999; public FightResultSupplement resultSupplement; @@ -43,77 +43,65 @@ public string opponentName { get; private set; } public uint roundWiner = 0; //获胜者 id public int currentRecordIndex = 0; public ArenaPKUpInfo ArenaPKUpInfoData; public ArenaPKUpInfo ArenaPKUpInfoData { get; set; } public bool bILAI; public bool bFirstShow = true; public bool IsArenaWork = true; DungeonModel m_DungeonModel; public IL_HA922_tagGCArenaMatchList pkList; public HA922_tagGCArenaMatchList pkList; bool IsSendCloseArena = false; public int skipFightLV = 200; //跳过战斗等级 public bool isSkipFightChoose { get { return LocalSave.GetBool("ArenaSkipChallenge" + PlayerDatas.Instance.baseData.PlayerID); } set { LocalSave.SetBool("ArenaSkipChallenge" + PlayerDatas.Instance.baseData.PlayerID, value); } } Dictionary<int, int> lvToNpcDic = new Dictionary<int, int>(); DungeonModel dungeonModel { get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); } } ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } } protected override void Init() { try { DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; playerInfo = new ArenaPlayerInfo(); RobotName = Language.Get("ArenaRobotName"); RankType = 28; SelectRewardType = 1; ////// ScoreMin = GeneralDefine.ArenaSetList[0]; ScoreMax = GeneralDefine.ArenaSetList[1]; playerInfo = new ArenaPlayerInfo(); RobotName = Language.Get("ArenaRobotName"); RankType = 28; SelectRewardType = 1; ////// ScoreMin = GeneralDefine.ArenaSetList[0]; ScoreMax = GeneralDefine.ArenaSetList[1]; var fun = FuncConfigConfig.Get("ArenaSet"); freeMaxMatchNum = int.Parse(fun.Numerical3); RecordMax = int.Parse(fun.Numerical4); freeRefreshPlayerMax = int.Parse(fun.Numerical5); ArenaManager.ParseAwardFuncConfig(); ArenaManager.ParseItemJobSkill(); var fun = FuncConfigConfig.Get("ArenaSet"); freeMaxMatchNum = int.Parse(fun.Numerical3); //初始最大次数,月卡等会改变 RecordMax = int.Parse(fun.Numerical4); freeRefreshPlayerMax = int.Parse(fun.Numerical5); ArenaManager.ParseAwardFuncConfig(); ArenaManager.ParseItemJobSkill(); //r0,代表机器人参数,r1,真人 ,初始化 List<int> r0 = new List<int>(); List<int> r1 = new List<int>(); for (int i = 0; i < 5; i++) r0.Add(i); for (int i = 0; i < 33; i++) r1.Add(i); ArenaManager.playInfo.Add(0, r0); ArenaManager.playInfo.Add(1, r1); //r0,代表机器人参数,r1,真人 ,初始化 List<int> r0 = new List<int>(); List<int> r1 = new List<int>(); for (int i = 0; i < 5; i++) r0.Add(i); for (int i = 0; i < 33; i++) r1.Add(i); ArenaManager.playInfo.Add(0, r0); ArenaManager.playInfo.Add(1, r1); //获取副本 游戏时间,准备时间,退出时间 dungeonModel.currentDungeon = new Dungeon(ArenaManager.MapID, 0); var dungeonId = dungeonModel.GetDungeonId(dungeonModel.currentDungeon); var dungeonConfig = DungeonConfig.Get(dungeonId); ArenaManagerModel.Instance.s_StepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime); //获取副本 游戏时间,准备时间,退出时间 dungeonModel.currentDungeon = new Dungeon(ArenaManager.MapID, 0); var dungeonId = dungeonModel.GetDungeonId(dungeonModel.currentDungeon); var dungeonConfig = DungeonConfig.Get(dungeonId); ArenaManagerModel.Instance.s_StepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime); fun = FuncConfigConfig.Get("ArenaSet1"); skipFightLV = int.Parse(fun.Numerical1); } catch (System.Exception ex) //获取机器人等级对应的数据 var config = FuncConfigConfig.Get("ArenaRobotLVNPC"); JsonData json = JsonMapper.ToObject(config.Numerical1); //{"50":80100000, "100":80100010, "9999":80100020} var keys = json.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { OperationLogCollect.Instance.BugReportSys(ex.ToString()); Debug.LogError(ex); var key = keys[i]; lvToNpcDic[int.Parse(key)] = int.Parse(json[key].ToString()); } } @@ -188,7 +176,7 @@ public void CallUpdatePKInfo(int type) { if(UpdatePKInfoListEvent != null) UpdatePKInfoListEvent(1); UpdatePKInfoListEvent(1); } public void FirstData() { @@ -241,12 +229,12 @@ #endregion #region //接收命令 public void ReceiveBattLePlayer(IL_HA926_tagGCArenaBattlePlayerInfo vNetData) public void ReceiveBattLePlayer(HA926_tagGCArenaBattlePlayerInfo vNetData) { UpdateBattlePlayerEvent?.Invoke(vNetData); } //竞技场匹配玩家列表 public void ReceiveMatchData(IL_HA922_tagGCArenaMatchList vNetData) public void ReceiveMatchData(HA922_tagGCArenaMatchList vNetData) { pkList = vNetData; if (UpdateMatchUserEvent != null) @@ -256,7 +244,7 @@ } // 竞技场对战记录列表 public void ReceiveBattleRecordList(IL_HA923_tagGCArenaBattleRecordList vNetData) public void ReceiveBattleRecordList(HA923_tagGCArenaBattleRecordList vNetData) { string nameStr = ""; string inputString = LocalSave.GetString("MatchInfoPlayerIDALL"+PlayerDatas.Instance.PlayerId); @@ -286,8 +274,8 @@ else { nameStr = vNetData.BattleRecordList[i].PlayerName; SysNotifyMgr.Instance.ShowTip("ArenaFightPlayer", nameStr.Trim().Replace("\0", "")); } //SysNotifyMgr.Instance.ShowTip("ArenaFightPlayer", nameStr.Trim().Replace("\0", "")); bCheckRedPoint = true; UpdateRedPoint(); @@ -328,6 +316,8 @@ public void FakeMatchOk() { PlayerDatas.Instance.hero.Pos = ArenaManagerModel.leftBornPoint; CameraController.Instance.rotationX = 45; CameraController.Instance.Apply(); PlayerDatas.Instance.hero.EulerAngles = 90; //强杀,再进入 if (m_PlayerInfo.Count <= 0 || ArenaModel.Instance.SelectMatchPlayer == 5) @@ -335,7 +325,7 @@ SelectMatchPlayer = LocalSave.GetInt("MatchInfoSelect"); for (int i = 0; i < 6; i++) //第6个放从挑战记录里的数据 { IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo playerInfo = new IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo(); HA922_tagGCArenaMatchList.tagGCArenaMatchInfo playerInfo = new HA922_tagGCArenaMatchList.tagGCArenaMatchInfo(); playerInfo.PlayerID = (uint)LocalSave.GetInt("MatchInfoPlayerID"); playerInfo.PlayerName = LocalSave.GetString("MatchInfoPlayerName"); playerInfo.Job = (byte)LocalSave.GetInt("MatchInfoJob"); @@ -369,18 +359,16 @@ autoEnsureTime = Time.time + 3f, myName = PlayerDatas.Instance.baseData.PlayerName, myJob = PlayerDatas.Instance.baseData.Job, myFace = AvatarHelper.GetMyAvatarID(), myFacePic = AvatarHelper.GetMyAvatarID(), myFace = PlayerDatas.Instance.baseData.face, myBornPoint = myPlace, opponentName = opponentName, opponentJob = m_PlayerInfo[SelectMatchPlayer].Job, opponentFace = (int)m_PlayerInfo[SelectMatchPlayer].Face, opponentFacePic = (int)m_PlayerInfo[SelectMatchPlayer].FacePic, opponentMaxHp = (ulong)GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 1), opponentLevel = (int)m_PlayerInfo[SelectMatchPlayer].LV, opponentPlayerId = (int)m_PlayerInfo[SelectMatchPlayer].PlayerID, opponentShield = GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 3), MaxProDef = GetLevel((int)m_PlayerInfo[SelectMatchPlayer].LV, 3), opponentFace = (int)m_PlayerInfo[SelectMatchPlayer].Face, MaxProDef = 100, realmLV = realm, }; ArenaManager.myName = PlayerDatas.Instance.baseData.PlayerName; @@ -392,7 +380,6 @@ { ArenaModel.Instance.IsArenaWork = false; ArenaManager.isArenaClient = true; ArenaManagerModel.isMirrorFight = false; DebugEx.Log("ArenaManager.isArenaClient"); //开始自定义场景 var sendInfo = new CA231_tagCMClientStartCustomScene(); @@ -467,15 +454,9 @@ IsArenaWork = false; ArenaManager.isArenaClient = false; ArenaManager.isArenaPK = false; PlayerDatas.Instance.extersion.pkState = 0; if (ArenaManagerModel.isMirrorFight) { dungeonModel.ExitCurrentDungeon(); return; } ArenaManagerModel.Instance.ReleasePlayer(); ClientDungeonStageUtility.SetClientDungeon(false, 0); PlayerDatas.Instance.extersion.pkState = 0; ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData(); PersonalEnemy.ReleaseAll(); PlayerDatas.Instance.baseData.MapID = PlayerDatas.Instance.baseData.mainServerMapIdRecord; @@ -546,97 +527,57 @@ public void BeginRecordBattle() { IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[ArenaModel.Instance.currentRecordIndex]; if (ArenaModel.Instance.playerInfo.GetDayMatchCount() > 0) { if (isSkipFightChoose) { HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[ArenaModel.Instance.currentRecordIndex]; //int tmp = 5; //ArenaModel.Instance.SelectMatchPlayer = tmp; //当前选择的用户 //HA922_tagGCArenaMatchList.tagGCArenaMatchInfo tmper = new HA922_tagGCArenaMatchList.tagGCArenaMatchInfo(); //tmper.PlayerID = record.PlayerID; //if (record.PlayerID < 10000) //{ // tmper.PlayerName = ArenaModel.Instance.RobotName; //} //else //{ // tmper.PlayerName = record.PlayerName; //} //tmper.Job = record.Job; //tmper.LV = record.LV; //tmper.RealmLV = record.RealmLV; //tmper.FightPower = record.FightPower; //tmper.Score = record.Score; ////保证强杀,重新进入场景,有数据 //ArenaModel.Instance.m_PlayerInfo[tmp] = tmper; //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, record.Time.ToString()); //ArenaModel.Instance.StartClientArena(); //WindowCenter.Instance.CloseIL<ArenaRecordWin>(); int playerID = (int)record.PlayerID; if (playerID < 10000) { var tmpPlayer = record; uint PlayerID = tmpPlayer.PlayerID; //ArenaManager.isArenaClient = true; SendArenaBattle(PlayerID, 0); LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, record.Time.ToString()); if (PlayerID > 10000) { mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, PlayerID, 3); } else { Clock.AlarmAfter(0.2, () => { ulong fightpower = 0; if (record.PlayerID < 10000) { fightpower = (uint)GetLevel(record.LV, 2); //fight } else { fightpower = record.FightPowerEx * Constants.ExpPointValue + record.FightPower; } SendArenaBattle(PlayerID, (byte)(PlayerDatas.Instance.baseData.FightPoint >= fightpower ? 1 : 2)); if (PlayerDatas.Instance.baseData.FightPoint >= fightpower) { string MatchInfoPlayerFightNow = LocalSave.GetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId); if (MatchInfoPlayerFightNow != "") { string inputString = LocalSave.GetString("MatchInfoPlayerFight" + PlayerDatas.Instance.PlayerId); inputString = StringUtility.Contact(inputString, "|", MatchInfoPlayerFightNow); LocalSave.SetString("MatchInfoPlayerFight" + PlayerDatas.Instance.PlayerId, inputString); } } LocalSave.SetString("MatchInfoPlayerFightNow" + PlayerDatas.Instance.PlayerId, ""); }); } return; } int tmp = 5; ArenaModel.Instance.SelectMatchPlayer = tmp; //当前选择的用户 IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo tmper = new IL_HA922_tagGCArenaMatchList.tagGCArenaMatchInfo(); tmper.PlayerID = record.PlayerID; if (record.PlayerID < 10000) { tmper.PlayerName = ArenaModel.Instance.RobotName; } else { tmper.PlayerName = record.PlayerName; } tmper.Job = record.Job; tmper.LV = record.LV; tmper.RealmLV = record.RealmLV; tmper.FightPower = record.FightPower; tmper.Score = record.Score; //保证强杀,重新进入场景,有数据 ArenaModel.Instance.m_PlayerInfo[tmp] = tmper; 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, record.Time.ToString()); if (tmper.PlayerID > 10000) { mirrorFightModel.SendMirrorFight(ArenaManager.MapID, 0, tmper.PlayerID, 0); int npcID = GetLVToNPCID(record.LV); TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 0, npcID, new uint[1] { (uint)playerID }); } else { ArenaModel.Instance.StartClientArena(); } WindowCenter.Instance.CloseIL<ArenaRecordWin>(); TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 1, playerID, new uint[1] { (uint)playerID }); } } else { @@ -644,6 +585,23 @@ } } //根据等级区段对用npcid public int GetLVToNPCID(int lv) { int npcID = 0; var keys = lvToNpcDic.Keys.ToList(); keys.Sort(); for (int i = 0; i < keys.Count; i++) { if (lv <= keys[i]) { npcID = lvToNpcDic[keys[i]]; break; } } return npcID; } public struct FightResultSupplement { LogicProject/System/ArenaActivity/ArenaRankCell.cs
@@ -130,13 +130,13 @@ int fightpower = ArenaModel.Instance.GetLevel(level, 2); //fight if(data.id < 10000) { rankWhat.text = UIHelper.ReplaceLargeNum(fightpower); rankWhat.text = fightpower.ToString(); } else { //rankWhat.text = data.cmpValue2.ToString(); ulong fight = data.cmpValue2; fight = fight * Constants.ExpPointValue + data.cmpValue3; fight = fight * 100000000 + data.cmpValue3; rankWhat.text = fight.ToString(); } LogicProject/System/ArenaActivity/ArenaRecordCell.cs
@@ -7,7 +7,7 @@ //竞技场记录列表 public class ArenaRecordCell : ILBehaviour { AvatarCell ImageHead; Image ImageHead; Text TextPlayerName; Text TextPlayerTime; Text TextPlayerFight; @@ -18,7 +18,7 @@ protected override void Awake() { ImageHead = proxy.GetWidgtEx<AvatarCell>("ImageHead"); ImageHead = proxy.GetWidgtEx<Image>("ImageHead"); TextPlayerName = proxy.GetWidgtEx<Text>("TextPlayerName"); TextPlayerTime = proxy.GetWidgtEx<Text>("TextPlayerTime"); TextPlayerScore = proxy.GetWidgtEx<Text>("TextPlayerScore"); @@ -33,8 +33,8 @@ string inputString = LocalSave.GetString("MatchInfoPlayerFight"+PlayerDatas.Instance.PlayerId); var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); IL_HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[index]; ImageHead.InitUI(AvatarHelper.GetAvatarModel((int)record.PlayerID, (int)record.Face, (int)record.FacePic, record.Job)); HA923_tagGCArenaBattleRecordList.tagGCArenaBattleRecord record = ArenaModel.Instance.ArenaBattleRecordList[index]; ImageHead.SetSprite(UIHelper.GetHeadIcon((int)record.Face)); ulong fightpower = 0; if(record.PlayerID < 10000) { @@ -46,7 +46,7 @@ TextPlayerName.text = record.PlayerName; fightpower = record.FightPowerEx; fightpower = fightpower * Constants.ExpPointValue; fightpower = fightpower * 100000000; fightpower = fightpower + record.FightPower; } TextPlayerScoreAll.text = StringUtility.Contact(Language.Get("Arena_Score"), ":", record.Score.ToString()); @@ -83,7 +83,7 @@ } if (bYFC) { ImageYFC.SetActiveIL(false); ImageYFC.SetActiveIL(true); } else { LogicProject/System/ArenaActivity/ArenaRecordWin.cs
@@ -33,10 +33,10 @@ { WindowCenter.Instance.CloseIL<ArenaRecordWin>(); }); Btn_Add.SetListener(() => { WindowCenter.Instance.OpenIL<ArenaAddTimesWin>(); }); //Btn_Add.SetListener(() => //{ // //WindowCenter.Instance.OpenIL<ArenaAddTimesWin>(); //}); m_ScrollControl.OnRefreshCell += OnRefreshCell; @@ -93,10 +93,10 @@ Record.Display(cell.index); } void DisplayShowPop(IL_HA926_tagGCArenaBattlePlayerInfo vNetData) void DisplayShowPop(HA926_tagGCArenaBattlePlayerInfo vNetData) { ulong fight = vNetData.FightPoweEx; fight = fight * Constants.ExpPointValue; ulong fight = vNetData.FightPowerEx; fight = fight * 100000000; fight = fight + vNetData.FightPower; string fightStr = UIHelper.ReplaceLargeNum(fight); string Info = Language.Get("ArenaBattlePlayerInfo", fightStr, vNetData.Score); LogicProject/System/ArenaActivity/ArenaRewardCell.cs
@@ -28,46 +28,16 @@ } else { if (ArenaModel.Instance.SelectRewardType == 1) { if (index == ArenaManager.dayAwardTypelist.Count - 1) { rankNumText.text = Language.Get("DemonJar13"); } else { int first = ArenaManager.dayAwardTypelist[index - 1].num + 1; int last = ArenaManager.dayAwardTypelist[index].num; if (first == last) { rankNumText.text = first.ToString(); } else { rankNumText.text = first.ToString() + "-" + last.ToString(); } } } else if(index == ArenaManager.dayAwardTypelist.Count - 1) { if (index == ArenaManager.seasonAwardTypelist.Count - 1) { rankNumText.text = Language.Get("DemonJar13"); } else { int first = ArenaManager.seasonAwardTypelist[index - 1].num + 1; int last = ArenaManager.seasonAwardTypelist[index].num; if (first == last) { rankNumText.text = first.ToString(); } else { rankNumText.text = first.ToString() + "-" + last.ToString(); } } rankNumText.text = Language.Get("DemonJar13"); } else { int first = ArenaManager.dayAwardTypelist[index - 1].num + 1; int last = ArenaManager.dayAwardTypelist[index].num; rankNumText.text = first.ToString() + "-" + last.ToString(); } } int m_ItemID = 0; LogicProject/System/ArenaActivity/ArenaRewardWin.cs
@@ -14,8 +14,8 @@ Image ImageBtnLeft; Image ImageBtnRight; Text m_Tips; ScrollerController m_RankListController; Text rank; ScrollerController m_RankListController; #region Built-in protected override void BindController() { @@ -25,7 +25,6 @@ ImageBtnLeft = Btn_Left.GetComponent<Image>(); ImageBtnRight = Btn_Right.GetComponent<Image>(); m_Tips = proxy.GetWidgtEx<Text>("TipsTxt"); rank = proxy.GetWidgtEx<Text>("rank"); m_RankListController = proxy.GetWidgtEx<ScrollerController>("Scroll View"); } @@ -92,21 +91,8 @@ m_RankListController.Restart(); } } UpdateUserRank(); } void UpdateUserRank() { int rankNum = ArenaRankModel.Instance.GetMyRank(ArenaModel.Instance.RankType); if (rankNum <= 0) { rank.text = Language.Get("L1045"); } else { rank.text = Language.Get("L1092", rankNum); } } } private void OnRefreshCell(ScrollerDataType type, CellView cell) { LogicProject/System/ArenaActivity/ArenaSettlementWin.cs
@@ -27,7 +27,7 @@ protected DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } protected float timer = 0f; protected float LimitTimer = 3f; protected float LimitTimer = 5f; protected List<int> m_RewardIndexs = new List<int>(); private List<ServerItem> m_RewardSorts = new List<ServerItem>(); #region Built-in @@ -59,8 +59,8 @@ m_Container1.transform.Find("Txt_PassTimeStatic").GetComponent<Text>().text = StringUtility.Contact(Language.Get("ArenaSetMentle_Time"), ":"); m_Container2.transform.Find("Txt_ScoreStatic").GetComponent<Text>().text = StringUtility.Contact(Language.Get("ArenaSetMentle_Score"),":"); m_Container3.transform.Find("Txt_NumberStatic").GetComponent<Text>().text = StringUtility.Contact(Language.Get("ArenaSetMentle_Blackboard"), ":"); //if (ArenaManagerModel.Instance.s_StepTimes != null) // LimitTimer = ArenaManagerModel.Instance.s_StepTimes[2] + 1; if(ArenaManagerModel.Instance.s_StepTimes != null) LimitTimer = ArenaManagerModel.Instance.s_StepTimes[2] + 1; } protected override void AddListeners() @@ -73,7 +73,6 @@ protected override void OnPreOpen() { timer = 0f; if (dungeonModel.dungeonResult.isPass == 0) { @@ -88,28 +87,24 @@ } protected override void OnAfterOpen() { { timer = 0; Display(); bShow = true; } protected override void OnPreClose() { bShow = false; if (WindowCenter.Instance.IsOpen("ArenaWin")) { ArenaRankModel.Instance.SendArenaWatchBillboard(0, 1, 1); } } protected override void OnAfterClose() { ArenaManager.isArenaClient = false; } protected override void OnActived() { base.OnActived(); timer = 0; Display(); bShow = true; } protected override void LateUpdate() { @@ -129,44 +124,19 @@ else { now = 0; if (ArenaModel.Instance.isSkipFightChoose) { WindowCenter.Instance.CloseIL<ArenaSettlementWin>(); WindowCenter.Instance.Open("ArenaWin"); } else { WindowCenter.Instance.CloseIL<ArenaSettlementWin>(); if (!ArenaManager.IsArenaStage()) WindowCenter.Instance.Open<MainInterfaceWin>(); else ArenaModel.Instance.StopClientArena(); } PlayerDatas.Instance.hero.StopAll(); //ArenaModel.Instance.StopClientArena(); CloseWin<ArenaSettlementWin>(); } } #endregion void ExitDungeon() { if (ArenaModel.Instance.isSkipFightChoose) { WindowCenter.Instance.CloseIL<ArenaSettlementWin>(); WindowCenter.Instance.Open("ArenaWin"); } else { WindowCenter.Instance.CloseIL<ArenaSettlementWin>(); if (!ArenaManager.IsArenaStage()) WindowCenter.Instance.Open<MainInterfaceWin>(); else ArenaModel.Instance.StopClientArena(); } PlayerDatas.Instance.hero.StopAll(); { //ArenaModel.Instance.StopClientArena(); CloseWin<ArenaSettlementWin>(); } protected virtual void DrawExitTimer(int seconds) protected void DrawExitTimer(int seconds) { if (m_ExitTimer != null) { @@ -174,7 +144,7 @@ } } protected virtual void PlayRewardTween(int _playIndex) protected void PlayRewardTween(int _playIndex) { if (_playIndex < m_RewardIndexs.Count) { LogicProject/System/ArenaActivity/ArenaWin.cs
@@ -41,16 +41,7 @@ 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() { @@ -87,12 +78,11 @@ 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(); HA922_tagGCArenaMatchList.tagGCArenaMatchInfo EmptyInfo = new HA922_tagGCArenaMatchList.tagGCArenaMatchInfo(); ArenaModel.Instance.m_PlayerInfo.Add(EmptyInfo); } @@ -149,10 +139,10 @@ WindowCenter.Instance.OpenIL<ArenaRecordWin>(); }); //购买对战次数 Btn_Add.SetListener(() => { WindowCenter.Instance.OpenIL<ArenaAddTimesWin>(); }); //Btn_Add.SetListener(() => //{ // //WindowCenter.Instance.OpenIL<ArenaAddTimesWin>(); //}); for (int i = 1; i < 6; i++) { int tmp = i - 1; @@ -164,64 +154,32 @@ 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) //ArenaModel.Instance.SelectMatchPlayer = tmp; //当前选择的用户 //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, ""); int playerID = (int)ArenaModel.Instance.m_PlayerInfo[tmp].PlayerID; if (playerID < 10000) { //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)); }); } } int npcID = ArenaModel.Instance.GetLVToNPCID(ArenaModel.Instance.m_PlayerInfo[tmp].LV); TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 0, npcID, new uint[1] { (uint)playerID }); } 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, ""); TurnFightModel.Instance.StartTurnFight(ArenaManager.MapID, 0, 1, playerID, new uint[1] { (uint)playerID }); } } else { @@ -233,8 +191,6 @@ SeasonReawardTxt.text = Language.Get("ArenaSeasonReward"); TipsTxt.text = StringUtility.Contact(Language.Get("L1003"), ":", Language.Get("ArenaTodayRewardTips")); m_ToggleButton.AddListener(SkipChallenge); } protected override void OnPreOpen() @@ -258,17 +214,7 @@ 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; Debug.Log("PlayerID:"+PlayerDatas.Instance.PlayerId); } @@ -367,7 +313,7 @@ } //更新匹配列表 void UpdateMatchUser(IL_HA922_tagGCArenaMatchList vNetData) void UpdateMatchUser(HA922_tagGCArenaMatchList vNetData) { for (int i = 0; i < vNetData.MatchList.Length; i++) { @@ -386,8 +332,18 @@ 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("TextPlayerName").GetComponent<Text>().text = ArenaModel.Instance.m_PlayerInfo[i].PlayerName; if ((int)ArenaModel.Instance.m_PlayerInfo[i].PlayerID >= 10000) { m_PlayerList[i].Find("ImageHead").GetComponent<Image>().SetSprite(UIHelper.GetHeadIcon((int)ArenaModel.Instance.m_PlayerInfo[i].Face)); } else { var npcConfig = NPCConfig.Get(ArenaModel.Instance.GetLVToNPCID(ArenaModel.Instance.m_PlayerInfo[i].LV)); m_PlayerList[i].Find("ImageHead").GetComponent<Image>().SetSprite(npcConfig.HeadPortrait); } //战力,机器人读等级表取等级对应战力 m_PlayerList[i].Find("TextPlayerFight").GetComponent<Text>().text = StringUtility.Contact(Language.Get("L1056") , ":" , UIHelper.ReplaceLargeNum(fightpower)); //积分 @@ -419,9 +375,8 @@ 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"); DailyRewardTxt.text = Language.Get("ArenaTodayReward"); index = 0; for (int i = 0; i < ArenaManager.seasonAwardTypelist.Count; i++) { @@ -430,16 +385,14 @@ 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; @@ -494,18 +447,6 @@ 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; } } System/Dungeon/DungeonModel.cs
@@ -1440,7 +1440,7 @@ WindowCenter.Instance.Open("CrossServerFamilyBattleResultWin"); break; case ArenaManager.MapID: ArenaManagerModel.Instance.UpdateFBEnd(); //ArenaManagerModel.Instance.UpdateFBEnd(); break; case CrossServerQualifyingModel.DATA_MAPID: CrossServerQualifyingModel.Instance.UpdatePKResult(); @@ -1477,7 +1477,7 @@ WindowCenter.Instance.Open("CrossServerFamilyBattleResultWin"); break; case ArenaManager.MapID: ArenaManagerModel.Instance.UpdateFBEnd(); //ArenaManagerModel.Instance.UpdateFBEnd(); break; case CrossServerQualifyingModel.DATA_MAPID: CrossServerQualifyingModel.Instance.UpdatePKResult(); System/ILManager/ArenaManager.cs
@@ -58,7 +58,8 @@ //非服务端玩家的镜像战斗 public static bool IsArenaClientNotMirrorFight { get { return isArenaClient && !ArenaManagerModel.isMirrorFight; } //get { return isArenaClient && !ArenaManagerModel.isMirrorFight; } get { return isArenaClient; } } public static bool IsArenaStage() System/Skill/TalentModel.cs
@@ -116,52 +116,52 @@ Dictionary<int, List<int>> jobTalentTypeDict = new Dictionary<int, List<int>>(); void ParseConfig() { var configs = TalentConfig.GetValues(); for (int i = 0; i < configs.Count; i++) { var skillId = configs[i].skillId; var skillConfig = SkillConfig.Get(skillId); TalentSkill talent; if (!TryGetTalent(skillConfig.SkillTypeID, out talent)) { talent = new TalentSkill(skillConfig.SkillTypeID, skillConfig.SkillMaxLV); talent.level = 0; talentSkills.Add(skillConfig.SkillTypeID, talent); //var configs = TalentConfig.GetValues(); //for (int i = 0; i < configs.Count; i++) //{ // var skillId = configs[i].skillId; // var skillConfig = SkillConfig.Get(skillId); // TalentSkill talent; // if (!TryGetTalent(skillConfig.SkillTypeID, out talent)) // { // talent = new TalentSkill(skillConfig.SkillTypeID, skillConfig.SkillMaxLV); // talent.level = 0; // talentSkills.Add(skillConfig.SkillTypeID, talent); TalentTree talentTree; if (!talentTreeDict.TryGetValue(skillConfig.UseType, out talentTree)) { talentTree = new TalentTree(); talentTreeDict.Add(skillConfig.UseType, talentTree); } talentTree.Add(configs[i], skillConfig.SkillTypeID); // TalentTree talentTree; // if (!talentTreeDict.TryGetValue(skillConfig.UseType, out talentTree)) // { // talentTree = new TalentTree(); // talentTreeDict.Add(skillConfig.UseType, talentTree); // } // talentTree.Add(configs[i], skillConfig.SkillTypeID); List<int> list = null; if (!jobTalentTypeDict.TryGetValue(skillConfig.UseType, out list)) { list = new List<int>(); jobTalentTypeDict.Add(skillConfig.UseType, list); } if (!list.Contains(configs[i].type)) { list.Add(configs[i].type); } } } var jobs = jobTalentTypeDict.Keys.ToList(); for (int i = 0; i < jobs.Count; i++) { var list = jobTalentTypeDict[jobs[i]]; list.Sort((x, y) => { return x.CompareTo(y); }); } // List<int> list = null; // if (!jobTalentTypeDict.TryGetValue(skillConfig.UseType, out list)) // { // list = new List<int>(); // jobTalentTypeDict.Add(skillConfig.UseType, list); // } // if (!list.Contains(configs[i].type)) // { // list.Add(configs[i].type); // } // } //} //var jobs = jobTalentTypeDict.Keys.ToList(); //for (int i = 0; i < jobs.Count; i++) //{ // var list = jobTalentTypeDict[jobs[i]]; // list.Sort((x, y) => // { // return x.CompareTo(y); // }); //} var config = FuncConfigConfig.Get("TalentResetBook"); talentResetBook = int.Parse(config.Numerical1); talentResetBookCost = int.Parse(config.Numerical2); //var config = FuncConfigConfig.Get("TalentResetBook"); //talentResetBook = int.Parse(config.Numerical1); //talentResetBookCost = int.Parse(config.Numerical2); } public int GetTalentType(int index)