using System; using System.Collections.Generic; using UnityEngine.UI; using UnityEngine; using TableConfig; using DG.Tweening; using Snxxz.UI; public class WashPro : MonoBehaviour { #region 成员变量 [SerializeField] Text _proValue; [SerializeField] Slider _proSlider; [SerializeField] Text _washResult; [SerializeField] Text _addProPreview; [SerializeField] Button _addProToggle; [SerializeField] Text _perfectIcon; [SerializeField] Text _proNameText; [SerializeField] Text _addMoveText; [SerializeField] GameObject _needAddBG; [SerializeField] GameObject _toggleCheckIcon; [SerializeField] UIEffect washAttrPerfectEffect; #endregion private bool _toggleIsOn = false; public bool toggleIsOn { get { return _toggleIsOn; } set { _toggleIsOn = value; } } private bool _isShowPerfectEffect = false; public bool isShowPerfectEffect { get { return _isShowPerfectEffect; } set { _isShowPerfectEffect = value; } } public SingleWashAttrModel singleWashAttrModel { get; private set; } WashProModel _washAttrModel; private float preAttrValue = 0; WashProModel washAttrModel { get { return _washAttrModel ?? (_washAttrModel = ModelCenter.Instance.GetModel()); } } EquipWashModel _equipWashModel; EquipWashModel equipWashModel { get { return _equipWashModel ?? (_equipWashModel = ModelCenter.Instance.GetModel()); } } private void Awake() { _addProToggle.AddListener(OnClickAddProToggle); } public void RefreshUI(WashAttrType attrType) { singleWashAttrModel = washAttrModel.GetSingleWashAttrModel(attrType); if (singleWashAttrModel == null) return; ChangeCheckIcon(); if (singleWashAttrModel.washPro.isPutOn) { _proSlider.minValue = singleWashAttrModel.minValue; _proSlider.maxValue = singleWashAttrModel.maxValue; _proSlider.value = singleWashAttrModel.XLAttrValue; _proValue.text = GetProValueTypeStr(singleWashAttrModel.XLAttrValue); if (washAttrModel.equipWashModel.IsSaveWashValue(singleWashAttrModel.washPro)) { if (singleWashAttrModel.isPerfect) { toggleIsOn = true; OnClickAddProToggle(); ObjHideOrShow(false, false, false, true, false, false); if(isShowPerfectEffect) { washAttrPerfectEffect.Play(); isShowPerfectEffect = false; } } else { if(singleWashAttrModel.XLAttrChange <= 0) { isShowPerfectEffect = true; if (singleWashAttrModel.addAttrValue > 0 && singleWashAttrModel.washState == WashState.MustWash) { _addMoveText.text = StringUtility.Contact("",Language.Get("EquipWash115", GetProValueTypeStr(singleWashAttrModel.addAttrValue)),""); ObjHideOrShow(true, false, false, false,false, true); } else { if(toggleIsOn) { ObjHideOrShow(false, false, true, false, true, false); } else { ObjHideOrShow(false, false, true, false, false, false); } } } } } else { if (singleWashAttrModel.isPerfect) { toggleIsOn = true; OnClickAddProToggle(); ObjHideOrShow(false, false, false, true,false, false); } else { isShowPerfectEffect = true; if (singleWashAttrModel.addAttrValue > 0 && singleWashAttrModel.XLAttrChange <= 0) { _addMoveText.text = StringUtility.Contact("", Language.Get("EquipWash115", GetProValueTypeStr(singleWashAttrModel.addAttrValue)), ""); ObjHideOrShow(true, false, false, false, false, true); } else { float changeValue = singleWashAttrModel.XLAttrChange - singleWashAttrModel.XLAttrValue; if (changeValue > 0) { _washResult.text = StringUtility.Contact("", "+", GetProValueTypeStr(changeValue), ""); } else { if(changeValue == 0) { _washResult.text = StringUtility.Contact("", GetProValueTypeStr(changeValue), ""); } else { _washResult.text = StringUtility.Contact("", GetProValueTypeStr(changeValue), ""); } } ObjHideOrShow(false, true, false, false, false, false); } } } } else { ObjHideOrShow(false, false, true, false, false, false); _proSlider.minValue = 0; _proSlider.maxValue = 1; _proSlider.value = 0; _proValue.text = "0"; } _proNameText.text = singleWashAttrModel.attrName; } private void ChangeCheckIcon() { if (toggleIsOn) { _toggleCheckIcon.SetActive(true); _addProPreview.gameObject.SetActive(true); _addProPreview.text = singleWashAttrModel.preViewStr; } else { _toggleCheckIcon.SetActive(false); _addProPreview.gameObject.SetActive(false); } } private void ObjHideOrShow(params bool[] isShows) { _needAddBG.SetActive(isShows[0]); _washResult.gameObject.SetActive(isShows[1]); _addProToggle.gameObject.SetActive(isShows[2]); _perfectIcon.gameObject.SetActive(isShows[3]); _addProPreview.gameObject.SetActive(isShows[4]); _addMoveText.gameObject.SetActive(isShows[5]); } private string GetProValueTypeStr(float value) { string s = ""; if (singleWashAttrModel.playerProModel.ISPercentage == 0) { s = value.ToString(); } else if (singleWashAttrModel.playerProModel.ISPercentage == 1) { s = (float)Math.Round(value / 100f,2) + "%"; } else if (singleWashAttrModel.playerProModel.ISPercentage == 2) { s = ((float)Math.Round(value / 100f, 1)).ToString(); } return s; } public void OnClickAddProToggle() { if(singleWashAttrModel.washPro.isPutOn) { toggleIsOn = !toggleIsOn; ChangeCheckIcon(); EquipReinforceEventMgr.Instance.RefreshWashCostMoney(); } else { SysNotifyMgr.Instance.ShowTip("Wash_NoEquip1"); } } }