Rewrite and simplify Inventory Menu, various fixes for item effects
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using Zennysoft.Ma.Adapter.Entity;
|
||||
|
||||
@@ -17,6 +19,8 @@ public class EquipmentComponent : IEquipmentComponent
|
||||
|
||||
public AutoProp<EquipableItem> _equippedAccessory;
|
||||
|
||||
public event Action<EquipableItem> EquipmentChanged;
|
||||
|
||||
public int BonusAttack => _equippedWeapon.Value.BonusAttack + _equippedArmor.Value.BonusAttack + _equippedAccessory.Value.BonusAttack;
|
||||
|
||||
public int BonusDefense => _equippedWeapon.Value.BonusDefense + _equippedArmor.Value.BonusDefense + _equippedAccessory.Value.BonusDefense;
|
||||
@@ -51,6 +55,7 @@ public class EquipmentComponent : IEquipmentComponent
|
||||
_equippedArmor.OnNext(armor);
|
||||
if (equipable is Accessory accessory)
|
||||
_equippedAccessory.OnNext(accessory);
|
||||
EquipmentChanged?.Invoke(equipable);
|
||||
}
|
||||
|
||||
public void Unequip(EquipableItem equipable)
|
||||
@@ -61,6 +66,7 @@ public class EquipmentComponent : IEquipmentComponent
|
||||
_equippedArmor.OnNext(new Armor());
|
||||
if (equipable is Accessory accessory)
|
||||
_equippedAccessory.OnNext(new Accessory());
|
||||
EquipmentChanged?.Invoke(equipable);
|
||||
}
|
||||
|
||||
public bool IsItemEquipped(InventoryItem item)
|
||||
|
||||
@@ -60,11 +60,15 @@ public class HealthComponent : IHealthComponent
|
||||
public void SetMaximumHealth(int health)
|
||||
{
|
||||
_maximumHP.OnNext(health);
|
||||
|
||||
if (_currentHP.Value > _maximumHP.Value)
|
||||
_currentHP.OnNext(_maximumHP.Value);
|
||||
}
|
||||
|
||||
public void RaiseMaximumHP(int raiseAmount)
|
||||
public void RaiseMaximumHP(int raiseAmount, bool restoreHP = true)
|
||||
{
|
||||
_maximumHP.OnNext(raiseAmount);
|
||||
Heal(raiseAmount);
|
||||
_maximumHP.OnNext(_maximumHP.Value + raiseAmount);
|
||||
if (restoreHP)
|
||||
Heal(raiseAmount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,9 +49,18 @@ public class VTComponent : IVTComponent
|
||||
_currentVT.OnNext(cappedAmount);
|
||||
}
|
||||
|
||||
public void RaiseMaximumVT(int raiseAmount)
|
||||
public void RaiseMaximumVT(int raiseAmount, bool restoreVT = true)
|
||||
{
|
||||
_maximumVT.OnNext(raiseAmount);
|
||||
Restore(raiseAmount);
|
||||
_maximumVT.OnNext(_maximumVT.Value + raiseAmount);
|
||||
if (restoreVT)
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void SetMaximumVT(int vt)
|
||||
{
|
||||
_maximumVT.OnNext(vt);
|
||||
|
||||
if (_currentVT.Value > _maximumVT.Value)
|
||||
_currentVT.OnNext(_maximumVT.Value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user