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(); [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 SpawnLocations; public void Initialize() { SpawnLocations = new List() { Spawn1, Spawn2, Spawn3, Spawn4, Spawn5, Spawn6, Spawn7, Spawn8 }; } public void SpawnRescuedItems() { foreach (var item in Game.RescuedItems.Items) { var droppedScene = GD.Load("res://src/items/dropped/DroppedItem.tscn"); var dropped = droppedScene.Instantiate(); 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(); } }