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();
|
}
|
|
/// <summary>
|
/// 尝试自动换装
|
/// </summary>
|
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();
|
}
|
|
/// <summary>
|
/// 自动交换装备
|
/// </summary>
|
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);
|
}
|
}
|
}
|
}
|
|
|
|
|
|