Files
GameJamDungeon/src/item_rescue/RescuedItems.cs
2025-02-07 02:29:50 -08:00

64 lines
1.7 KiB
C#

using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using GameJamDungeon;
using Godot;
using System.Collections.Generic;
using System.Linq;
namespace GameJamDungeon;
[Meta(typeof(IAutoNode))]
public partial class RescuedItems : Node3D
{
public override void _Notification(int what) => this.Notify(what);
[Dependency] public IGame Game => this.DependOn<IGame>();
[Node] public Marker3D Spawn1 { get; set; } = default!;
[Node] public Marker3D Spawn2 { get; set; } = default!;
[Node] public Marker3D Spawn3 { get; set; } = default!;
[Node] public Marker3D Spawn4 { get; set; } = default!;
[Node] public Marker3D Spawn5 { get; set; } = default!;
[Node] public Marker3D Spawn6 { get; set; } = default!;
[Node] public Marker3D Spawn7 { get; set; } = default!;
[Node] public Marker3D Spawn8 { get; set; } = default!;
private List<Marker3D> SpawnLocations;
public void Initialize()
{
SpawnLocations = new List<Marker3D>()
{
Spawn1,
Spawn2,
Spawn3,
Spawn4,
Spawn5,
Spawn6,
Spawn7,
Spawn8
};
}
public void SpawnRescuedItems()
{
foreach (var item in Game.RescuedItems.Items)
{
var droppedScene = GD.Load<PackedScene>("res://src/items/dropped/DroppedItem.tscn");
var dropped = droppedScene.Instantiate<DroppedItem>();
dropped.Item = item;
SpawnLocations.First().AddChild(dropped);
dropped.GlobalPosition = SpawnLocations.First().GlobalPosition;
SpawnLocations.Remove(SpawnLocations.First());
}
Game.RescuedItems.Items.Clear();
}
public void OnSpawnItemsEntered(Node3D body)
{
GD.Print("Spawn items");
SpawnRescuedItems();
}
}