using UnityEngine;
//获得装备界面
public class EquipExchangeWin : UIBase
{
[SerializeField] EquipExchangeCell oldEquipObj;
[SerializeField] EquipExchangeCell newEquipObj;
protected override void OnPreOpen()
{
// 通知主战场暂停
BattleManager.Instance.storyBattleField.IsPause = true;
AutoFightModel.Instance.hasAutoExchanged = false;
AutoFightModel.Instance.startServerTime = TimeUtility.AllSeconds;
EquipModel.Instance.OnEquipOPResultAction += OnRefreshItem;
Display();
// if (EquipModel.Instance.newEquipIDToGuideID.ContainsKey(EquipModel.Instance.selectFloorEquip.itemId))
// {
// // if (!NewBieCenter.Instance.IsGuideCompleted(EquipModel.Instance.newEquipIDToGuideID[EquipModel.Instance.selectFloorEquip.itemId]))
// // NewBieCenter.Instance.StartNewBieGuideEx(EquipModel.Instance.newEquipIDToGuideID[EquipModel.Instance.selectFloorEquip.itemId]);
// }
}
protected override void OnClose()
{
EquipModel.Instance.OnEquipOPResultAction -= OnRefreshItem;
// 通知主战场
BattleManager.Instance.storyBattleField.IsPause = false;
}
void Display()
{
EquipModel.Instance.lastShowEquipIndex = EquipModel.Instance.selectFloorEquip.config.EquipPlace - 1;
var oldEquip = PackManager.Instance.GetItemByIndex(PackType.Equip, EquipModel.Instance.lastShowEquipIndex);
if (oldEquip == null)
{
oldEquipObj.SetActive(false);
newEquipObj.SetActive(true);
newEquipObj.Display(EquipModel.Instance.selectFloorEquip, true);
}
else
{
if (oldEquip.guid == EquipModel.Instance.selectFloorEquip.guid)
{
Debug.LogError("Display: 新旧装备相同GUID 客户端主动删除背包物品索引=" + EquipModel.Instance.selectFloorEquip.gridIndex);
// PackManager.Instance.GetSinglePack(PackType.DropItem).RemoveItem(EquipModel.Instance.selectFloorEquip.gridIndex);
CloseWindow();
return;
}
oldEquipObj.SetActive(true);
newEquipObj.SetActive(true);
oldEquipObj.Display(oldEquip, false);
newEquipObj.Display(EquipModel.Instance.selectFloorEquip, true);
}
}
void OnRefreshItem(bool isDone, int index)
{
AutoFightModel.Instance.hasAutoExchanged = false;
Display();
}
private void LateUpdate()
{
TryAutoExchangeEquip();
}
///
/// 尝试自动换装
///
private void TryAutoExchangeEquip()
{
// 已交换过,不再处理
if (AutoFightModel.Instance.hasAutoExchanged)
return;
if (!AutoFightModel.Instance.isAutoAttack)
return;
if (!AutoFightModel.Instance.isAutoChangeBetterEquip)
return;
int elapsedSeconds = TimeUtility.AllSeconds - AutoFightModel.Instance.startServerTime;
if (elapsedSeconds < AutoFightModel.Instance.autoChangeBetterEquipWaitTimeS)
return;
// 检查是否有新装备
if (EquipModel.Instance.selectFloorEquip == null)
return;
AutoFightModel.Instance.hasAutoExchanged = true;
AutoExchangeEquip();
}
///
/// 自动交换装备
///
private void AutoExchangeEquip()
{
// 检查新装备战力是否更高
long fightPowerChange = FightPowerManager.Instance.GetFightPowerChange(EquipModel.Instance.selectFloorEquip);
bool isFightPowerUp = fightPowerChange > 0;
int equipPlace = EquipModel.Instance.selectFloorEquip.config.EquipPlace - 1;
var oldEquip = PackManager.Instance.GetItemByIndex(PackType.Equip, equipPlace);
//是否替换后自动分解原装备
if (isFightPowerUp)
{
if (oldEquip == null)
{
EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2);
}
else
{
EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2, AutoFightModel.Instance.isAutoExchangeDecomposeOld);
}
}
else
{
//是否替换后自动分解原装备
if (AutoFightModel.Instance.isAutoExchangeDecomposeOld)
{
EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 1);
}
}
}
}