using vnxbqy.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
class WeddingRingWin : ILWindow
|
{
|
|
Text rankLVTxt;
|
List<Image> starts = new List<Image>();
|
Button autoUpgrade;
|
Button stopUpgrade;
|
Button upgradeBtn;
|
ItemCell itemCell;
|
Text itemCnt;
|
Text fightPower;
|
Text sliderNum;
|
IntensifySmoothSlider expSlider;
|
List<Transform> baseProp = new List<Transform>();
|
List<Transform> couplesProp = new List<Transform>();
|
Transform lvupObj;
|
Transform lockObj;
|
Text tip;
|
|
List<int> baseProType = new List<int>() { 6, 7, 8};
|
List<int> couplesPropType = new List<int>() { 50, 51, 69, 28 };
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModelEx<PackModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
rankLVTxt = proxy.GetWidgtEx<Text>("lv");
|
for (int i = 0; i < 10; i++)
|
{
|
starts.Add(proxy.GetWidgtEx<Image>("starBright" + i));
|
}
|
autoUpgrade = proxy.GetWidgtEx<Button>("AutoUpgrade");
|
stopUpgrade = proxy.GetWidgtEx<Button>("StopUpgrade");
|
upgradeBtn = proxy.GetWidgtEx<Button>("Upgrade");
|
itemCell = proxy.GetWidgtEx<ItemCell>("itemcell");
|
itemCnt = proxy.GetWidgtEx<Text>("itemcnt");
|
fightPower = proxy.GetWidgtEx<Text>("fightPower");
|
sliderNum = proxy.GetWidgtEx<Text>("ExpNum");
|
expSlider = proxy.GetWidgtEx<IntensifySmoothSlider>("ExpSlider");
|
for (int i = 0; i < 3; i++)
|
{
|
baseProp.Add(proxy.GetWidgtEx<Transform>("prop" + i));
|
}
|
for (int i = 0; i < 4; i++)
|
{
|
couplesProp.Add(proxy.GetWidgtEx<Transform>("propEx" + i));
|
}
|
|
lvupObj = proxy.GetWidgtEx<Transform>("lvupobj");
|
lockObj = proxy.GetWidgtEx<Transform>("lockobj");
|
tip = proxy.GetWidgtEx<Text>("tip");
|
}
|
|
protected override void AddListeners()
|
{
|
upgradeBtn.SetListener(TrainOne);
|
autoUpgrade.SetListener(AutoTrain);
|
stopUpgrade.SetListener(StopAuto);
|
}
|
|
protected override void OnPreOpen()
|
{
|
UnLockRing();
|
packModel.refreshItemCountEvent += RefreshItemCount;
|
WeddingModel.Instance.OnLoveRingEvent += OnLoveRingEvent;
|
WeddingModel.Instance.OnLoveRingStarUPEvent += OnStarChange;
|
Display();
|
}
|
|
|
|
protected override void OnPreClose()
|
{
|
packModel.refreshItemCountEvent -= RefreshItemCount;
|
WeddingModel.Instance.OnLoveRingEvent -= OnLoveRingEvent;
|
WeddingModel.Instance.OnLoveRingStarUPEvent -= OnStarChange;
|
}
|
#endregion
|
|
|
void UnLockRing()
|
{
|
var count = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.unLockRingItemID);
|
if (count > 0)
|
{
|
var pack = new IL_CB317_tagCMLoveRingUnlock();
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
|
private void RefreshItemCount(PackType type, int index, int id)
|
{
|
if (id == WeddingModel.Instance.ringLVUPItemID)
|
{
|
OnItemRefresh();
|
}
|
}
|
|
void Display()
|
{
|
OnRingChange();
|
var count = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.ringLVUPItemID);
|
var model = new ItemCellModel(WeddingModel.Instance.ringLVUPItemID, false, (ulong)count);
|
itemCell.Init(model);
|
itemCell.button.SetListener(() => {
|
ItemTipUtility.Show(WeddingModel.Instance.ringLVUPItemID);
|
});
|
|
tip.SetActiveIL(WeddingModel.Instance.m_CoupleID == 0);
|
}
|
|
void OnRingChange()
|
{
|
rankLVTxt.text = Language.Get("LoveRing2", WeddingModel.Instance.m_ClassLV, WeddingModel.Instance.m_StarLV);
|
for (int i = 0; i < starts.Count; i++)
|
{
|
starts[i].SetActiveIL(i < WeddingModel.Instance.m_StarLV);
|
}
|
lvupObj.SetActiveIL(WeddingModel.Instance.m_ClassLV > 0);
|
lockObj.SetActiveIL(WeddingModel.Instance.m_ClassLV == 0);
|
var config = ILLoveRingConfig.GetRingConfigByLVStar(WeddingModel.Instance.m_ClassLV, WeddingModel.Instance.m_StarLV);
|
if (config == null)
|
{
|
}
|
else
|
{
|
itemCnt.text = ItemConfig.Get(WeddingModel.Instance.ringLVUPItemID).ItemName + "x" + config.useCnt;
|
|
}
|
|
DisplayExpSlider();
|
|
WeddingModel.Instance.RefreshRingUPAttr();
|
fightPower.text = UIHelper.ReplaceLargeArtNum(UIHelper.GetFightPower(WeddingModel.Instance.ringLVUPAttr));
|
var nextAttr = WeddingModel.Instance.GetNextTrainAttr();
|
for (int i = 0; i < baseProType.Count; i++)
|
{
|
ShowProp(baseProp[i], nextAttr, baseProType[i]);
|
}
|
|
for (int i = 0; i < couplesPropType.Count; i++)
|
{
|
ShowProp(couplesProp[i], nextAttr, couplesPropType[i]);
|
}
|
|
ShowButton();
|
}
|
|
void ShowProp(Transform prop, Dictionary<int, int> nextAttr, int attrType)
|
{
|
var attrName = prop.Find("Text").GetComponent<Text>();
|
var attrValue = prop.Find("Text (1)").GetComponent<Text>();
|
var attrUpImg = prop.Find("Image").GetComponent<Image>();
|
var attrUpValue = prop.Find("Text (2)").GetComponent<Text>();
|
attrName.SetActiveIL(false);
|
attrValue.SetActiveIL(false);
|
attrUpImg.SetActiveIL(false);
|
attrUpValue.SetActiveIL(false);
|
if (nextAttr.ContainsKey(attrType) || WeddingModel.Instance.ringLVUPAttr.ContainsKey(attrType))
|
{
|
attrName.SetActiveIL(true);
|
attrValue.SetActiveIL(true);
|
attrName.text = PlayerPropertyConfig.Get(attrType).ShowName + ": ";
|
if (!WeddingModel.Instance.ringLVUPAttr.ContainsKey(attrType))
|
{
|
attrValue.text = PlayerPropertyConfig.GetValueDescription(attrType, 0);
|
}
|
else
|
{
|
attrValue.text = PlayerPropertyConfig.GetValueDescription(attrType, WeddingModel.Instance.ringLVUPAttr[attrType]);
|
}
|
}
|
if (nextAttr.ContainsKey(attrType))
|
{
|
attrUpImg.SetActiveIL(true);
|
attrUpValue.SetActiveIL(true);
|
attrUpValue.text = PlayerPropertyConfig.GetValueDescription(attrType, nextAttr[attrType]);
|
|
}
|
}
|
|
bool isUpdate = false;
|
private void DisplayExpSlider()
|
{
|
var config = ILLoveRingConfig.GetRingConfigByLVStar(WeddingModel.Instance.m_ClassLV, WeddingModel.Instance.m_StarLV);
|
if (config == null) return;
|
|
if (config.NeedEatCount == 0)
|
{
|
sliderNum.text = Language.Get("Z1029");
|
expSlider.stage = WeddingModel.Instance.m_StarLV;
|
expSlider.value = 1f;
|
expSlider.delay = 0f;
|
expSlider.ResetStage();
|
}
|
else
|
{
|
int exp = (int)WeddingModel.Instance.m_EatCount*10;
|
int expMax = config.NeedEatCount*10;
|
sliderNum.text = exp + "/" + expMax;
|
expSlider.delay = isUpdate ? 0.1f : 0f;
|
expSlider.stage = WeddingModel.Instance.m_StarLV;
|
expSlider.value = (float)Math.Round((float)exp / expMax, 2, MidpointRounding.AwayFromZero);
|
isUpdate = false;
|
}
|
}
|
|
|
void OnItemRefresh()
|
{
|
itemCell.countText.text = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.ringLVUPItemID).ToString();
|
}
|
|
void OnLoveRingEvent()
|
{
|
isUpdate = true;
|
OnRingChange();
|
waitServer = false;
|
}
|
|
void OnStarChange()
|
{
|
StopAuto();
|
if (WeddingModel.Instance.m_ClassLV == 1 && WeddingModel.Instance.m_StarLV == 1)
|
return;
|
WindowCenter.Instance.OpenIL<WeddingRingStarSuccessWin>();
|
}
|
|
//淬炼时
|
private void ShowButtonState(bool autoOn)
|
{
|
if (WeddingModel.Instance.GetTrainCount() == 0)
|
{
|
autoUpgrade.SetActiveIL(false);
|
stopUpgrade.SetActiveIL(false);
|
upgradeBtn.SetActiveIL(false);
|
}
|
else
|
{
|
autoUpgrade.SetActiveIL(!autoOn);
|
stopUpgrade.SetActiveIL(autoOn);
|
}
|
autoCnt = 0;
|
}
|
|
//打开界面时
|
private void ShowButton()
|
{
|
if (autoCnt > 0)
|
return;
|
upgradeBtn.SetActiveIL(true);
|
autoUpgrade.SetActiveIL(true);
|
stopUpgrade.SetActiveIL(false);
|
|
if (WeddingModel.Instance.GetTrainCount() == 0)
|
{
|
upgradeBtn.SetActiveIL(false);
|
autoUpgrade.SetActiveIL(false);
|
stopUpgrade.SetActiveIL(false);
|
|
}
|
}
|
|
|
private int GetNextLVNeedCnt()
|
{
|
var config = ILLoveRingConfig.GetRingConfigByLVStar(WeddingModel.Instance.m_ClassLV, WeddingModel.Instance.m_StarLV);
|
int useCnt = WeddingModel.Instance.GetTrainCount();
|
int useAllCnt = Mathf.CeilToInt((config.NeedEatCount - WeddingModel.Instance.m_EatCount) / (float)useCnt) * useCnt;
|
|
var nextConfig = ILLoveRingConfig.Get(ILLoveRingConfig.GetIndex(WeddingModel.Instance.m_ClassLV, WeddingModel.Instance.m_StarLV) + 1);
|
if (nextConfig.NeedEatCount == 0)
|
{
|
// 下一阶满级,只扣剩余所需不超过单次的材料数量
|
useAllCnt = config.NeedEatCount - (int)WeddingModel.Instance.m_EatCount;
|
}
|
|
return useAllCnt;
|
}
|
|
|
private void AutoTrain()
|
{
|
autoCnt = 0;
|
int number = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.ringLVUPItemID);
|
int useCnt = WeddingModel.Instance.GetTrainCount();
|
|
if (useCnt == 0)
|
{
|
ScrollTip.ShowTip(Language.Get("Z1029"));
|
return;
|
}
|
|
if (useCnt > number)
|
{
|
ScrollTip.ShowTip(UIHelper.AppendColor(TextColType.Red, Language.Get("Material101")));
|
return;
|
}
|
ShowButtonState(true);
|
SnxxzGame.Instance.StartCoroutine(OnAutoTrain());
|
|
|
}
|
|
bool waitServer = false; //等待服务器回报后才可继续发包
|
int autoCnt = 0; //用于发包数量加速
|
IEnumerator OnAutoTrain()
|
{
|
int useSingleCnt = 0;
|
int useMultiCnt = 0;
|
int number = 0;
|
while (true)
|
{
|
//不超过阶的 仙玉消耗
|
//等待服务端回包
|
if (waitServer)
|
{
|
yield return new WaitForSeconds(0.1f);
|
continue;
|
}
|
autoCnt++;
|
useSingleCnt = WeddingModel.Instance.GetTrainCount();
|
useMultiCnt = Mathf.Min(20, Mathf.Max(autoCnt - 3, 1)) * useSingleCnt;
|
LimitedTimeLuxuryGiftModel.Instance.IsItemIdShow(14, WeddingModel.Instance.ringLVUPItemID, useMultiCnt, 1, 0);
|
if (useMultiCnt > GetNextLVNeedCnt())
|
{
|
useMultiCnt = GetNextLVNeedCnt();
|
}
|
|
number = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.ringLVUPItemID);
|
if (useMultiCnt > number)
|
{
|
if (useSingleCnt > number)
|
{
|
ScrollTip.ShowTip(UIHelper.AppendColor(TextColType.Red, Language.Get("Material101")));
|
ShowButtonState(false);
|
yield break;
|
}
|
|
useMultiCnt = useSingleCnt;
|
autoCnt = 1;
|
}
|
|
SendUpgrade(useMultiCnt);
|
|
waitServer = true;
|
yield return new WaitForSeconds(0.5f);
|
}
|
}
|
|
void SendUpgrade(int useCnt)
|
{
|
var pack = new IL_CB318_tagCMLoveRingUp();
|
pack.UseItemCnt = (uint)useCnt;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
private void StopAuto()
|
{
|
autoCnt = 0;
|
waitServer = false;
|
SnxxzGame.Instance.StopAllCoroutines();
|
ShowButtonState(false);
|
}
|
|
|
void TrainOne()
|
{
|
var singleCnt = WeddingModel.Instance.GetTrainCount();
|
if (singleCnt == 0)
|
{
|
ScrollTip.ShowTip(Language.Get("Z1029"));
|
return;
|
}
|
|
var hasCnt = packModel.GetItemCountByID(PackType.Item, WeddingModel.Instance.ringLVUPItemID);
|
|
if (singleCnt > hasCnt)
|
{
|
ScrollTip.ShowTip(UIHelper.AppendColor(TextColType.Red, Language.Get("Material101")));
|
return;
|
}
|
LimitedTimeLuxuryGiftModel.Instance.IsItemIdShow(14, WeddingModel.Instance.ringLVUPItemID, singleCnt,1, 0);
|
SendUpgrade(singleCnt);
|
}
|
|
}
|