Major Player refactor

This commit is contained in:
2025-02-07 02:29:50 -08:00
parent 0cdae88952
commit fe1a1e61ef
132 changed files with 2554 additions and 2478 deletions

View File

@@ -1,9 +1,10 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using GameJamDungeon;
using Godot;
using System;
namespace GameJamDungeon;
[Meta(typeof(IAutoNode))]
public partial class ConsumableItem : Node3D, IUsableItem
{
@@ -13,42 +14,57 @@ public partial class ConsumableItem : Node3D, IUsableItem
public delegate void RaiseStatRequestEventHandler(ConsumableItemStats consumableItemStats);
[Dependency] public IGame Game => this.DependOn<IGame>();
[Dependency] public IGameRepo GameRepo => this.DependOn<IGameRepo>();
[Dependency] public IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>();
public InventoryItemStats Info => ConsumableItemInfo;
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
[Export]
public ConsumableItemStats ConsumableItemInfo { get; set; }
private ConsumableItemStats _consumableItemStats { get; set; }
[Node] public Sprite3D Sprite { get; set; } = default!;
[Node] private Sprite3D Sprite { get; set; } = new Sprite3D();
[Node] public Area3D Pickup { get; set; } = default!;
[Node] private Area3D Pickup { get; set; } = default!;
public Guid ID => Guid.NewGuid();
public string ItemName => _consumableItemStats.Name;
public string Description => _consumableItemStats.Description;
public float SpawnRate => _consumableItemStats.SpawnRate;
public Texture2D GetTexture() => _consumableItemStats.Texture;
public double ThrowDamage => _consumableItemStats.ThrowDamage;
public float ThrowSpeed => _consumableItemStats.ThrowSpeed;
public void Use()
{
if (ConsumableItemInfo.RaiseHPAmount > 0)
Game.RaiseHP(ConsumableItemInfo.RaiseHPAmount);
if (ConsumableItemInfo.RaiseVTAmount > 0)
Game.RaiseVT(ConsumableItemInfo.RaiseVTAmount);
if (_consumableItemStats.RaiseHPAmount > 0)
Game.RaiseHP(_consumableItemStats.RaiseHPAmount);
if (_consumableItemStats.RaiseVTAmount > 0)
Game.RaiseVT(_consumableItemStats.RaiseVTAmount);
if (ConsumableItemInfo.HealHPAmount > 0 && GameRepo.PlayerData.CurrentHP.Value != GameRepo.PlayerData.MaximumHP.Value)
Game.HealHP(ConsumableItemInfo.HealHPAmount);
if (ConsumableItemInfo.HealVTAmount > 0 && GameRepo.PlayerData.CurrentVT.Value != GameRepo.PlayerData.MaximumVT.Value)
Game.HealVT(ConsumableItemInfo.HealVTAmount);
if (_consumableItemStats.HealHPAmount > 0 && Player.Stats.CurrentHP.Value != Player.Stats.MaximumHP.Value)
Game.HealHP(_consumableItemStats.HealHPAmount);
if (_consumableItemStats.HealVTAmount > 0 && Player.Stats.CurrentVT.Value != Player.Stats.MaximumVT.Value)
Game.HealVT(_consumableItemStats.HealVTAmount);
}
public void SetItemStats(InventoryItemStats inventoryItemStats)
{
_consumableItemStats = (ConsumableItemStats)inventoryItemStats;
}
public void OnReady()
{
Sprite.Texture = ConsumableItemInfo.Texture;
Pickup.BodyEntered += OnEntered;
Sprite.Texture = _consumableItemStats.Texture;
}
public void OnEntered(Node3D body)
{
var isAdded = GameRepo.PlayerData.Inventory.TryAdd(this);
var isAdded = Player.Inventory.TryAdd(this);
if (isAdded)
QueueFree();
}