hotbar
parent
54bde10278
commit
a6a7815b76
|
@ -75,7 +75,9 @@ public sealed partial class Player : Character
|
|||
this.GetEventBus().EmitSignal(signal, args);
|
||||
};
|
||||
|
||||
Inventory.AddItemToHotbar(Inventory.Items[0]);
|
||||
//GD.Print("Inventory: " + Inventory.Items);
|
||||
//Inventory.AddItemToHotbar(Inventory.Items[0]);
|
||||
Inventory.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
[ext_resource type="Script" path="res://State/Character/PlayerIdleState.cs" id="6_wkfdm"]
|
||||
[ext_resource type="Script" path="res://State/Character/PlayerMoveState.cs" id="7_dfqd8"]
|
||||
[ext_resource type="Script" path="res://Utils/AnimationManager.cs" id="7_sdgvb"]
|
||||
[ext_resource type="Script" path="res://Items/Inventory.cs" id="7_xyenu"]
|
||||
[ext_resource type="Script" path="res://State/Character/PlayerRollState.cs" id="8_fy0v5"]
|
||||
[ext_resource type="Script" path="res://State/Character/PlayerEmoteState.cs" id="8_hd2lw"]
|
||||
[ext_resource type="Animation" uid="uid://8e8r3y1imvsx" path="res://Assets/Animations/stun.res" id="8_m08fh"]
|
||||
|
@ -34,7 +33,8 @@
|
|||
[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
|
||||
[ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"]
|
||||
[ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"]
|
||||
[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="31_vr68e"]
|
||||
[ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"]
|
||||
[ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"]
|
||||
shader = ExtResource("2_ngsgt")
|
||||
|
@ -817,9 +817,8 @@ horizontal_alignment = 1
|
|||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(0, -2)
|
||||
script = ExtResource("7_xyenu")
|
||||
Hotbar = []
|
||||
Items = [ExtResource("31_vr68e")]
|
||||
script = ExtResource("30_y2wmw")
|
||||
Hotbar = [NodePath("Sword"), null, null]
|
||||
InventoryMap = {
|
||||
"equip_1": 0,
|
||||
"equip_2": 1,
|
||||
|
@ -829,6 +828,9 @@ InventoryMap = {
|
|||
[node name="RemoteTransform2D2" type="RemoteTransform2D" parent="Inventory"]
|
||||
position = Vector2(0, 4)
|
||||
|
||||
[node name="Sword" parent="Inventory" instance=ExtResource("31_ql4as")]
|
||||
visible = false
|
||||
|
||||
[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
|
||||
visible = false
|
||||
InvincibilityTimer = NodePath("Timer")
|
||||
|
|
|
@ -27,7 +27,15 @@ public partial class Inventory : Node2D
|
|||
public Item SelectedItem
|
||||
{
|
||||
get => _selectedItem;
|
||||
set => EquipItem(value, ref _selectedItem);
|
||||
set => EquipItem(value);
|
||||
}
|
||||
|
||||
private int _selectedIndex;
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get => _selectedIndex;
|
||||
set => EquipIndex(value);
|
||||
}
|
||||
|
||||
private int _quickSwitchIndex = -1;
|
||||
|
@ -46,14 +54,6 @@ public partial class Inventory : Node2D
|
|||
|
||||
public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
|
||||
|
||||
public Inventory()
|
||||
{
|
||||
//InventoryMap = new Dictionary<string, int>();
|
||||
//InventoryMap.Add("equip_1", 0);
|
||||
//InventoryMap.Add("equip_2", 1);
|
||||
//InventoryMap.Add("equip_3", 2);
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if (Hotbar is null)
|
||||
|
@ -77,50 +77,50 @@ public partial class Inventory : Node2D
|
|||
}
|
||||
}
|
||||
|
||||
Events.EventBus.Instance.EmitSignal(
|
||||
Events.EventBus.SignalName.PlayerInventoryUpdate, this);
|
||||
base._Ready();
|
||||
}
|
||||
|
||||
public bool EquipIndex(int index)
|
||||
public virtual bool EquipIndex(int index)
|
||||
{
|
||||
if (index < Hotbar.Count)
|
||||
if (index >= Hotbar.Count)
|
||||
{
|
||||
return EquipItem(Hotbar[index], ref _selectedItem);
|
||||
return false;
|
||||
}
|
||||
|
||||
return EquipItem(null, ref _selectedItem);
|
||||
}
|
||||
_selectedItem?.Unequip(Character);
|
||||
_selectedIndex = index;
|
||||
|
||||
private bool EquipItem(Item item, ref Item slot)
|
||||
{
|
||||
if (item is not null)
|
||||
if (index >= 0)
|
||||
{
|
||||
if (!Hotbar.Contains(item))
|
||||
{
|
||||
GD.PrintErr("Tried to equip an item not in the inventory.");
|
||||
return false;
|
||||
}
|
||||
_selectedItem = Hotbar[index];
|
||||
_selectedItem?.Equip(Character);
|
||||
}
|
||||
else
|
||||
{
|
||||
_selectedItem = null;
|
||||
}
|
||||
|
||||
if (slot is not null)
|
||||
{
|
||||
slot.Unequip(Character);
|
||||
}
|
||||
|
||||
slot = item;
|
||||
|
||||
if (item is not null)
|
||||
{
|
||||
item.Equip(Character);
|
||||
}
|
||||
|
||||
Events.EventBus.Instance.EmitSignal(
|
||||
Events.EventBus.SignalName.PlayerInventoryUpdate, this);
|
||||
GD.Print($"Inventory: {index} is new selected index.");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected virtual bool EquipItem(Item item)
|
||||
{
|
||||
if (item is null)
|
||||
{
|
||||
EquipIndex(-1);
|
||||
}
|
||||
|
||||
int index = Hotbar.IndexOf(item);
|
||||
if (index < 0)
|
||||
{
|
||||
GD.PushWarning("Trying to equip item not in the hot inventory.");
|
||||
}
|
||||
return EquipIndex(index);
|
||||
}
|
||||
|
||||
[System.Obsolete]
|
||||
public Item GetItemByMap(string keymap)
|
||||
{
|
||||
if (InventoryMap.ContainsKey(keymap))
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
namespace SupaLidlGame.Items;
|
||||
|
||||
public partial class PlayerInventory : Inventory
|
||||
{
|
||||
public override bool EquipIndex(int index)
|
||||
{
|
||||
bool result = base.EquipIndex(index);
|
||||
|
||||
if (result)
|
||||
{
|
||||
Events.EventBus.Instance.EmitSignal(
|
||||
Events.EventBus.SignalName.PlayerInventoryUpdate, this);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -23,15 +23,18 @@ public abstract partial class PlayerState : CharacterState
|
|||
{
|
||||
if (@event.IsActionPressed("equip_1"))
|
||||
{
|
||||
inventory.SelectedItem = inventory.GetItemByMap("equip_1");
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_1");
|
||||
inventory.SelectedIndex = 0;
|
||||
}
|
||||
else if (@event.IsActionPressed("equip_2"))
|
||||
{
|
||||
inventory.SelectedItem = inventory.GetItemByMap("equip_2");
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_2");
|
||||
inventory.SelectedIndex = 1;
|
||||
}
|
||||
else if (@event.IsActionPressed("equip_3"))
|
||||
{
|
||||
inventory.SelectedItem = inventory.GetItemByMap("equip_3");
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_3");
|
||||
inventory.SelectedIndex = 2;
|
||||
}
|
||||
else if (@event.IsActionPressed("next_item"))
|
||||
{
|
||||
|
|
|
@ -15,12 +15,12 @@ public partial class Hotbar : GridContainer
|
|||
|
||||
public void OnInventoryUpdate(Inventory inventory)
|
||||
{
|
||||
GD.Print($"UPDATE: {inventory.SelectedIndex} is selected index.");
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
var slot = _slots[i];
|
||||
slot.Item = inventory.Hotbar[i].Metadata;
|
||||
slot.IsSelected = inventory.SelectedItem == inventory.Hotbar[i];
|
||||
GD.Print(inventory.Hotbar[i].Metadata.Name);
|
||||
slot.Item = inventory.Hotbar[i]?.Metadata;
|
||||
slot.IsSelected = inventory.SelectedIndex == i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@ public partial class InventorySlot : ColorRect
|
|||
|
||||
if (_item is null)
|
||||
{
|
||||
_textureRect.Texture = _placeholderTexture;
|
||||
//_textureRect.Texture = _placeholderTexture;
|
||||
_textureRect.Texture = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue