//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, October 11, 2017
|
//--------------------------------------------------------
|
|
using EnhancedUI.EnhancedScroller;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text.RegularExpressions;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class RealmDungeonWin : Window
|
{
|
[SerializeField] Text additionAttr1;
|
[SerializeField] Text additionAttr2;
|
|
[SerializeField] Text additionTip1;
|
|
[SerializeField] Button inspireBtn;
|
[SerializeField] Text inspireBtnText;
|
|
[SerializeField] ScrollerController helpCtrl;
|
|
private int surplusTime = 0;
|
|
private float m_Time = 0;
|
|
private bool hasInspire = false;
|
|
[SerializeField] Text destText;
|
|
RealmModel m_Model;
|
RealmModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<RealmModel>());
|
}
|
}
|
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
private bool OnGetDynamicSize(ScrollerDataType type, int index, out float height)
|
{
|
height = 0;
|
PlayerRealmData.RealmHelpData data = PlayerDatas.Instance.realm.realmHelpList[index];
|
int additionValue1 = 0; int additionValue2 = 0;
|
switch ((PlayerRealmData.RealmHelpType)data.type)
|
{
|
case PlayerRealmData.RealmHelpType.Self:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.Normal:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.High:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
additionValue2 = model.GetRealmHelperAttr(data.type, 1);
|
break;
|
}
|
if (data.type == 0)
|
{
|
destText.text = Language.Get("RealmWin_Bewrite_19", additionValue1);
|
}
|
else
|
{
|
destText.text = Language.Get("RealmWin_Bewrite_20", data.name, additionValue1);
|
if (additionValue2 != 0)
|
{
|
destText.text += Language.Get("RealmWin_Bewrite_22", additionValue2);
|
}
|
}
|
if (destText.font == null)
|
{
|
destText.font = FontUtility.preferred;
|
}
|
height = destText.cachedTextGeneratorForLayout.GetPreferredHeight(destText.text, destText.GetGenerationSettings(new Vector2(destText.rectTransform.rect.size.x, 0.0f))) / destText.pixelsPerUnit;
|
return true;
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
int index = cell.index;
|
if (index < PlayerDatas.Instance.realm.realmHelpList.Count)
|
{
|
PlayerRealmData.RealmHelpData data = PlayerDatas.Instance.realm.realmHelpList[index];
|
int additionValue1 = 0; int additionValue2 = 0;
|
switch ((PlayerRealmData.RealmHelpType)data.type)
|
{
|
case PlayerRealmData.RealmHelpType.Self:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.Normal:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.High:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
additionValue2 = model.GetRealmHelperAttr(data.type, 1);
|
break;
|
}
|
Text text = cell.GetComponent<Text>();
|
|
if (data.type == 0)
|
{
|
text.text = Language.Get("RealmWin_Bewrite_19", additionValue1);
|
}
|
else
|
{
|
text.text = Language.Get("RealmWin_Bewrite_20", data.name, additionValue1);
|
if (additionValue2 != 0)
|
{
|
text.text += Language.Get("RealmWin_Bewrite_22", additionValue2);
|
}
|
}
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
inspireBtn.onClick.AddListener(OnInspireBtn);
|
helpCtrl.OnRefreshCell += OnRefreshCell;
|
helpCtrl.OnGetDynamicSize += OnGetDynamicSize;
|
}
|
|
private void OnInspireBtn()
|
{
|
if (!hasInspire)
|
{
|
CA508_tagCMDoFBAction inspirepack = new CA508_tagCMDoFBAction();
|
inspirepack.ActionType = 1;
|
inspirepack.ActionInfo = 0;
|
GameNetSystem.Instance.SendInfo(inspirepack);
|
hasInspire = true;
|
surplusTime = model.realmInspireCoolDownTime;
|
RefreshInspireBtnText();
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerRealmData.OnRefreshHelpInfo += OnRefreshHelpInfo;
|
surplusTime = 0;
|
hasInspire = false;
|
InitData();
|
}
|
|
private float GetHeight(int _index = 0)
|
{
|
PlayerRealmData.RealmHelpData data = PlayerDatas.Instance.realm.realmHelpList[_index];
|
int additionValue1 = 0; int additionValue2 = 0;
|
switch ((PlayerRealmData.RealmHelpType)data.type)
|
{
|
case PlayerRealmData.RealmHelpType.Self:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.Normal:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.High:
|
additionValue1 = model.GetRealmHelperAttr(data.type, 0) / 100;
|
additionValue2 = model.GetRealmHelperAttr(data.type, 1);
|
break;
|
}
|
string _value = string.Empty;
|
if (data.type == 0)
|
{
|
_value = Language.Get("RealmWin_Bewrite_19", additionValue1);
|
}
|
else
|
{
|
_value = Language.Get("RealmWin_Bewrite_20", data.name, additionValue1);
|
if (additionValue2 != 0)
|
{
|
_value += Language.Get("RealmWin_Bewrite_22", additionValue2);
|
}
|
}
|
if (destText.font == null)
|
{
|
destText.font = FontUtility.preferred;
|
}
|
return destText.cachedTextGeneratorForLayout.GetPreferredHeight(_value, destText.GetGenerationSettings(new Vector2(destText.rectTransform.rect.size.x, 0.0f))) / destText.pixelsPerUnit;
|
}
|
|
private void OnRefreshHelpInfo()
|
{
|
int addtionValue1 = 0;
|
int addtionValue2 = 0;
|
var list = PlayerDatas.Instance.realm.realmHelpList;
|
helpCtrl.lockType = list.Count > 2 ? EnhanceLockType.KeepVertical2 : EnhanceLockType.LockVerticalTop;
|
helpCtrl.Refresh();
|
for (int i = 0; i < list.Count; i++)
|
{
|
PlayerRealmData.RealmHelpData data = list[i];
|
switch ((PlayerRealmData.RealmHelpType)data.type)
|
{
|
case PlayerRealmData.RealmHelpType.Self:
|
addtionValue1 += model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.Normal:
|
addtionValue1 += model.GetRealmHelperAttr(data.type, 0) / 100;
|
break;
|
case PlayerRealmData.RealmHelpType.High:
|
addtionValue1 += model.GetRealmHelperAttr(data.type, 0) / 100;
|
addtionValue2 += model.GetRealmHelperAttr(data.type, 1);
|
break;
|
}
|
helpCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
helpCtrl.Restart();
|
if (list.Count > 2)
|
{
|
helpCtrl.JumpIndex(-GetHeight() - 10, 0.3f, EnhancedScroller.TweenType.linear);
|
}
|
|
addtionValue1 = Mathf.Min(addtionValue1, model.realmHoleLimit / 100);
|
if (addtionValue1 >= model.realmHoleLimit / 100)
|
{
|
surplusTime = 0;
|
hasInspire = false;
|
inspireBtnText.text = Language.Get("RealmWin_Bewrite_18");
|
inspireBtn.interactable = false;
|
}
|
else
|
{
|
inspireBtn.interactable = true;
|
RefreshInspireBtnText();
|
}
|
|
additionAttr1.text = StringUtility.Contact(Language.Get("RealmWin_Bewrite_44"), "<color=#109d06>", addtionValue1, "%", "</color>");
|
additionAttr2.text = StringUtility.Contact(Language.Get("RealmWin_Bewrite_21"), "<color=#109d06>", addtionValue2, "</color>");
|
|
additionTip1.text = Language.Get("RealmWin_Bewrite_23", model.realmHoleLimit / 100);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
PlayerRealmData.OnRefreshHelpInfo -= OnRefreshHelpInfo;
|
}
|
|
protected override void LateUpdate()
|
{
|
if (hasInspire)
|
{
|
m_Time += Time.deltaTime;
|
int _surplus = Mathf.CeilToInt(model.realmInspireCoolDownTime - m_Time);
|
_surplus = Mathf.Max(_surplus, 0);
|
if (_surplus != surplusTime)
|
{
|
surplusTime = _surplus;
|
RefreshInspireBtnText();
|
}
|
if (m_Time >= model.realmInspireCoolDownTime)
|
{
|
hasInspire = false;
|
m_Time = 0;
|
}
|
}
|
}
|
#endregion
|
|
private void InitData()
|
{
|
RefreshInspireBtnText();
|
OnRefreshHelpInfo();
|
}
|
|
private void RefreshInspireBtnText()
|
{
|
if (surplusTime == 0)
|
{
|
inspireBtnText.text = Language.Get("RealmWin_Bewrite_16");
|
}
|
else
|
{
|
inspireBtnText.text = Language.Get("RealmWin_Bewrite_17", surplusTime);
|
}
|
}
|
|
}
|
|
}
|
|
|
|
|