//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, July 18, 2018
|
//--------------------------------------------------------
|
|
using Spine;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
//砍树获得装备界面
|
namespace vnxbqy.UI
|
{
|
public class EquipExchangeWin : Window
|
{
|
[SerializeField] EquipExchangeCell oldEquipObj;
|
[SerializeField] EquipExchangeCell newEquipObj;
|
[SerializeField] List<Image> baseAttrStates;
|
[SerializeField] List<Image> fightAttrStates;
|
[SerializeField] Text fightPowerNum;
|
[SerializeField] Toggle decomposeCheck;
|
[SerializeField] Button decomposeButton;
|
[SerializeField] Button exchangeButton;
|
[SerializeField] Button putonButton;
|
[SerializeField] Button closeButton;
|
|
|
ItemModel oldEquip;
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
CutTreeModel cutTreeModel { get { return ModelCenter.Instance.GetModel<CutTreeModel>(); } }
|
EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
AutoCutTreeModel autoCutTreeModel { get { return ModelCenter.Instance.GetModel<AutoCutTreeModel>(); } }
|
#region Built-in
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
decomposeCheck.onValueChanged.AddListener((bool isOn) => {
|
LocalSave.SetBool("floorEDecomp" + PlayerDatas.Instance.baseData.PlayerID, isOn);
|
});
|
decomposeButton.AddListener(DecomposeEquip);
|
exchangeButton.AddListener(ExchangeEquip);
|
putonButton.AddListener(() =>
|
{
|
cutTreeModel.SendCutTreeEquipOP(new byte[] { (byte)cutTreeModel.selectFloorEquip.gridIndex }, 1);
|
CloseClick();
|
});
|
closeButton.AddListener(CloseClick);
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
decomposeCheck.isOn = LocalSave.GetBool("floorEDecomp" + PlayerDatas.Instance.baseData.PlayerID);
|
packModel.refreshItemCountEvent += OnRefreshItem;
|
Display();
|
if (cutTreeModel.newEquipIDToGuideID.ContainsKey(cutTreeModel.selectFloorEquip.itemId))
|
{
|
if (!NewBieCenter.Instance.IsGuideCompleted(cutTreeModel.newEquipIDToGuideID[cutTreeModel.selectFloorEquip.itemId]))
|
NewBieCenter.Instance.StartNewBieGuideEx(cutTreeModel.newEquipIDToGuideID[cutTreeModel.selectFloorEquip.itemId]);
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
packModel.refreshItemCountEvent -= OnRefreshItem;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
#endregion
|
|
void Display()
|
{
|
oldEquip = GetEquipByFloorEquip();
|
int oldScore = 0;
|
if (oldEquip == null)
|
{
|
oldEquipObj.SetActive(false);
|
newEquipObj.SetActive(true);
|
newEquipObj.Display(cutTreeModel.selectFloorEquip);
|
decomposeButton.SetActive(false);
|
exchangeButton.SetActive(false);
|
putonButton.SetActive(true);
|
decomposeCheck.SetActive(false);
|
oldScore = 0;
|
}
|
else
|
{
|
oldEquipObj.SetActive(true);
|
newEquipObj.SetActive(true);
|
oldEquipObj.Display(oldEquip);
|
newEquipObj.Display(cutTreeModel.selectFloorEquip);
|
decomposeButton.SetActive(true);
|
exchangeButton.SetActive(true);
|
putonButton.SetActive(false);
|
decomposeCheck.SetActive(true);
|
oldScore = oldEquip.score;
|
|
}
|
ShowAttrState();
|
int showFightPower = EquipFightPower.Instance.GetFightPowerBuyScore(cutTreeModel.selectFloorEquip.score - oldScore);
|
|
if (showFightPower < 0)
|
{
|
fightPowerNum.text = showFightPower.ToString();
|
fightPowerNum.color = UIHelper.GetUIColor(TextColType.Red, true);
|
}
|
else
|
{
|
fightPowerNum.text = "+" + showFightPower;
|
fightPowerNum.color = UIHelper.GetUIColor(TextColType.Green, true);
|
}
|
}
|
|
|
void ShowAttrState()
|
{
|
if (oldEquip == null)
|
{
|
for (int i = 0; i < baseAttrStates.Count; i++)
|
{
|
var list = equipModel.GetEquipBaseValues(cutTreeModel.selectFloorEquip);
|
if (list == null || i >= list.Count)
|
{
|
baseAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
baseAttrStates[i].SetActive(true);
|
baseAttrStates[i].SetSprite("EquipUpIcon");
|
baseAttrStates[i].SetNativeSize();
|
}
|
}
|
|
for (int i = 0; i < fightAttrStates.Count; i++)
|
{
|
var list = equipModel.GetEquipFightValues(cutTreeModel.selectFloorEquip);
|
if (list == null || i >= list.Count)
|
{
|
fightAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(true);
|
fightAttrStates[i].SetSprite("EquipAttrNew");
|
fightAttrStates[i].SetNativeSize();
|
}
|
}
|
|
return;
|
}
|
|
|
//基础属性 排序和个数是一致的
|
for (int i = 0; i < baseAttrStates.Count; i++)
|
{
|
var list = equipModel.GetEquipBaseValues(cutTreeModel.selectFloorEquip);
|
var list2 = equipModel.GetEquipBaseValues(oldEquip);
|
if (list == null || i >= list.Count)
|
{
|
baseAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
baseAttrStates[i].SetActive(true);
|
var value = i < list2.Count ? list2[i] : 0;
|
if (list[i] == value)
|
{
|
baseAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
baseAttrStates[i].SetActive(true);
|
baseAttrStates[i].SetSprite(value == 0 ? "EquipAttrNew" : list[i] > value ? "EquipUpIcon" : "EquipDownIcon");
|
baseAttrStates[i].SetNativeSize();
|
}
|
}
|
}
|
|
for (int i = 0; i < fightAttrStates.Count; i++)
|
{
|
//战斗属性 排序和个数不一致 根据ID进行对比
|
var list = equipModel.GetEquipFightValues(cutTreeModel.selectFloorEquip);
|
var list2 = equipModel.GetEquipFightValues(oldEquip);
|
|
var idList = equipModel.GetEquipFightAttrs(cutTreeModel.selectFloorEquip);
|
var idList2 = equipModel.GetEquipFightAttrs(oldEquip);
|
|
if (list == null || i >= list.Count)
|
{
|
fightAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(true);
|
var value = !list2.IsNullOrEmpty() && i < list2.Count ? list2[i] : 0;
|
var id = !idList2.IsNullOrEmpty() && i < idList2.Count ? idList2[i] : 0;
|
if (idList[i] == id && list[i] == value)
|
{
|
fightAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(true);
|
if (idList[i] != id)
|
{
|
fightAttrStates[i].SetSprite("EquipAttrNew");
|
}
|
else
|
{
|
fightAttrStates[i].SetSprite(list[i] > value ? "EquipUpIcon" : "EquipDownIcon");
|
}
|
fightAttrStates[i].SetNativeSize();
|
|
}
|
}
|
}
|
}
|
|
//获取地板装备对应的身上装备
|
ItemModel GetEquipByFloorEquip()
|
{
|
var equipGuid = equipModel.GetEquip(new Int2(PlayerDatas.Instance.baseData.suitLevel, cutTreeModel.selectFloorEquip.config.EquipPlace));
|
if (string.IsNullOrEmpty(equipGuid))
|
return null;
|
return packModel.GetItemByGuid(equipGuid);
|
}
|
|
void DecomposeEquip()
|
{
|
//战力判定进行二次确认
|
if (!cutTreeModel.dontNotifyDecompose && cutTreeModel.selectFloorEquip.score > oldEquip.score)
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"),
|
Language.Get("EquipExchangeWin5"),
|
Language.Get("FlyShoseConfirmwin_Text2"), (bool ok, bool isToggle) =>
|
{
|
if (isToggle)
|
{
|
cutTreeModel.dontNotifyDecompose = true;
|
}
|
|
if (ok)
|
{
|
autoCutTreeModel.isWaitPlayer = false;
|
cutTreeModel.SendCutTreeEquipOP(new byte[] { (byte)cutTreeModel.selectFloorEquip.gridIndex }, 2);
|
}
|
else
|
{
|
WindowCenter.Instance.Open<EquipExchangeWin>();
|
}
|
}, Language.Get("EquipExchangeWin6"));
|
}
|
else
|
{
|
autoCutTreeModel.isWaitPlayer = false;
|
cutTreeModel.SendCutTreeEquipOP(new byte[] { (byte)cutTreeModel.selectFloorEquip.gridIndex }, 2);
|
}
|
CloseClick();
|
}
|
|
void ExchangeEquip()
|
{
|
//战力判定进行二次确认
|
if (!cutTreeModel.dontNotifyExchangeDecompose && cutTreeModel.selectFloorEquip.score < oldEquip.score && decomposeCheck.isOn)
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"),
|
Language.Get("EquipExchangeWin4"),
|
Language.Get("FlyShoseConfirmwin_Text2"), (bool ok, bool isToggle) =>
|
{
|
if (isToggle)
|
{
|
cutTreeModel.dontNotifyExchangeDecompose = true;
|
}
|
|
if (ok)
|
{
|
autoCutTreeModel.isWaitPlayer = false;
|
cutTreeModel.SendCutTreeEquipOP(new byte[] { (byte)cutTreeModel.selectFloorEquip.gridIndex }, 1, decomposeCheck.isOn);
|
}
|
else
|
{
|
WindowCenter.Instance.Open<EquipExchangeWin>();
|
}
|
}, Language.Get("ItemHandle_Replace"));
|
}
|
else
|
{
|
autoCutTreeModel.isWaitPlayer = false;
|
cutTreeModel.SendCutTreeEquipOP(new byte[] { (byte)cutTreeModel.selectFloorEquip.gridIndex }, 1, decomposeCheck.isOn);
|
}
|
|
if (decomposeCheck.isOn)
|
{
|
CloseClick();
|
}
|
}
|
|
void OnRefreshItem(PackType packType, int index, int itemID)
|
{
|
if (packType == PackType.EquipOnFloor)
|
{
|
Display();
|
}
|
}
|
|
|
}
|
|
}
|