using System; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FairySiegeActWin : Window { [SerializeField] ButtonEx btnBase; //大本营 [SerializeField] ButtonEx btnClose; [SerializeField] ButtonEx btnGift; //礼包 [SerializeField] ButtonEx btnGo; //进入 [SerializeField] ButtonEx btnGuess; //竞猜 [SerializeField] ButtonEx btnHelp; //仙盟协力 [SerializeField] ButtonEx btnLike; //点赞 [SerializeField] TextEx txtLike; [SerializeField] ButtonEx btnRank; //排行 [SerializeField] ButtonEx btnSpring1; //圣泉-领奖期 [SerializeField] RedpointBehaviour rpSpring1; [SerializeField] Transform tranTip1; //活动进入最后一轮提示 [SerializeField] Transform tranTip2; [SerializeField] RichText txtJoinTime; [SerializeField] TextEx txtRewardTime; [SerializeField] TextEx txtRewardTime1; [SerializeField] TextEx txtRewardTime2; [Header("左下角按钮")] [SerializeField] ButtonEx btnReward; //奖励 [SerializeField] ButtonEx btnRules; [SerializeField] ButtonEx btnSchedule; //赛程 [SerializeField] ButtonEx btnSpring; //圣泉 [SerializeField] FairySiegeActFairyRankItem firstInfo; [SerializeField] ImageEx imgActBk; [SerializeField] ImageEx imgActName; [SerializeField] ImageEx imgGo; [SerializeField] ImageEx imgJoinTime; [SerializeField] ImageEx imgNoJoin; [SerializeField] RedpointBehaviour rpBase; [SerializeField] RedpointBehaviour rpGift; [SerializeField] RedpointBehaviour rpGo; [SerializeField] RedpointBehaviour rpGuess; [SerializeField] RedpointBehaviour rpHelp; [SerializeField] RedpointBehaviour rpSpring; [SerializeField] RedpointBehaviour rpRankAward; [SerializeField] RedpointBehaviour rpRankAward1; [SerializeField] FairySiegeActFairyRankItem secondInfo; [SerializeField] FairySiegeActFairyRankItem thirdInfo; [Header("右下角按钮")] [SerializeField] Transform tranBottomRightButtonGroup; [Header("领奖期相关")] [SerializeField] Transform tranRank; [SerializeField] EmblemCell FairyEmblemNo1; [SerializeField] TextEx txtFairyNameNo1; [SerializeField] EmblemCell FairyEmblemNo2; [SerializeField] TextEx txtFairyNameNo2; [SerializeField] EmblemCell FairyEmblemNo3; [SerializeField] TextEx txtFairyNameNo3; [SerializeField] RawImage imgPlayer3DModel; [SerializeField] Transform tranRankFirstInfo; [SerializeField] TextEx txtLv; [SerializeField] TextEx txtName; [SerializeField] TextEx txtSeverName; [SerializeField] TextEx txtNoOneHere; [SerializeField] ImageEx imgRelamLv; [SerializeField] ImageEx imgTitle; [SerializeField] UIFrame uiTitle; [SerializeField] RedpointBehaviour rpLike; int state; bool isSendPack = false; RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel(); } } FairySiegeActModel model { get { return ModelCenter.Instance.GetModel(); } } RankModel rankModel { get { return ModelCenter.Instance.GetModel(); } } protected override void AddListeners() { btnLike.SetListener(() => { model.SendAward(3); }); btnClose.SetListener(CloseClick); btnGo.SetListener(() => { // 没有参赛资格 if (!model.hasQualification()) { SysNotifyMgr.Instance.ShowTip("FairySiege04"); return; } if (state != 2)//0 公示期 1 备战期 2 开战期 3 休战期 4 领奖期 { SysNotifyMgr.Instance.ShowTip("FairySiege18"); return; } int battleType; int battleGroup; if (!model.TryGetNowBatTypeAndGroup(model.myFamilyID, out battleType, out battleGroup)) return; model.showBatType = battleType; model.showBatGroup = battleGroup; model.SendQuery(2, battleType, battleGroup, 0); }); btnReward.SetListener(() => WindowCenter.Instance.Open()); btnRank.SetListener(() => WindowCenter.Instance.Open()); btnGuess.SetListener(() => { //竞猜未开始 int guessState = model.GetGuessState(); if (guessState == 0) { if (!model.TryGetGuessAwardTime(out DateTime startGuessAwardTime, out DateTime endGuessAwardTime)) return; SysNotifyMgr.Instance.ShowTip("FairySiege22", GetGuessTimeStr()); return; } WindowCenter.Instance.Open(); }); btnSchedule.SetListener(() => WindowCenter.Instance.Open()); btnGift.SetListener(() => WindowCenter.Instance.Open()); btnHelp.SetListener(() => { // 没有参赛资格 if (!model.hasQualification()) { SysNotifyMgr.Instance.ShowTip("FairySiege04"); return; } WindowCenter.Instance.Open(); }); btnBase.SetListener(() => { // 没有参赛资格 if (!model.hasQualification()) { SysNotifyMgr.Instance.ShowTip("FairySiege04"); return; } WindowCenter.Instance.Open(); }); btnSpring.SetListener(() => WindowCenter.Instance.Open()); btnSpring1.SetListener(() => WindowCenter.Instance.Open()); } protected override void BindController() { } protected override void OnPreOpen() { rpLike.redpointId = model.GetRedpointId(FairySiegeRedPointType.Like); if (!model.isSkipStory) { model.isSkipStory = true; WindowCenter.Instance.Open(); } InitRedPoint(); int stateValue; if (model.TryGetCurrentStateValue(out stateValue)) { state = model.GetStateByStateValue(stateValue); Display(); } GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; RoleParticularModel.OnRevPackage += OnPlayerCacheResultEvent; model.UpdateFamilyGCZPlayerInfoEvent += OnUpdateFamilyGCZPlayerInfoEvent; model.UpdateFamilyGCZBatSceneInfoEvent += OnUpdateFamilyGCZBatSceneInfoEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent; rankModel.onRankRefresh += OnRefreshRankList; rankModel.onMyRankRefresh += RankModel_onMyRankRefresh; txtLv.SetActive(false); imgRelamLv.SetActive(false); imgTitle.SetActive(false); txtName.SetActive(false); txtSeverName.SetActive(false); imgRelamLv.SetActive(false); txtNoOneHere.SetActive(true); DisplayAward(); } protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; RoleParticularModel.OnRevPackage -= OnPlayerCacheResultEvent; model.UpdateFamilyGCZPlayerInfoEvent -= OnUpdateFamilyGCZPlayerInfoEvent; model.UpdateFamilyGCZBatSceneInfoEvent -= OnUpdateFamilyGCZBatSceneInfoEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent; rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh; rankModel.onRankRefresh -= OnRefreshRankList; } private void RankModel_onMyRankRefresh(int obj) { DisplayAward(); } private void OnRefreshRankList(int obj) { DisplayAward(); } protected override void OnAfterOpen() { } protected override void OnAfterClose() { } private void InitRedPoint() { rpGuess.redpointId = model.GetRedpointId(FairySiegeRedPointType.Guess); rpGift.redpointId = model.GetRedpointId(FairySiegeRedPointType.Gift); rpHelp.redpointId = model.GetRedpointId(FairySiegeRedPointType.Help); rpBase.redpointId = model.GetRedpointId(FairySiegeRedPointType.Base); rpSpring.redpointId = model.GetRedpointId(FairySiegeRedPointType.Spring); rpSpring1.redpointId = model.GetRedpointId(FairySiegeRedPointType.Spring); rpGo.redpointId = model.GetRedpointId(FairySiegeRedPointType.Go); rpRankAward.redpointId = model.GetRedpointId(FairySiegeRedPointType.RankAward); rpRankAward1.redpointId = model.GetRedpointId(FairySiegeRedPointType.RankAward); } private void OperationTimeUpdateEvent(Operation operation) { if (operation != Operation.default53) return; Display(); } private void OnUpdateFamilyGCZPlayerInfoEvent() { Display(); DisplayAward(); } private void OnPlayerCacheResultEvent(int viewType, int playerID, RoleParticularModel.ViewPlayerData data) { if (playerID != model.no1PlayerIDCrossFamily) return; ShowNo1Model(); } private void OnSecondEvent() { int stateValue; if (model.TryGetCurrentStateValue(out stateValue)) { state = model.GetStateByStateValue(stateValue); Display(); } } private void OnUpdateFamilyGCZBatSceneInfoEvent() { if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } } public string GetGuessTimeStr() { if (!model.TryGetGuessTime(out DateTime startGuessTime, out DateTime endGuessTime)) return string.Empty; OperationDate startDate = model.operationCrossAct.startDate; var textBuilder = OperationTimeHepler.textBuilder; textBuilder.Length = 0; OperationDate nowDate = new OperationDate(); nowDate.year = startGuessTime.Year; nowDate.month = startGuessTime.Month; nowDate.day = startGuessTime.Day; textBuilder.Append(nowDate.ToDisplay()); textBuilder.Append(string.Format(" {0}:{1}", startGuessTime.Hour.ToString("D2"), startGuessTime.Minute.ToString("D2"))); return textBuilder.ToString(); } public void Display() { // 0 公示期 1 备战期 2 开战期 3 休战期 4 领奖期 imgActName.SetActive(state == 0 || state == 1 || state == 2 || state == 3); imgJoinTime.SetActive(state == 0 || state == 1 || state == 2 || state == 3); tranTip2.SetActive(state == 0); btnRules.SetActive(state == 0 || state == 1 || state == 2 || state == 3); btnGo.SetActive(state == 1 || state == 2 || state == 3); imgGo.SetActive(model.hasQualification()); imgNoJoin.SetActive(!model.hasQualification()); txtRewardTime.SetActive(state == 4); txtRewardTime1.SetActive(state == 1 || state == 2 || state == 3); txtRewardTime2.SetActive(state == 0); btnGuess.SetActive(state == 1 || state == 2 || state == 3 || state == 4); btnSchedule.SetActive(state == 1 || state == 2 || state == 3); btnGift.SetActive(state == 1 || state == 2 || state == 3); tranBottomRightButtonGroup.SetActive(state == 1 || state == 2 || state == 3); tranRank.SetActive(state == 4); tranRankFirstInfo.SetActive(state == 4); btnSpring1.SetActive(state == 4); imgActBk.SetSprite(state == 4 ? "FairySiegeBK2" : "FairySiegeBK1"); txtRewardTime.text = model.GetRemainTime(); txtRewardTime1.text = model.GetRemainTime(); txtRewardTime2.text = model.GetRemainTime(); btnBase.SetActive(model.hasQualification()); btnHelp.SetActive(model.hasQualification()); DisplayActTime(); } private void DisplayActTime() { string openTimeStr = Language.Get("RidingPetBossQuestTime", model.operationCrossAct.ToDisplayTime()); if (model.operationCrossAct != null && !model.operationCrossAct.joinFamilys.IsNullOrEmpty()) { string familyNameStr = model.GetJoinFamilyNameStr(); string lookMoreStr = Language.Get("FairySiege124"); txtJoinTime.text = StringUtility.Contact(openTimeStr, new string(' ', 4), familyNameStr, lookMoreStr); } else { txtJoinTime.text = StringUtility.Contact(openTimeStr); } } private void DisplayAward() { int stateValue; if (model.TryGetCurrentStateValue(out stateValue)) { state = model.GetStateByStateValue(stateValue); } if (state != 4) { txtFairyNameNo1.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo1.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); txtFairyNameNo2.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo2.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); txtFairyNameNo3.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo3.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); return; } //点赞相关 bool isHaveLikeAward = model.IsHaveAward(3); btnLike.interactable = !isHaveLikeAward; btnLike.GetComponent().gray = isHaveLikeAward; txtLike.colorType = isHaveLikeAward ? TextColType.Gray : TextColType.NavyYellow; txtLike.text = Language.Get(!isHaveLikeAward ? "sharegift3" : "CelestialPalace07"); //排名相关 var familyRankInfo = rankModel.GetRankPageDatas(FairySiegeActModel.crossFamilyRankType); if (familyRankInfo == null) { rankModel.ResetQueryParam(); rankModel.QueryCrossRank(FairySiegeActModel.crossFamilyRankType, model.operationCrossAct.zoneID); } if (familyRankInfo != null) { RankData familyRankData; if (familyRankInfo.TryGetValue(0, out familyRankData)) { model.no1PlayerIDCrossFamily = (int)familyRankData.id2; roleParticularModel.ViewCrossPlayerCacheData(model.no1PlayerIDCrossFamily); //查询返回显示模型 txtFairyNameNo1.text = familyRankData.name1; FairyEmblemNo1.InitUI(EmblemHelper.GetOtherEmblemModel((int)familyRankData.value3)); string serverName = ServerListCenter.Instance.GetServerName((int)familyRankData.value5); txtSeverName.text = Language.Get("Z2002", serverName); } else { txtFairyNameNo1.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo1.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); } if (familyRankInfo.TryGetValue(1, out familyRankData)) { txtFairyNameNo2.text = familyRankData.name1; FairyEmblemNo2.InitUI(EmblemHelper.GetOtherEmblemModel((int)familyRankData.value3)); } else { txtFairyNameNo2.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo2.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); } if (familyRankInfo.TryGetValue(2, out familyRankData)) { txtFairyNameNo3.text = familyRankData.name1; FairyEmblemNo3.InitUI(EmblemHelper.GetOtherEmblemModel((int)familyRankData.value3)); } else { txtFairyNameNo3.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo3.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); } ShowNo1Model(); } else { txtFairyNameNo1.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo1.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); txtFairyNameNo2.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo2.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); txtFairyNameNo3.text = Language.Get("FamilyMatchNoOneHere"); FairyEmblemNo3.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); } } private void ShowNo1Model() { imgPlayer3DModel.SetActive(false); int playerID = model.no1PlayerIDCrossFamily; if (playerID == 0) return; var viewPlayerData = roleParticularModel.GetViewPlayerData(playerID); if (viewPlayerData == null) return; txtLv.text = Language.Get("PetHorseAwaking_3", viewPlayerData.rolePropData.LV); int relamLv = viewPlayerData.rolePropData.RealmLV; imgRelamLv.SetActive(RealmConfig.Has(relamLv)); if (RealmConfig.Has(relamLv)) { imgRelamLv.SetSprite(RealmConfig.Get(relamLv).Img); } txtName.text = UIHelper.ServerStringTrim(viewPlayerData.rolePropData.Name); model.DisplayTitle(imgTitle, uiTitle, viewPlayerData.rolePropData.TitleID); txtNoOneHere.SetActive(false); txtLv.SetActive(true); imgTitle.SetActive(true); imgPlayer3DModel.SetActive(true); txtName.SetActive(true); txtSeverName.SetActive(true); 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, }; UI3DModelExhibition.InstanceClone1.ShowPlayer(imgPlayer3DModel, data); imgPlayer3DModel.raycastTarget = false; } } }