| | |
| | | RolePromoteModel m_Model;
|
| | | RolePromoteModel model
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<RolePromoteModel>());
|
| | | }
|
| | | get { return ModelCenter.Instance.GetModel<RolePromoteModel>(); }
|
| | | }
|
| | |
|
| | | RoleParticularModel m_RoleParticularModel;
|
| | | RoleParticularModel roleParticularModel
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_RoleParticularModel ?? (m_RoleParticularModel = ModelCenter.Instance.GetModel<RoleParticularModel>());
|
| | | }
|
| | | get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); }
|
| | | }
|
| | |
|
| | | [SerializeField] Image funcIcon;
|
| | | [SerializeField] Text presentFightPowerTxt;
|
| | | [SerializeField] Transform m_ContainerStrongerLabel;
|
| | | [SerializeField] Text strongerFightPowerTxt;
|
| | | [SerializeField] Text targetTxt;
|
| | | [SerializeField] Text m_FuncTxt;
|
| | | [SerializeField] Button strongerBtn;
|
| | | [SerializeField] GameObject reachTxtObj;
|
| | | [SerializeField] GameObject reachImgObj;
|
| | | [SerializeField] Image m_FuncIcon;
|
| | | [SerializeField] Text m_FightPower;
|
| | | [SerializeField] Text m_FuncName;
|
| | | [SerializeField] Image m_State;
|
| | | [SerializeField] Slider m_Slider;
|
| | | [SerializeField] Text m_Progress;
|
| | | [SerializeField] Button m_Goto;
|
| | |
|
| | | public override void Refresh(CellView cell)
|
| | | {
|
| | | int funcType = cell.index;
|
| | | int presentTargetValue = 0;
|
| | | bool reached = false;
|
| | | var cfg = model.GetPresentRoleStronger(funcType, out presentTargetValue, out reached);
|
| | | strongerBtn.onClick.RemoveAllListeners();
|
| | | if (cfg != null)
|
| | | var config = model.GetPresentRoleStronger(funcType);
|
| | | m_Goto.onClick.RemoveAllListeners();
|
| | | if (config != null)
|
| | | {
|
| | | var highestStage = model.IsHighestStage(funcType, cfg.id) && reached;
|
| | | funcIcon.SetSprite(cfg.Icon);
|
| | | m_FuncTxt.text = cfg.Name;
|
| | | ulong _presentFightPower = 0;
|
| | | _presentFightPower = roleParticularModel.GetFuncFightPower(funcType);
|
| | | presentFightPowerTxt.text = Language.Get("RolePromoteNowFight", _presentFightPower);
|
| | | m_FuncIcon.SetSprite(config.Icon);
|
| | | m_FuncName.text = config.Name;
|
| | | ulong fightPower = roleParticularModel.GetFuncFightPower(funcType);
|
| | | var highestStage = fightPower >= (ulong)config.recommendFightPower;
|
| | | m_FightPower.text = Language.Get("RolePromoteNowFight", fightPower);
|
| | |
|
| | | strongerFightPowerTxt.text = StringUtility.Contact(_presentFightPower >= (ulong)cfg.recommendFightPower ? Language.Get("RolePromoteMoreFight") : Language.Get("RolePromoteBetterFight"),
|
| | | _presentFightPower >= (ulong)cfg.recommendFightPower ? cfg.strongerFightPower : cfg.recommendFightPower);
|
| | | strongerFightPowerTxt.color = _presentFightPower >= (ulong)cfg.recommendFightPower ?
|
| | | UIHelper.GetUIColor(TextColType.Red) : UIHelper.GetUIColor(TextColType.Green, true);
|
| | | if (!highestStage)
|
| | | {
|
| | | if (funcType == (int)FuncPowerType.Human
|
| | | || funcType == (int)FuncPowerType.Demon
|
| | | || funcType == (int)FuncPowerType.Fairy)
|
| | | {
|
| | | targetTxt.text = StringUtility.Contact(cfg.desc, "(", UIHelper.GetTextColorByItemColor(presentTargetValue > 0 ? TextColType.Green : TextColType.Red,
|
| | | presentTargetValue.ToString()), "/", 1, ")");
|
| | | }
|
| | | else
|
| | | {
|
| | | targetTxt.text = StringUtility.Contact(cfg.desc, "(", UIHelper.GetTextColorByItemColor(presentTargetValue >= cfg.targetValue ? TextColType.Green : TextColType.Red,
|
| | | presentTargetValue.ToString()), "/", cfg.targetValue, ")");
|
| | | }
|
| | | }
|
| | | var progress = Mathf.Clamp01((float)fightPower / config.recommendFightPower);
|
| | | var percent = (int)(progress * 100);
|
| | |
|
| | | reachTxtObj.SetActive(highestStage);
|
| | | reachImgObj.SetActive(highestStage);
|
| | | targetTxt.gameObject.SetActive(!highestStage);
|
| | | strongerBtn.gameObject.SetActive(!highestStage);
|
| | | m_ContainerStrongerLabel.gameObject.SetActive(!highestStage);
|
| | | m_Slider.value = progress;
|
| | | m_Progress.text = StringUtility.Contact(percent, "%");
|
| | |
|
| | | strongerBtn.onClick.AddListener(() =>
|
| | | var state = model.GetPromoteState(percent);
|
| | | switch (state)
|
| | | {
|
| | | WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)cfg.OpenUI);
|
| | | case 0:
|
| | | m_State.SetSprite("XT_WYBQ_3");
|
| | | break;
|
| | | case 1:
|
| | | m_State.SetSprite("XT_WYBQ_2");
|
| | | break;
|
| | | case 2:
|
| | | m_State.SetSprite("XT_WYBQ_1");
|
| | | break;
|
| | | }
|
| | | m_State.SetNativeSize();
|
| | |
|
| | | m_Goto.onClick.AddListener(() =>
|
| | | {
|
| | | WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.OpenUI);
|
| | | });
|
| | |
|
| | | }
|