Fix up equipping inventory items, fill out the rest of the inventory labels

This commit is contained in:
2024-09-09 23:05:44 -07:00
parent 4986cca661
commit b5798e7bc0
17 changed files with 340 additions and 108 deletions

View File

@@ -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());
}

View File

@@ -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)