using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class FamilyZhenfaWin : Window
|
{
|
[SerializeField] RotationTween zhenyanTween; //升级时阵眼旋转
|
[SerializeField] List<Button> zhenyanBtns; //阵眼按钮
|
[SerializeField] List<Image> zhenyanSelectImgs; //阵眼图片
|
[SerializeField] List<Transform> zhenyanLvObjs;
|
[SerializeField] List<Text> zhenyanLvTexts;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] Button close;
|
[SerializeField] Text zhenyanName;
|
[SerializeField] List<Text> attrList;
|
[SerializeField] List<Transform> attrAddObjList;
|
[SerializeField] List<Text> attrAddNumList;
|
[SerializeField] List<ItemCell> useItems;
|
[SerializeField] IntensifySmoothSlider ExpSlider;
|
[SerializeField] Text processTxt;
|
[SerializeField] Text lvTxt;
|
[SerializeField] Button upgradeBtn;
|
[SerializeField] ToggleButton tenUpgrade;
|
[SerializeField] Transform operationObj;
|
[SerializeField] Transform maxObj;
|
FairyNewModel familyModel { get { return ModelCenter.Instance.GetModel<FairyNewModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
protected override void BindController()
|
{
|
tenUpgrade.isOn = false;
|
}
|
|
protected override void AddListeners()
|
{
|
|
close.AddListener(CloseClick);
|
tenUpgrade.SetListener(ChooseTen);
|
for (int i = 0; i < zhenyanBtns.Count; i++)
|
{
|
int index = i;
|
zhenyanBtns[i].SetListener(() => { familyModel.selectZhenfaType = index; });
|
}
|
upgradeBtn.SetListener(OnUpgrade);
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += Scroller_OnRefreshCell;
|
familyModel.UpdateFamilyZhenfaEvent += OnRefreshZhenfa;
|
familyModel.OnSelectZhenfaEvent += OnSelectZhenfa;
|
Display();
|
}
|
|
private void Scroller_OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as FamilyZhenfaCell;
|
_cell.Display(cell.index);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= Scroller_OnRefreshCell;
|
familyModel.UpdateFamilyZhenfaEvent -= OnRefreshZhenfa;
|
familyModel.OnSelectZhenfaEvent -= OnSelectZhenfa;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
|
|
|
void OnRefreshZhenfa()
|
{
|
zhenyanTween.Play();
|
Display();
|
}
|
|
private void ChooseTen()
|
{
|
tenUpgrade.isOn = !tenUpgrade.isOn;
|
int lv = familyModel.GetZhenyanLV(familyModel.selectZhenfaType + 1);
|
int exp = familyModel.GetZhenyanExp(familyModel.selectZhenfaType + 1);
|
int needExp = FamilyZhenfaConfig.GetConfig(familyModel.selectZhenfaType + 1, lv).LVUpNeedExp;
|
|
int selectItemID = familyModel.useItemsDict[familyModel.selectZhenfaType + 1][familyModel.selectItemIndex];
|
var itemCount = packModel.GetItemCountByID(PackType.Item, selectItemID);
|
itemCount = tenUpgrade.isOn ? Mathf.Min(10, itemCount) : Mathf.Min(itemCount, 1);
|
int addExp = ItemConfig.Get(selectItemID).EffectValueA1 * itemCount;
|
processTxt.text = string.Format("{0}/{1} +{2}", exp, needExp, UIHelper.AppendColor(TextColType.Green, addExp.ToString()));
|
}
|
|
void Display()
|
{
|
if (familyModel.lvUpSuccess)
|
{
|
scroller.Refresh();
|
foreach (var item in familyModel.allAttrsDict)
|
{
|
scroller.AddCell(ScrollerDataType.Header, item.Key);
|
}
|
scroller.Restart();
|
}
|
else
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
DisplayZhenyan();
|
}
|
|
void DisplayZhenyan()
|
{
|
for (int i = 0; i < zhenyanSelectImgs.Count; i++)
|
{
|
zhenyanSelectImgs[i].SetActive(familyModel.selectZhenfaType == i);
|
int showlv = familyModel.GetZhenyanLV(i + 1);
|
zhenyanLvObjs[i].SetActive(showlv != 0);
|
zhenyanLvTexts[i].text = showlv.ToString();
|
|
}
|
int lv = familyModel.GetZhenyanLV(familyModel.selectZhenfaType + 1);
|
zhenyanName.text = Language.Get("zhenyanname" + (familyModel.selectZhenfaType + 1)) + Language.Get("zhenfa1", lv);
|
|
var curAttrList = familyModel.GetAttrsByType(familyModel.selectZhenfaType + 1);
|
var nextAttrList = familyModel.GetNextAttrsByType(familyModel.selectZhenfaType + 1);
|
List<int> showAttrList = new List<int>();
|
foreach (var id in curAttrList.Keys)
|
{
|
showAttrList.Add(id);
|
}
|
foreach (var id in nextAttrList.Keys)
|
{
|
if (!showAttrList.Contains(id))
|
{
|
showAttrList.Add(id);
|
}
|
}
|
|
for (int i = 0; i < attrList.Count; i++)
|
{
|
if (i < showAttrList.Count)
|
{
|
int attrID = showAttrList[i];
|
attrList[i].SetActive(true);
|
attrList[i].text = string.Format("{0}{1}{2}", PlayerPropertyConfig.Get(attrID).ShowName,
|
Language.Get("L5000"),
|
curAttrList.ContainsKey(attrID) ? PlayerPropertyConfig.GetValueDescription(attrID, curAttrList[attrID]):
|
PlayerPropertyConfig.GetValueDescription(attrID, 0));
|
|
if (nextAttrList.ContainsKey(attrID))
|
{
|
attrAddObjList[i].SetActive(true);
|
attrAddNumList[i].text = PlayerPropertyConfig.GetValueDescription(attrID, nextAttrList[attrID]);
|
}
|
else
|
{
|
attrAddObjList[i].SetActive(false);
|
}
|
}
|
else
|
{
|
attrList[i].SetActive(false);
|
}
|
}
|
|
if (nextAttrList.Count == 0) //满级
|
{
|
operationObj.SetActive(false);
|
maxObj.SetActive(true);
|
for(int i = 0; i < useItems.Count; i++)
|
{
|
useItems[i].SetActive(false);
|
}
|
}
|
else
|
{
|
operationObj.SetActive(true);
|
maxObj.SetActive(false);
|
int exp = familyModel.GetZhenyanExp(familyModel.selectZhenfaType + 1);
|
int needExp = FamilyZhenfaConfig.GetConfig(familyModel.selectZhenfaType + 1, lv).LVUpNeedExp;
|
ExpSlider.value = Mathf.Min(1, (float)exp/needExp);
|
|
int selectItemID = familyModel.useItemsDict[familyModel.selectZhenfaType + 1][familyModel.selectItemIndex];
|
var itemCount = packModel.GetItemCountByID(PackType.Item, selectItemID);
|
itemCount = tenUpgrade.isOn ? Mathf.Min(10, itemCount) : Mathf.Min(itemCount, 1);
|
int addExp = ItemConfig.Get(selectItemID).EffectValueA1 * itemCount;
|
processTxt.text = string.Format("{0}/{1} +{2}", exp, needExp, UIHelper.AppendColor(TextColType.Green, addExp.ToString()));
|
lvTxt.text = lv.ToString();
|
|
for (int i = 0; i < useItems.Count; i++)
|
{
|
if (i < familyModel.useItemsDict[familyModel.selectZhenfaType + 1].Count)
|
{
|
int index = i;
|
useItems[i].SetActive(true);
|
int itemID = familyModel.useItemsDict[familyModel.selectZhenfaType + 1][i];
|
useItems[i].Init(new ItemCellModel(itemID, false, 1));
|
useItems[i].countText.SetActive(true);
|
useItems[i].countText.text = packModel.GetItemCountByID(PackType.Item, itemID).ToString();
|
|
useItems[i].FindComponent("Image", "select").SetActive(familyModel.selectItemIndex == i);
|
useItems[i].button.SetListener(() => {
|
if (familyModel.selectItemIndex == index)
|
{
|
ItemTipUtility.Show(itemID);
|
}
|
else
|
{
|
familyModel.selectItemIndex = index;
|
for (int j = 0; j < useItems.Count; j++)
|
{
|
useItems[j].FindComponent("Image", "select").SetActive(familyModel.selectItemIndex == j);
|
}
|
|
int selectItemID1 = familyModel.useItemsDict[familyModel.selectZhenfaType + 1][familyModel.selectItemIndex];
|
var itemCount1 = packModel.GetItemCountByID(PackType.Item, selectItemID1);
|
itemCount1 = tenUpgrade.isOn ? Mathf.Min(10, itemCount1) : Mathf.Min(itemCount1, 1);
|
int addExp1 = ItemConfig.Get(selectItemID1).EffectValueA1 * itemCount1;
|
processTxt.text = string.Format("{0}/{1} +{2}", exp, needExp, UIHelper.AppendColor(TextColType.Green, addExp1.ToString()));
|
|
}
|
});
|
}
|
else
|
{
|
useItems[i].SetActive(false);
|
}
|
}
|
}
|
|
}
|
|
void OnSelectZhenfa()
|
{
|
DisplayZhenyan();
|
}
|
|
void OnUpgrade()
|
{
|
var pack = new CA614_tagCMFamilyZhenfaLVUP();
|
pack.ZhenfaType = (byte)(familyModel.selectZhenfaType + 1);
|
pack.ItemID = (uint)familyModel.useItemsDict[familyModel.selectZhenfaType + 1][familyModel.selectItemIndex];
|
var itemCount = packModel.GetItemCountByID(PackType.Item, (int)pack.ItemID);
|
if (itemCount == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("NotEnoughMaterial");
|
return;
|
}
|
pack.ItemCount = tenUpgrade.isOn ? (ushort)Mathf.Min(10, itemCount) : (ushort)1;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
}
|
}
|