using UnityEngine; using UnityEngine.UI; using System.Collections; using System; namespace vnxbqy.UI { public class CrossServerOneVsOnePKPlayerCell : MonoBehaviour { [SerializeField] RawImage playerRaw; [SerializeField] Text nameText; [SerializeField] Text fightPointTxt; [SerializeField] Text winScoreTxt; [SerializeField] Button challengeBtn; CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel(); } } RoleParticularModel model { get { return ModelCenter.Instance.GetModel(); } } ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int index) { if (index >= crossServerModel.matchPlayers.Count) return; var matchPlayer = crossServerModel.matchPlayers[index]; ShowRawPlayer((int)matchPlayer.PlayerID, index); nameText.text = matchPlayer.PlayerName; fightPointTxt.text = UIHelper.ReplaceLargeArtNum(matchPlayer.FightPowerEx * Constants.ExpPointValue + matchPlayer.FightPower); winScoreTxt.text = Language.Get("CrossServerOneVsOne2") + crossServerModel.winConstScoreArr[index].ToString(); challengeBtn.AddListener(() => { int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum(); if (remainNum <= 0) { SysNotifyMgr.Instance.ShowTip("TryEnterJadeDynastyBossError_4"); return; } int error; if (!dungeonModel.CanEnter(out error)) { dungeonModel.ProcessEnterError(error); return; } CrossServerOneVsOneRewardModel.PkDanLvNow = CrossServerOneVsOnePlayerInfo.Instance.DanLV; //跳过战斗 if (crossServerModel.isSkipFightChoose) { if (matchPlayer.PlayerID > 10000) { CrossServerLogin.Instance.InitOneVsOnePlayerInfo(matchPlayer); LoadingWin.isCrossServerOneVsOne = false; mirrorFightModel.SendMirrorFight(CrossServerOneVsOneModel.CrossServerDataMapId, 0, matchPlayer.PlayerID, 3); } else { CrossServerLogin.Instance.InitOneVsOneClientPlayerInfo(matchPlayer); ClientCrossServerOneVsOne.OPPONENT_PLAYERID = matchPlayer.PlayerID; ulong tagetFightPower = matchPlayer.FightPowerEx * Constants.ExpPointValue + matchPlayer.FightPower; ClientCrossServerOneVsOne.ReportDungeonResult(new ClientCrossServerOneVsOne.FightResultSupplement() { endTime = TimeUtility.ServerNow, winPlayerId = (int)(PlayerDatas.Instance.baseData.FightPoint >= tagetFightPower ? PlayerDatas.Instance.baseData.PlayerID : matchPlayer.PlayerID), }); } return; } if (matchPlayer.PlayerID > 10000) { var teamModel = ModelCenter.Instance.GetModel(); if (teamModel.isMatching) { teamModel.RequestCancelAutoMatchTeam(); } CrossServerLogin.Instance.InitOneVsOnePlayerInfo(matchPlayer); mirrorFightModel.SendMirrorFight(CrossServerOneVsOneModel.CrossServerDataMapId, 0, matchPlayer.PlayerID, 0); } else { CrossServerLogin.Instance.InitOneVsOneClientPlayerInfo(matchPlayer); ClientCrossServerOneVsOne.JiaMatchOk(matchPlayer); } }); } void ShowRawPlayer(int playerID, int index) { if (playerID < 10000) { ShowRobot(playerID, index); return; } var viewPlayerData = model.GetViewPlayerData(playerID); if (viewPlayerData == null) { return; } int _suitLevel = (int)(viewPlayerData.rolePropData.EquipShowSwitch % 10); int clothes = viewPlayerData.GetItemId(RoleEquipType.Clothes); int weapon = viewPlayerData.GetItemId(RoleEquipType.Weapon); int wing = viewPlayerData.GetItemId(RoleEquipType.Wing); int weapon2 = viewPlayerData.GetItemId(RoleEquipType.Weapon2); int fashionClothes = viewPlayerData.GetItemId(RoleEquipType.FashionClothes); int fashionWeapon = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon); int fashionWeapon2 = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon2); var reikiRootEffectId = viewPlayerData.rolePropData.EquipShowSwitch / 1000 % 1000; var data = new UI3DPlayerExhibitionData { job = viewPlayerData.rolePropData.Job, fashionClothesId = fashionClothes, fashionWeaponId = fashionWeapon, fashionSecondaryId = fashionWeapon2, clothesId = clothes, suitLevel = _suitLevel, weaponId = weapon, wingsId = wing, secondaryId = weapon2, reikiRootEffectId = (int)reikiRootEffectId, isDialogue = false, equipLevel = (int)viewPlayerData.rolePropData.EquipShowSwitch / 10 % 100, titleID = viewPlayerData.rolePropData.TitleID, }; if (index == 0) UI3DModelExhibition.InstanceClone1.ShowPlayer(playerRaw, data); else if (index == 1) UI3DModelExhibition.InstanceClone2.ShowPlayer(playerRaw, data); else if (index == 2) UI3DModelExhibition.InstanceClone3.ShowPlayer(playerRaw, data); playerRaw.raycastTarget = false; } void ShowRobot(int playerID, int index) { var robot = crossServerModel.robots[playerID]; int clothesID = 0; int weaponID1 = 0; int weaponID2 = 0; // 因为衣服是所有装备的父节点, 需要预先处理衣服 for (int i = 0; i < robot.itemDatas.Length; ++i) { var _itemInfo = robot.itemDatas[i]; if (_itemInfo.place == (int)RoleEquipType.Clothes) { clothesID = (int)_itemInfo.id; } if (_itemInfo.place == (int)RoleEquipType.Weapon) { weaponID1 = (int)_itemInfo.id; } else if (_itemInfo.place == (int)RoleEquipType.Weapon2) { weaponID2 = (int)_itemInfo.id; } } var data = new UI3DPlayerExhibitionData { job = robot.job, clothesId = clothesID, weaponId = weaponID1, secondaryId = weaponID2, }; if (index == 0) UI3DModelExhibition.InstanceClone1.ShowPlayer(playerRaw, data); else if (index == 1) UI3DModelExhibition.InstanceClone2.ShowPlayer(playerRaw, data); else if (index == 2) UI3DModelExhibition.InstanceClone3.ShowPlayer(playerRaw, data); playerRaw.raycastTarget = false; } } }