using System;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
using UnityEngine;
|
|
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<WashProModel>());
|
}
|
}
|
|
EquipWashModel _equipWashModel;
|
EquipWashModel equipWashModel
|
{
|
get
|
{
|
return _equipWashModel ?? (_equipWashModel = ModelCenter.Instance.GetModel<EquipWashModel>());
|
}
|
}
|
|
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("<color=#109D06FF>",Language.Get("EquipWash115", GetProValueTypeStr(singleWashAttrModel.addAttrValue)),"</color>");
|
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("<color=#109D06FF>", Language.Get("EquipWash115", GetProValueTypeStr(singleWashAttrModel.addAttrValue)), "</color>");
|
ObjHideOrShow(true, false, false, false, false, true);
|
}
|
else
|
{
|
float changeValue = singleWashAttrModel.XLAttrChange - singleWashAttrModel.XLAttrValue;
|
if (changeValue > 0)
|
{
|
_washResult.text = StringUtility.Contact("<color=#109D06FF>", "+", GetProValueTypeStr(changeValue), "</color>");
|
}
|
else
|
{
|
if(changeValue == 0)
|
{
|
_washResult.text = StringUtility.Contact("<color=#401C06FF>", GetProValueTypeStr(changeValue), "</color>");
|
}
|
else
|
{
|
_washResult.text = StringUtility.Contact("<color=#FF2828FF>", GetProValueTypeStr(changeValue), "</color>");
|
}
|
|
}
|
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");
|
}
|
}
|
|
|
|
}
|