Drop item

This commit is contained in:
2024-09-22 14:00:52 -07:00
parent 01477b9a0e
commit 490f0d17d2
25 changed files with 401 additions and 257 deletions

View File

@@ -2,17 +2,17 @@
namespace GameJamDungeon;
using Chickensoft.AutoInject;
using Chickensoft.Collections;
using Chickensoft.GodotNodeInterfaces;
using Chickensoft.Introspection;
using Godot;
using System;
public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvide<IGame>, INode3D
{
event Game.StatRaisedAlertEventHandler StatRaisedAlert;
public IPlayer Player { get; }
public void DropItem(IInventoryItem item);
}
[Meta(typeof(IAutoNode))]
@@ -130,12 +130,19 @@ public partial class Game : Node3D, IGame
Player.MinimapButtonHeld += Player_MinimapButtonHeld;
Player.PauseButtonPressed += Player_PauseButtonPressed;
GameRepo.PlayerData.Inventory.EquippedItem += Inventory_EquippedItem;
GameEventDepot.EnemyDefeated += OnEnemyDefeated;
GameEventDepot.RestorativePickedUp += GameEventDepot_RestorativePickedUp;
}
public void DropItem(IInventoryItem item)
{
var droppedScene = GD.Load<PackedScene>("res://src/items/dropped/DroppedItem.tscn");
var dropped = droppedScene.Instantiate<DroppedItem>();
dropped.Item = item;
AddChild(dropped);
dropped.Drop();
}
private void OnEnemyDefeated(Vector3 vector, EnemyStatResource resource)
{
var restorativeScene = GD.Load<PackedScene>("res://src/items/restorative/Restorative.tscn");
@@ -144,11 +151,6 @@ public partial class Game : Node3D, IGame
restorative.GlobalPosition = vector;
}
private void Inventory_EquippedItem()
{
GameEventDepot.OnEquippedItem();
}
private void UseTeleportPrompt_CloseTeleportPrompt()
{
GameLogic.Input(new GameLogic.Input.HideAskForTeleport());

View File

@@ -26,11 +26,23 @@ namespace GameJamDungeon
event Action? MenuBackedOut;
public void OnMenuBackedOut();
event Action? EquippedItem;
public void OnEquippedItem();
event Action<Weapon>? EquippedWeapon;
public void OnEquippedWeapon(Weapon equippedWeapon);
event Action? UnequippedItem;
public void OnUnequippedItem();
event Action? UnequippedWeapon;
public void OnUnequippedWeapon();
event Action<Armor>? EquippedArmor;
public void OnEquippedArmor(Armor equippedArmor);
event Action? UnequippedArmor;
public void OnUnequippedArmor();
event Action<Accessory>? EquippedAccessory;
public void OnEquippedAccessory(Accessory equippedAccessory);
event Action? UnequippedAccessory;
public void OnUnequippedAccessory();
event Action? InventorySorted;
public void OnInventorySorted();
@@ -57,8 +69,12 @@ namespace GameJamDungeon
public event Action? MenuScrolled;
public event Action? MenuBackedOut;
public event Action? EquippedItem;
public event Action? UnequippedItem;
public event Action<Weapon>? EquippedWeapon;
public event Action? UnequippedWeapon;
public event Action<Armor>? EquippedArmor;
public event Action? UnequippedArmor;
public event Action<Accessory>? EquippedAccessory;
public event Action? UnequippedAccessory;
public event Action? InventorySorted;
public event Action<ConsumableItemStats>? HealingItemConsumed;
public event Action<Restorative>? RestorativePickedUp;
@@ -74,8 +90,16 @@ namespace GameJamDungeon
public void OnMenuScrolled() => MenuScrolled?.Invoke();
public void OnMenuBackedOut() => MenuBackedOut?.Invoke();
public void OnEquippedItem() => EquippedItem?.Invoke();
public void OnUnequippedItem() => UnequippedItem?.Invoke();
public void OnEquippedWeapon(Weapon equippedWeapon) => EquippedWeapon?.Invoke(equippedWeapon);
public void OnUnequippedWeapon() => UnequippedWeapon?.Invoke();
public void OnEquippedArmor(Armor equippedArmor) => EquippedArmor?.Invoke(equippedArmor);
public void OnUnequippedArmor() => UnequippedArmor?.Invoke();
public void OnEquippedAccessory(Accessory equippedAccessory) => EquippedAccessory?.Invoke(equippedAccessory);
public void OnUnequippedAccessory() => UnequippedAccessory?.Invoke();
public void OnInventorySorted() => InventorySorted?.Invoke();
public void OnHealingItemConsumed(ConsumableItemStats item) => HealingItemConsumed?.Invoke(item);
public void OnRestorativePickedUp(Restorative restorative) => RestorativePickedUp?.Invoke(restorative);

View File

@@ -1,15 +1,15 @@
@startuml GameLogic
state "GameLogic State" as GameJamDungeon_GameLogic_State {
state "Quit" as GameJamDungeon_GameLogic_State_Quit
state "GameStarted" as GameJamDungeon_GameLogic_State_GameStarted
state "Playing" as GameJamDungeon_GameLogic_State_Playing {
state "MinimapOpen" as GameJamDungeon_GameLogic_State_MinimapOpen
state "Resuming" as GameJamDungeon_GameLogic_State_Resuming
state "AskForTeleport" as GameJamDungeon_GameLogic_State_AskForTeleport
state "Paused" as GameJamDungeon_GameLogic_State_Paused
state "FloorClearedDecisionState" as GameJamDungeon_GameLogic_State_FloorClearedDecisionState
state "InventoryOpened" as GameJamDungeon_GameLogic_State_InventoryOpened
state "MinimapOpen" as GameJamDungeon_GameLogic_State_MinimapOpen
state "Paused" as GameJamDungeon_GameLogic_State_Paused
state "Resuming" as GameJamDungeon_GameLogic_State_Resuming
}
state "GameStarted" as GameJamDungeon_GameLogic_State_GameStarted
state "Quit" as GameJamDungeon_GameLogic_State_Quit
}
GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State_FloorClearedDecisionState : FloorExitReached