Compare commits
	
		
			2 Commits 
		
	
	
		
			97cdf26751
			...
			6af8540bac
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						6af8540bac | |
| 
							
							
								
									
								
								 | 
						48dcee72b4 | 
| 
						 | 
					@ -838,11 +838,6 @@ y_sort_enabled = true
 | 
				
			||||||
script = ExtResource("30_y2wmw")
 | 
					script = ExtResource("30_y2wmw")
 | 
				
			||||||
Hotbar = [null, null, null]
 | 
					Hotbar = [null, null, null]
 | 
				
			||||||
Items = Array[Object]([ExtResource("33_3qyfl"), ExtResource("34_70ron"), ExtResource("35_4pap1")])
 | 
					Items = Array[Object]([ExtResource("33_3qyfl"), ExtResource("34_70ron"), ExtResource("35_4pap1")])
 | 
				
			||||||
InventoryMap = {
 | 
					 | 
				
			||||||
"equip_1": 0,
 | 
					 | 
				
			||||||
"equip_2": 1,
 | 
					 | 
				
			||||||
"equip_3": 2
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
 | 
					[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
 | 
				
			||||||
visible = false
 | 
					visible = false
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,10 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Array<Item> Hotbar { get; private set; }
 | 
					    public Array<Item> Hotbar { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    public Array<int> HotbarToItemIndexMap { get; set; } = new();
 | 
				
			||||||
    public Array<ItemMetadata> Items { get; private set; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Dictionary<string, int> InventoryMap { get; set; }
 | 
					    public Array<ItemMetadata> Items { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Signal]
 | 
					    [Signal]
 | 
				
			||||||
    public delegate void UsedItemEventHandler(Item item);
 | 
					    public delegate void UsedItemEventHandler(Item item);
 | 
				
			||||||
| 
						 | 
					@ -62,6 +61,12 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
 | 
					    public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Inventory()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap.Resize(HotbarCapacity);
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap.Fill(-1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Ready()
 | 
					    public override void _Ready()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Hotbar is null)
 | 
					        if (Hotbar is null)
 | 
				
			||||||
| 
						 | 
					@ -130,21 +135,6 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
        return EquipIndex(index);
 | 
					        return EquipIndex(index);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [System.Obsolete]
 | 
					 | 
				
			||||||
    public Item GetItemByMap(string keymap)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (InventoryMap.ContainsKey(keymap))
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            int idx = InventoryMap[keymap];
 | 
					 | 
				
			||||||
            if (idx < Hotbar.Count)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                return Hotbar[InventoryMap[keymap]];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else GD.Print(keymap + " does not exist");
 | 
					 | 
				
			||||||
        return null;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Item AddToHotbar(ItemMetadata metadata)
 | 
					    public Item AddToHotbar(ItemMetadata metadata)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        //AddItemMetadata(metadata);
 | 
					        //AddItemMetadata(metadata);
 | 
				
			||||||
| 
						 | 
					@ -155,7 +145,19 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Item SetHotbarIndexToItem(int index, ItemMetadata metadata)
 | 
					    public Item SetHotbarIndexToItemIndex(int hotbarIndex, int itemIndex)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap[hotbarIndex] = itemIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (itemIndex >= 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return SetHotbarIndexToItem(hotbarIndex, Items[itemIndex]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Item SetHotbarIndexToItem(int index, ItemMetadata metadata)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var oldItem = Hotbar[index];
 | 
					        var oldItem = Hotbar[index];
 | 
				
			||||||
        Item newItem = null;
 | 
					        Item newItem = null;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,6 +76,19 @@ public partial class GlobalState : Node
 | 
				
			||||||
        Progression = save.Progression;
 | 
					        Progression = save.Progression;
 | 
				
			||||||
        MapState = save.MapState;
 | 
					        MapState = save.MapState;
 | 
				
			||||||
        Stats = save.Stats;
 | 
					        Stats = save.Stats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var inventory = World.Instance.CurrentPlayer.Inventory;
 | 
				
			||||||
 | 
					        inventory.Items = Stats.Items;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int i = 0; i < Stats.HotbarToItemIndexMap.Count; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int itemIndex = Stats.HotbarToItemIndexMap[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (itemIndex >= 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                inventory.SetHotbarIndexToItemIndex(i, itemIndex);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void ExportToSave(Save save)
 | 
					    public void ExportToSave(Save save)
 | 
				
			||||||
| 
						 | 
					@ -83,5 +96,9 @@ public partial class GlobalState : Node
 | 
				
			||||||
        save.Progression = Progression;
 | 
					        save.Progression = Progression;
 | 
				
			||||||
        save.MapState = MapState;
 | 
					        save.MapState = MapState;
 | 
				
			||||||
        save.Stats = Stats;
 | 
					        save.Stats = Stats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var inventory = World.Instance.CurrentPlayer.Inventory;
 | 
				
			||||||
 | 
					        Stats.Items = inventory.Items;
 | 
				
			||||||
 | 
					        Stats.HotbarToItemIndexMap = inventory.HotbarToItemIndexMap;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using Godot;
 | 
					using Godot;
 | 
				
			||||||
 | 
					using Godot.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.State.Global;
 | 
					namespace SupaLidlGame.State.Global;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,4 +14,10 @@ public partial class Stats : Resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public int DeathCount { get; set; } = 0;
 | 
					    public int DeathCount { get; set; } = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Array<Items.ItemMetadata> Items { get; set; } = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Array<int> HotbarToItemIndexMap { get; set; } = new();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,6 +72,7 @@ public partial class InventoryGrid : GridContainer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ItemMetadata item = items.Current;
 | 
					                ItemMetadata item = items.Current;
 | 
				
			||||||
                slot.Item = item;
 | 
					                slot.Item = item;
 | 
				
			||||||
 | 
					                slot.Index = i;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // make remaining slots display empty
 | 
					            // make remaining slots display empty
 | 
				
			||||||
| 
						 | 
					@ -80,6 +81,7 @@ public partial class InventoryGrid : GridContainer
 | 
				
			||||||
                InventorySlot slot = children[i] as InventorySlot;
 | 
					                InventorySlot slot = children[i] as InventorySlot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                slot.Item = null;
 | 
					                slot.Item = null;
 | 
				
			||||||
 | 
					                slot.Index = i;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,6 +76,6 @@ public partial class InventoryMenu : BaseMenu, IModal
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        int slot = button.GetMeta("slot").AsInt32();
 | 
					        int slot = button.GetMeta("slot").AsInt32();
 | 
				
			||||||
        GD.Print("Equipping item at slot " + slot);
 | 
					        GD.Print("Equipping item at slot " + slot);
 | 
				
			||||||
        Source.SetHotbarIndexToItem(slot, _selected.Item);
 | 
					        Source.SetHotbarIndexToItemIndex(slot, _selected.Index);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,8 @@ public partial class InventorySlot : Button
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static Texture2D _placeholderTexture;
 | 
					    private static Texture2D _placeholderTexture;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int Index { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Items.ItemMetadata _item;
 | 
					    private Items.ItemMetadata _item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Items.ItemMetadata Item
 | 
					    public Items.ItemMetadata Item
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,12 @@ public partial class ScenePath : ResourcePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // add scene to loaded to not have to reload scene when called again
 | 
					        // add scene to loaded to not have to reload scene when called again
 | 
				
			||||||
        var scene = base.Load<PackedScene>();
 | 
					        var scene = base.Load<PackedScene>();
 | 
				
			||||||
        _loaded.Add(Path, scene);
 | 
					
 | 
				
			||||||
 | 
					        if (useCached)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _loaded.Add(Path, scene);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return scene;
 | 
					        return scene;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -84,6 +84,13 @@ public partial class World : Node
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            throw new System.Exception("Another World instance is running.");
 | 
					            throw new System.Exception("Another World instance is running.");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Debug = new DebugCommands(this);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~World()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Debug.Free();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Ready()
 | 
					    public override void _Ready()
 | 
				
			||||||
| 
						 | 
					@ -335,4 +342,23 @@ public partial class World : Node
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Node FindEntity(string name) => CurrentMap.Entities.GetNode(name);
 | 
					    public Node FindEntity(string name) => CurrentMap.Entities.GetNode(name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    internal DebugCommands Debug { get; set; }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					internal partial class DebugCommands : GodotObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private World _world;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    internal DebugCommands(World world)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _world = world;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    internal void GiveItem(string item)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var itemMetadata = ResourceLoader
 | 
				
			||||||
 | 
					            .Load<Items.ItemMetadata>($"res://Items/{item}.tres");
 | 
				
			||||||
 | 
					        _world.CurrentPlayer.Inventory.Items.Add(itemMetadata);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue