Fix up equipping inventory items, fill out the rest of the inventory labels
This commit is contained in:
@@ -91,9 +91,9 @@ public partial class Game : Node3D, IGame
|
||||
var currentFloor = Floors.ElementAt(_currentFloor);
|
||||
currentFloor.CallDeferred(MethodName.QueueFree, []);
|
||||
|
||||
if (GameRepo.EquippedWeapon.WeaponInfo != null && GameRepo.EquippedWeapon.WeaponInfo.WeaponTags.Contains(WeaponTag.BreaksOnChange))
|
||||
if (GameRepo.EquippedWeapon.Value.WeaponInfo != null && GameRepo.EquippedWeapon.Value.WeaponInfo.WeaponTags.Contains(WeaponTag.BreaksOnChange))
|
||||
{
|
||||
GameRepo.InventoryItems.Value.Remove(GameRepo.EquippedWeapon);
|
||||
GameRepo.InventoryItems.Value.Remove(GameRepo.EquippedWeapon.Value);
|
||||
GameRepo.OnWeaponEquipped(new Weapon());
|
||||
}
|
||||
|
||||
|
||||
@@ -23,25 +23,29 @@ public interface IGameRepo : IDisposable
|
||||
|
||||
void SetPlayerGlobalPosition(Vector3 playerGlobalPosition);
|
||||
|
||||
void SetPlayerStatInfo(PlayerStatInfo playerStatInfo);
|
||||
|
||||
public void OnWeaponEquipped(Weapon equippedItem);
|
||||
|
||||
public void OnArmorEquipped(Armor equippedItem);
|
||||
|
||||
public void OnAccessoryEquipped(Accessory equippedItem);
|
||||
|
||||
public Weapon EquippedWeapon { get; }
|
||||
public AutoProp<Weapon> EquippedWeapon { get; }
|
||||
|
||||
public Armor EquippedArmor { get; }
|
||||
public AutoProp<Armor> EquippedArmor { get; }
|
||||
|
||||
public Accessory EquippedAccessory { get; }
|
||||
|
||||
public AutoProp<int> HPBarValue { get; }
|
||||
|
||||
public AutoProp<int> VTBarValue { get; }
|
||||
|
||||
bool IsWithinDialogueSpace { get; set; }
|
||||
public AutoProp<Accessory> EquippedAccessory { get; }
|
||||
|
||||
public int MaxItemSize { get; }
|
||||
|
||||
public AutoProp<PlayerStatInfo> PlayerStatInfo { get; }
|
||||
|
||||
public bool IsItemEquipped(IEquipable item);
|
||||
|
||||
public void EquipItem(IEquipable item);
|
||||
|
||||
public void UnequipItem(IEquipable item);
|
||||
}
|
||||
|
||||
public class GameRepo : IGameRepo
|
||||
@@ -61,20 +65,16 @@ public class GameRepo : IGameRepo
|
||||
public IAutoProp<bool> IsPaused => _isPaused;
|
||||
private readonly AutoProp<bool> _isPaused;
|
||||
|
||||
private Weapon _equippedWeapon;
|
||||
public Weapon EquippedWeapon => _equippedWeapon;
|
||||
private AutoProp<Weapon> _equippedWeapon;
|
||||
public AutoProp<Weapon> EquippedWeapon => _equippedWeapon;
|
||||
|
||||
private Armor _equippedArmor;
|
||||
private AutoProp<Armor> _equippedArmor;
|
||||
|
||||
public Armor EquippedArmor => _equippedArmor;
|
||||
public AutoProp<Armor> EquippedArmor => _equippedArmor;
|
||||
|
||||
private Accessory _equippedAccessory;
|
||||
private AutoProp<Accessory> _equippedAccessory;
|
||||
|
||||
public Accessory EquippedAccessory => _equippedAccessory;
|
||||
|
||||
public AutoProp<int> HPBarValue { get; }
|
||||
|
||||
public AutoProp<int> VTBarValue { get; }
|
||||
public AutoProp<Accessory> EquippedAccessory => _equippedAccessory;
|
||||
|
||||
public bool IsWithinDialogueSpace { get; set; }
|
||||
|
||||
@@ -82,16 +82,20 @@ public class GameRepo : IGameRepo
|
||||
|
||||
private bool _disposedValue;
|
||||
|
||||
private AutoProp<PlayerStatInfo> _playerStatInfo;
|
||||
|
||||
public AutoProp<PlayerStatInfo> PlayerStatInfo => _playerStatInfo;
|
||||
|
||||
public GameRepo()
|
||||
{
|
||||
_inventoryItems = new AutoProp<List<IInventoryItem>>([]);
|
||||
_isInventoryScreenOpened = new AutoProp<bool>(false);
|
||||
_isPaused = new AutoProp<bool>(false);
|
||||
_playerGlobalPosition = new AutoProp<Vector3>(Vector3.Zero);
|
||||
_equippedWeapon = new Weapon();
|
||||
HPBarValue = new AutoProp<int>(0);
|
||||
VTBarValue = new AutoProp<int>(0);
|
||||
IsWithinDialogueSpace = false;
|
||||
_equippedWeapon = new AutoProp<Weapon>(new Weapon());
|
||||
_equippedArmor = new AutoProp<Armor>(new Armor());
|
||||
_equippedAccessory = new AutoProp<Accessory>(new Accessory());
|
||||
_playerStatInfo = new AutoProp<PlayerStatInfo>(new PlayerStatInfo());
|
||||
}
|
||||
|
||||
public void Pause()
|
||||
@@ -108,19 +112,21 @@ public class GameRepo : IGameRepo
|
||||
|
||||
public void SetPlayerGlobalPosition(Vector3 playerGlobalPosition) => _playerGlobalPosition.OnNext(playerGlobalPosition);
|
||||
|
||||
public void SetPlayerStatInfo(PlayerStatInfo playerStatInfo) => _playerStatInfo.OnNext(playerStatInfo);
|
||||
|
||||
public void OnWeaponEquipped(Weapon equippedItem)
|
||||
{
|
||||
_equippedWeapon = equippedItem;
|
||||
_equippedWeapon.OnNext(equippedItem);
|
||||
}
|
||||
|
||||
public void OnArmorEquipped(Armor equippedItem)
|
||||
{
|
||||
_equippedArmor = equippedItem;
|
||||
_equippedArmor.OnNext(equippedItem);
|
||||
}
|
||||
|
||||
public void OnAccessoryEquipped(Accessory equippedItem)
|
||||
{
|
||||
_equippedAccessory = equippedItem;
|
||||
_equippedAccessory.OnNext(equippedItem);
|
||||
}
|
||||
|
||||
public void OnGameEnded()
|
||||
@@ -129,6 +135,42 @@ public class GameRepo : IGameRepo
|
||||
Ended?.Invoke();
|
||||
}
|
||||
|
||||
public bool IsItemEquipped(IEquipable item)
|
||||
{
|
||||
if (item is Weapon)
|
||||
return EquippedWeapon.Value == item;
|
||||
|
||||
if (item is Armor)
|
||||
return EquippedArmor.Value == item;
|
||||
|
||||
if (item is Accessory)
|
||||
return EquippedAccessory.Value == item;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void EquipItem(IEquipable item)
|
||||
{
|
||||
if (item is Weapon weapon)
|
||||
OnWeaponEquipped(weapon);
|
||||
|
||||
if (item is Armor armor)
|
||||
OnArmorEquipped(armor);
|
||||
|
||||
if (item is Accessory accessory)
|
||||
OnAccessoryEquipped(accessory);
|
||||
}
|
||||
|
||||
public void UnequipItem(IEquipable item)
|
||||
{
|
||||
if (item == EquippedWeapon.Value)
|
||||
OnWeaponEquipped(new Weapon());
|
||||
if (item == EquippedArmor.Value)
|
||||
OnArmorEquipped(new Armor());
|
||||
if (item == EquippedAccessory.Value)
|
||||
OnAccessoryEquipped(new Accessory());
|
||||
}
|
||||
|
||||
protected void Dispose(bool disposing)
|
||||
{
|
||||
if (!_disposedValue)
|
||||
|
||||
Reference in New Issue
Block a user