using System; using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; namespace Snxxz.UI { [XLua.Hotfix] public class JadeDynastyEquipWin : Window { [SerializeField] Text fightPowerText; [SerializeField] Button decomposeBtn; [SerializeField] Button sortBtn; [SerializeField] Text sortText; [SerializeField] Image sortImage; [Header("诛仙装备位")] [SerializeField] Button stoneAttrBtn; [SerializeField] Button suitAttrBtn; [SerializeField] RawImage playerModel; [SerializeField] UIEffect stoneBtnEffect; [SerializeField] UIEffect suitBtnEffect; [SerializeField] UIEffect suitType1Effect; [SerializeField] UIEffect suitType2Effect; [SerializeField] UIEffect suitType3Effect; [Header("诛仙背包")] [SerializeField] ScrollerController itemCtrl; [SerializeField] int initCount = 100; PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel(); } } PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel(); } } JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { decomposeBtn.AddListener(ClickDecompose); stoneAttrBtn.AddListener(ClickStoneAttr); suitAttrBtn.AddListener(ClickSuitAttr); sortBtn.AddListener(OnClickSort); } protected override void OnPreOpen() { playerPack.RefreshItemCountAct += UpdateJadeDynastyItem; playerPack.RefreshPackAct += UpdateJadeDynastyKnapSack; SetDisplay(); } protected override void OnActived() { base.OnActived(); StartCoroutine(UpdateLookItem()); } protected override void OnAfterOpen() { } protected override void OnPreClose() { playerPack.RefreshPackAct -= UpdateJadeDynastyKnapSack; playerPack.RefreshItemCountAct -= UpdateJadeDynastyItem; UI3DModelExhibition.Instance.StopShow(); equipModel.ClearLookItemModel(); StopAllCoroutines(); } protected override void OnAfterClose() { } #endregion private void SetDisplay() { CreateItemLine(); UpdatePlayerUI3DModel(); UpdateFightPower(); UpdateSuitBtnPlayerEffect(); TimeDownMgr.CoolTimeData data; if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.BagSort, out data)) { data.func = RefreshTime; sortImage.SetSprite("BlackBtn"); sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", Mathf.CeilToInt(data.duration - data.time)); sortBtn.enabled = false; } else { sortImage.SetSprite("SecondBtn1"); sortText.text = Language.Get("BagWin_Sortbtn_Text_1"); sortBtn.enabled = true; } } public IEnumerator UpdateLookItem() { if (equipModel.jumpIndex > 0) { yield return WaitingForSecondConst.WaitMS100; int jumpIndex = equipModel.jumpIndex; jumpIndex = jumpIndex > 2 ? jumpIndex - 2 : jumpIndex; itemCtrl.JumpIndex(jumpIndex); itemCtrl.m_Scorller.RefreshActiveCellViews(); } } private void CreateItemLine() { itemCtrl.Refresh(); int line = initCount / 5; for(int i = 0; i < line; i++) { itemCtrl.AddCell(ScrollerDataType.Header,i); } itemCtrl.Restart(); } private void UpdateJadeDynastyKnapSack(PackType type) { if (type != PackType.JadeDynastyItem) return; UpdateItemLine(); } private void UpdateFightPower() { int fightPower = 0; var singlePack = playerPack.GetSinglePackModel(PackType.JadeDynastyEquip); if (singlePack != null) { var dict = singlePack.GetAllItems(); foreach(var model in dict.Values) { fightPower += model.equipScore; } } fightPowerText.text = fightPower.ToString(); } private void UpdateJadeDynastyItem(PackType type, int index, int id) { var config = ItemConfig.Get(id); switch(type) { case PackType.JadeDynastyItem: UpdateItemLine(); equipModel.ClearLookItemModel(); break; case PackType.JadeDynastyEquip: UpdateItemLine(); equipModel.ClearLookItemModel(); UpdatePlayerUI3DModel(); UpdateFightPower(); UpdateSuitBtnPlayerEffect(); if (config != null) { UpdateSuitPlayerEffect(equipModel.GetJadeDynastyEquipPlace(index)); } break; } } private void UpdateSuitBtnPlayerEffect(bool isSave = false) { bool isPlay = equipModel.IsPlaySuitPlayerEffect(); if(isPlay && !isSave) { if (!suitBtnEffect.IsPlaying) { suitBtnEffect.Play(); } } else { equipModel.StopPlaySuitEffect(suitBtnEffect,isSave); } } private void UpdateStoneSuitBtnPlayerEffect(bool isSave = false) { bool isPlay = equipModel.IsPlayStoneSuitEffect(); if(isPlay && !isSave) { if (!stoneBtnEffect.IsPlaying) { stoneBtnEffect.Play(); } } else { equipModel.StopPlayStoneSuitEffect(stoneBtnEffect, isSave); } } private void UpdateSuitPlayerEffect(int equipPlace) { int suitType = 0; int curSuitLv = 0; int nextSuitLv = 0; equipModel.TryGetSuitType(equipPlace,out suitType); bool isSuit = equipModel.TryGetSuitLV(equipPlace,PackType.JadeDynastyEquip,out curSuitLv,out nextSuitLv); if(isSuit && curSuitLv != 0) { bool isLocalSaveActiveSuit = equipModel.IsLocalSaveActiveSuit(suitType, curSuitLv); if(!isLocalSaveActiveSuit) { switch(suitType) { case 1: if(!suitType1Effect.IsPlaying) { suitType1Effect.Play(); } break; case 2: if (!suitType2Effect.IsPlaying) { suitType2Effect.Play(); } break; case 3: if (!suitType3Effect.IsPlaying) { suitType3Effect.Play(); } break; } } else { switch (suitType) { case 1: if (suitType1Effect.IsPlaying) { suitType1Effect.Stop(); } break; case 2: if (suitType2Effect.IsPlaying) { suitType2Effect.Stop(); } break; case 3: if (suitType3Effect.IsPlaying) { suitType3Effect.Stop(); } break; } } } else { switch (suitType) { case 1: if (suitType1Effect.IsPlaying) { suitType1Effect.Stop(); } break; case 2: if (suitType2Effect.IsPlaying) { suitType2Effect.Stop(); } break; case 3: if (suitType3Effect.IsPlaying) { suitType3Effect.Stop(); } break; } } } private void UpdateItemLine() { itemCtrl.m_Scorller.RefreshActiveCellViews(); } private void UpdatePlayerUI3DModel() { UI3DModelExhibition.Instance.ShowPlayer(playerModel, PlayerDatas.Instance.baseData.Job); } private void ClickSuitAttr() { UpdateSuitBtnPlayerEffect(true); WindowCenter.Instance.Open(); } private void ClickStoneAttr() { WindowCenter.Instance.Open(); } public void OnClickSort() { modelInterface.SendPackResetQuest(PackType.JadeDynastyItem); TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.BagSort, 5.0f, RefreshTime); sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", 5); sortImage.SetSprite("BlackBtn"); sortBtn.enabled = false; } private void RefreshTime(float time) { if (time <= 0) { sortImage.SetSprite("SecondBtn1"); sortText.text = Language.Get("BagWin_Sortbtn_Text_1"); sortBtn.enabled = true; } else { sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", time); sortBtn.enabled = false; } } private void ClickDecompose() { WindowCenter.Instance.Open(); } } }