Fix really annoying bug on focus modes. i forgot what else i did but probably added armor

This commit is contained in:
2026-02-16 23:56:16 -08:00
parent 017be896f3
commit 1042b86d2b
15 changed files with 223 additions and 113 deletions

View File

@@ -28,6 +28,7 @@ collision_mask = 0
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
pixel_size = 0.005
billboard = 2
shaded = true
texture_filter = 0

View File

@@ -29,6 +29,7 @@ collision_mask = 0
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.370004, 0)
pixel_size = 0.005
billboard = 2
texture_filter = 0

View File

@@ -13,10 +13,10 @@ _ferrumResistance = 0.0
_holyResistance = 0.0
_curseResistance = 0.0
Name = "Atoner's Adornments"
Description = "+1 DEF"
Description = ""
SpawnRate = 0.25
BonusAttack = 0
BonusDefense = 1
BonusDefense = 0
BonusLuck = 0.05
BonusHP = 0
BonusVT = 0

View File

@@ -0,0 +1,33 @@
[gd_resource type="Resource" script_class="ArmorStats" load_steps=3 format=3 uid="uid://dnj4ybk0fhntx"]
[ext_resource type="Texture2D" uid="uid://ckt7wupdlylo2" path="res://src/items/armor/textures/HolyArmor2.png" id="1_8mgq5"]
[ext_resource type="Script" uid="uid://dqtp6ewvttoyu" path="res://src/items/armor/ArmorStats.cs" id="2_3srmd"]
[resource]
script = ExtResource("2_3srmd")
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
_holyResistance = 0.0
_curseResistance = 0.0
Name = "Blast Armor"
Description = ""
SpawnRate = 0.5
BonusAttack = 0
BonusDefense = 4
BonusLuck = 0
BonusHP = 0
BonusVT = 0
AeolicResistance = 0
TelluricResistance = 0
HydricResistance = 0
IgneousResistance = 0
FerrumResistance = 0
HolyResistance = 0
CurseResistance = 0
ThrowSpeed = 12.0
ThrowDamage = 5
ItemTag = 0
Texture = ExtResource("1_8mgq5")

View File

@@ -13,11 +13,11 @@ _ferrumResistance = 0.0
_holyResistance = 0.0
_curseResistance = 0.0
Name = "Ceremonial Vestments"
Description = "+2 DEF"
Description = "+1 DEF"
SpawnRate = 0.2
BonusAttack = 0
BonusDefense = 2
BonusLuck = 0.05
BonusDefense = 1
BonusLuck = 5
BonusHP = 0
BonusVT = 0
AeolicResistance = 0

View File

@@ -0,0 +1,33 @@
[gd_resource type="Resource" script_class="ArmorStats" load_steps=3 format=3 uid="uid://vqnffib54d6w"]
[ext_resource type="Texture2D" uid="uid://bhhxd7cphx0q2" path="res://src/items/armor/textures/Atoner's Adornments.png" id="1_cbdby"]
[ext_resource type="Script" uid="uid://dqtp6ewvttoyu" path="res://src/items/armor/ArmorStats.cs" id="2_1at28"]
[resource]
script = ExtResource("2_1at28")
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
_holyResistance = 0.0
_curseResistance = 0.0
Name = "Commitment"
Description = "Armor cannot pass beyond current floor once equipped."
SpawnRate = 0.25
BonusAttack = 0
BonusDefense = 8
BonusLuck = 0.05
BonusHP = 0
BonusVT = 0
AeolicResistance = 0
TelluricResistance = 0
HydricResistance = 0
IgneousResistance = 0
FerrumResistance = 0
HolyResistance = 0
CurseResistance = 0
ThrowSpeed = 12.0
ThrowDamage = 5
ItemTag = 1
Texture = ExtResource("1_cbdby")

View File

@@ -16,7 +16,7 @@ Name = "Gift of Grace"
Description = "Raises VT by 25."
SpawnRate = 0.5
BonusAttack = 0
BonusDefense = 3
BonusDefense = 7
BonusLuck = 0
BonusHP = 0
BonusVT = 25

View File

@@ -1,6 +1,7 @@
[gd_scene load_steps=8 format=3 uid="uid://bgln7hdyyk34r"]
[ext_resource type="Script" uid="uid://c2sps6uamyyw2" path="res://src/items/dropped/DroppedItem.cs" id="1_67jk4"]
[ext_resource type="Texture2D" uid="uid://bhhxd7cphx0q2" path="res://src/items/armor/textures/Atoner's Adornments.png" id="2_x5q15"]
[sub_resource type="SphereShape3D" id="SphereShape3D_28r8g"]
@@ -45,9 +46,6 @@ _data = {
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_eat5q"]
radius = 0.47
[sub_resource type="ViewportTexture" id="ViewportTexture_x5q15"]
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
[node name="DroppedItem" type="RigidBody3D"]
process_mode = 1
collision_layer = 1024
@@ -77,18 +75,14 @@ collision_mask = 0
shape = SubResource("CapsuleShape3D_eat5q")
[node name="Sprite3D" type="Sprite3D" parent="."]
pixel_size = 0.025
pixel_size = 0.005
billboard = 2
texture_filter = 0
texture = SubResource("ViewportTexture_x5q15")
[node name="SubViewportContainer" type="SubViewportContainer" parent="Sprite3D"]
visibility_layer = 0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
offset_right = 125.0
offset_bottom = 125.0
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -97,10 +91,11 @@ transparent_bg = true
handle_input_locally = false
canvas_item_default_texture_filter = 0
canvas_cull_mask = 4293918721
size = Vector2i(30, 30)
size = Vector2i(128, 128)
render_target_update_mode = 4
[node name="Sprite" type="Sprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
unique_name_in_owner = true
texture_filter = 1
offset = Vector2(15, 15)
texture = ExtResource("2_x5q15")
offset = Vector2(64, 64)

View File

@@ -395,6 +395,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
Inventory.Remove(weapon);
break;
case JewelTags.Glue:
if (!EquipmentComponent.IsItemEquipped(weapon))
break;
weapon.Glued = true;
weapon.Augment = new Augment(JewelTags.Glue, new BasicAugment());
break;
@@ -449,6 +451,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
Inventory.Remove(armor);
break;
case JewelTags.Glue:
if (!EquipmentComponent.IsItemEquipped(armor))
break;
armor.Glued = true;
armor.Augment = new Augment(JewelTags.Glue, new BasicAugment());
break;
@@ -503,6 +507,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
Inventory.Remove(accessory);
break;
case JewelTags.Glue:
if (!EquipmentComponent.IsItemEquipped(accessory))
break;
accessory.Glued = true;
accessory.Augment = new Augment(JewelTags.Glue, new BasicAugment());
break;

View File

@@ -44,16 +44,17 @@ public partial class ActionPanel : Panel
public void FocusActionPanel()
{
if (!InteractButton.Disabled)
InteractButton.GrabFocus();
else if (!ThrowButton.Disabled)
ThrowButton.GrabFocus();
else if (!DropButton.Disabled)
DropButton.GrabFocus();
}
public void HideActionPanel()
{
InteractButton.Disabled = false;
ThrowButton.Disabled = false;
DropButton.Disabled = false;
ThrowButton.FocusMode = FocusModeEnum.All;
DropButton.FocusMode = FocusModeEnum.All;
ResetActionPanel();
ActionPanelClosing?.Invoke();
}
@@ -65,6 +66,18 @@ public partial class ActionPanel : Panel
HideActionPanel();
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
}
if (Visible && Input.IsActionJustPressed(GameInputs.MoveUp) && ThrowButton.HasFocus() && !InteractButton.Disabled)
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
if (Visible && Input.IsActionJustPressed(GameInputs.MoveUp) && DropButton.HasFocus() && !ThrowButton.Disabled)
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
if (Visible && Input.IsActionJustPressed(GameInputs.MoveDown) && InteractButton.HasFocus() && !ThrowButton.Disabled)
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
if (Visible && Input.IsActionJustPressed(GameInputs.MoveDown) && ThrowButton.HasFocus() && !DropButton.Disabled)
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
}
private void InteractButton_Pressed()
@@ -90,6 +103,7 @@ public partial class ActionPanel : Panel
private void SetOptions(IBaseInventoryItem item)
{
ResetActionPanel();
SetOptionsInternal((dynamic)item);
}
@@ -98,17 +112,23 @@ public partial class ActionPanel : Panel
InteractButton.Disabled = false;
ThrowButton.Disabled = false;
DropButton.Disabled = false;
InteractButton.FocusMode = FocusModeEnum.All;
ThrowButton.FocusMode = FocusModeEnum.All;
DropButton.FocusMode = FocusModeEnum.All;
}
private void SetOptionsInternal(IEquipableItem equipable)
{
var glued = false;
glued = CheckIfCurrentlyEquippedItemIsGlued(equipable, glued);
var isItemEquipped = _player.EquipmentComponent.IsItemEquipped(equipable);
InteractButton.Text = isItemEquipped ? "Unequip" : "Equip";
InteractButton.Disabled = equipable.Glued;
InteractButton.Disabled = glued;
ThrowButton.Disabled = equipable.Glued || isItemEquipped;
DropButton.Disabled = equipable.Glued || isItemEquipped;
InteractButton.FocusMode = InteractButton.Disabled ? FocusModeEnum.None : FocusModeEnum.All;
ThrowButton.FocusMode = ThrowButton.Disabled ? FocusModeEnum.None : FocusModeEnum.All;
DropButton.FocusMode = DropButton.Disabled ? FocusModeEnum.None : FocusModeEnum.All;
}
@@ -163,4 +183,14 @@ public partial class ActionPanel : Panel
_currentlySelected = null;
ActionPanelClosing?.Invoke();
}
private bool CheckIfCurrentlyEquippedItemIsGlued(IEquipableItem equipable, bool glued)
{
if ((equipable is Weapon && _player.EquipmentComponent.EquippedWeapon.Value != null && _player.EquipmentComponent.EquippedWeapon.Value.Glued) ||
(equipable is Armor && _player.EquipmentComponent.EquippedArmor.Value != null && _player.EquipmentComponent.EquippedArmor.Value.Glued) ||
(equipable is Accessory && _player.EquipmentComponent.EquippedAccessory.Value != null && _player.EquipmentComponent.EquippedAccessory.Value.Glued) ||
(equipable is Ammo && _player.EquipmentComponent.EquippedAmmo.Value != null && _player.EquipmentComponent.EquippedAmmo.Value.Glued))
glued = true;
return glued;
}
}

View File

@@ -37,6 +37,7 @@ public partial class AugmentableItemsMenu : Control
ItemSlots.ForEach(x => x.ItemSelected += ItemSelected);
CancelAugmentButton.Pressed += CancelAugmentButton_Pressed;
ConfirmAugmentButton.Pressed += ConfirmAugmentButton_Pressed;
Hide();
}
private void ConfirmAugmentButton_Pressed()
@@ -54,6 +55,8 @@ public partial class AugmentableItemsMenu : Control
private void CloseAugmentMenu()
{
foreach (var item in ItemSlots)
item.SetEmpty();
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
ConfirmAugmentContainer.Hide();
AugmentMenuClosing?.Invoke();
@@ -64,17 +67,18 @@ public partial class AugmentableItemsMenu : Control
_augmentingItem = augmentingItem;
var inventory = _player.Inventory.Items;
var validSelectableItems = inventory.Except(inventory.OfType<IEquipableItem>().Where(x => x.Glued)).ToList();
ItemSlots.ForEach(x => x.SetEmpty());
var slotIndex = 0;
foreach (var item in inventory)
foreach (var item in validSelectableItems)
{
if (item is IAugmentableItem augmentable && augmentable.Augment == null)
ItemSlots[slotIndex++].SetItemToSlot(item);
}
Show();
ItemSlots.First().FocusItem();
ItemSlots.First(x => x.Item.Value == validSelectableItems.First()).FocusItem();
}
public override void _Input(InputEvent @event)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=3 uid="uid://tpqh7q0xh63c"]
[gd_scene load_steps=18 format=3 uid="uid://tpqh7q0xh63c"]
[ext_resource type="PackedScene" uid="uid://c005nd0m2eim" path="res://src/ui/inventory_menu/ItemSlot.tscn" id="1_a5r0f"]
[ext_resource type="Script" uid="uid://brtic4hw6thox" path="res://src/ui/inventory_menu/AugmentableItemsMenu.cs" id="1_ukqf2"]
@@ -8,8 +8,12 @@
[ext_resource type="StyleBox" uid="uid://bl15q835s4ene" path="res://src/options/UnselectedOptionsBox.tres" id="5_rxojm"]
[ext_resource type="LabelSettings" uid="uid://b6f8ggy3ulonb" path="res://src/ui/label_settings/GeorgiaItalic.tres" id="7_qtvkp"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_qtvkp"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_l0byb"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_p84pf"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7co7g"]
bg_color = Color(0, 0, 0, 0.745098)
@@ -38,40 +42,48 @@ font_size = 40
outline_size = 3
outline_color = Color(0, 0, 0, 1)
[node name="AugmentMenu" type="Panel"]
[node name="PanelContainer" type="PanelContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_l0byb")
theme_override_styles/panel = SubResource("StyleBoxEmpty_qtvkp")
script = ExtResource("1_ukqf2")
[node name="CenterContainer2" type="CenterContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -400.0
offset_top = -512.5
offset_right = 400.0
offset_bottom = 512.5
grow_horizontal = 2
grow_vertical = 2
[node name="AugmentMenu" type="Panel" parent="."]
layout_mode = 2
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_l0byb")
[node name="AugmentableItemsList" type="PanelContainer" parent="CenterContainer2"]
[node name="CenterContainer2" type="PanelContainer" parent="AugmentMenu"]
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -860.0
offset_bottom = -105.0
grow_horizontal = 0
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_p84pf")
[node name="MarginContainer" type="MarginContainer" parent="AugmentMenu/CenterContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 60
theme_override_constants/margin_top = 60
theme_override_constants/margin_right = 60
[node name="AugmentableItemsList" type="PanelContainer" parent="AugmentMenu/CenterContainer2/MarginContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(800, 975)
layout_mode = 2
[node name="Panel" type="Panel" parent="CenterContainer2/AugmentableItemsList"]
[node name="Panel" type="Panel" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_7co7g")
[node name="MarginContainer" type="MarginContainer" parent="CenterContainer2/AugmentableItemsList/Panel"]
[node name="MarginContainer" type="MarginContainer" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -83,12 +95,12 @@ theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5
[node name="ReferenceRect" type="ReferenceRect" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer"]
[node name="ReferenceRect" type="ReferenceRect" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer"]
layout_mode = 2
border_color = Color(1, 1, 1, 1)
editor_only = false
[node name="MarginContainer2" type="MarginContainer" parent="CenterContainer2/AugmentableItemsList/Panel"]
[node name="MarginContainer2" type="MarginContainer" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel"]
layout_mode = 2
offset_right = 800.0
offset_bottom = 1050.0
@@ -97,86 +109,86 @@ theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 25
theme_override_constants/margin_bottom = 15
[node name="Inventory" type="VBoxContainer" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2"]
[node name="Inventory" type="VBoxContainer" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 0
theme_override_constants/separation = 0
[node name="AugmentableSlot" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot2" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot2" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot3" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot3" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot4" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot4" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot5" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot5" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot6" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot6" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot7" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot7" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot8" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot8" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot9" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot9" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot10" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot10" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot11" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot11" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot12" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot12" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot13" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot13" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot14" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot14" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot15" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot15" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot16" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot16" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot17" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot17" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot18" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot18" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="AugmentableSlot19" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
[node name="AugmentableSlot19" parent="AugmentMenu/CenterContainer2/MarginContainer/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
layout_mode = 2
[node name="TitleContainer" type="MarginContainer" parent="."]
[node name="TitleContainer" type="MarginContainer" parent="AugmentMenu"]
layout_mode = 1
offset_right = 450.0
offset_bottom = 160.0
theme_override_constants/margin_left = 50
theme_override_constants/margin_top = 60
[node name="TitlePanelContainer" type="PanelContainer" parent="TitleContainer"]
[node name="TitlePanelContainer" type="PanelContainer" parent="AugmentMenu/TitleContainer"]
custom_minimum_size = Vector2(400, 100)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_ukqf2")
[node name="AugmentTitlePanel" type="Panel" parent="TitleContainer/TitlePanelContainer"]
[node name="AugmentTitlePanel" type="Panel" parent="AugmentMenu/TitleContainer/TitlePanelContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_qtvkp")
[node name="MarginContainer" type="MarginContainer" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel"]
[node name="MarginContainer" type="MarginContainer" parent="AugmentMenu/TitleContainer/TitlePanelContainer/AugmentTitlePanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -188,13 +200,13 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="ReferenceRect" type="ReferenceRect" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer"]
[node name="ReferenceRect" type="ReferenceRect" parent="AugmentMenu/TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer"]
layout_mode = 2
border_color = Color(1, 1, 1, 1)
border_width = 2.0
editor_only = false
[node name="AugmentLabel" type="Label" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer/ReferenceRect"]
[node name="AugmentLabel" type="Label" parent="AugmentMenu/TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer/ReferenceRect"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
@@ -213,7 +225,7 @@ label_settings = SubResource("LabelSettings_p84pf")
horizontal_alignment = 1
vertical_alignment = 1
[node name="DescriptionContainer" type="MarginContainer" parent="."]
[node name="DescriptionContainer" type="MarginContainer" parent="AugmentMenu"]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
@@ -224,36 +236,36 @@ offset_bottom = 150.0
grow_vertical = 2
theme_override_constants/margin_left = 50
[node name="ItemDescriptionPanelContainer" type="PanelContainer" parent="DescriptionContainer"]
[node name="ItemDescriptionPanelContainer" type="PanelContainer" parent="AugmentMenu/DescriptionContainer"]
custom_minimum_size = Vector2(300, 300)
layout_mode = 2
[node name="ItemDescriptionBox" type="Panel" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
[node name="ItemDescriptionBox" type="Panel" parent="AugmentMenu/DescriptionContainer/ItemDescriptionPanelContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_p84pf")
[node name="MarginContainer" type="MarginContainer" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
[node name="MarginContainer" type="MarginContainer" parent="AugmentMenu/DescriptionContainer/ItemDescriptionPanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5
[node name="ReferenceRect" type="ReferenceRect" parent="DescriptionContainer/ItemDescriptionPanelContainer/MarginContainer"]
[node name="ReferenceRect" type="ReferenceRect" parent="AugmentMenu/DescriptionContainer/ItemDescriptionPanelContainer/MarginContainer"]
layout_mode = 2
border_color = Color(1, 1, 1, 1)
border_width = 2.0
editor_only = false
[node name="CenterContainer" type="CenterContainer" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
[node name="CenterContainer" type="CenterContainer" parent="AugmentMenu/DescriptionContainer/ItemDescriptionPanelContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="DescriptionContainer/ItemDescriptionPanelContainer/CenterContainer"]
[node name="Label" type="Label" parent="AugmentMenu/DescriptionContainer/ItemDescriptionPanelContainer/CenterContainer"]
layout_mode = 2
text = "Select an item to augment."
label_settings = ExtResource("7_qtvkp")
[node name="ConfirmAugmentContainer" type="Panel" parent="."]
[node name="ConfirmAugmentContainer" type="Panel" parent="AugmentMenu"]
unique_name_in_owner = true
visible = false
layout_mode = 1
@@ -263,7 +275,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="CenterContainer" type="CenterContainer" parent="ConfirmAugmentContainer"]
[node name="CenterContainer" type="CenterContainer" parent="AugmentMenu/ConfirmAugmentContainer"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -271,45 +283,45 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PanelContainer" type="PanelContainer" parent="ConfirmAugmentContainer/CenterContainer"]
[node name="PanelContainer" type="PanelContainer" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer"]
layout_mode = 2
[node name="Panel" type="Panel" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer"]
[node name="Panel" type="Panel" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer"]
custom_minimum_size = Vector2(400, 250)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_unikd")
[node name="MarginContainer" type="MarginContainer" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer"]
[node name="MarginContainer" type="MarginContainer" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5
[node name="ReferenceRect" type="ReferenceRect" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/MarginContainer"]
[node name="ReferenceRect" type="ReferenceRect" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/MarginContainer"]
layout_mode = 2
border_color = Color(1, 1, 1, 1)
editor_only = false
[node name="CenterContainer" type="CenterContainer" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer"]
[node name="CenterContainer" type="CenterContainer" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer"]
layout_mode = 2
theme_override_constants/separation = 25
[node name="Label" type="Label" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer"]
[node name="Label" type="Label" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer"]
layout_mode = 2
text = "Augment Item?"
label_settings = SubResource("LabelSettings_unikd")
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 20
alignment = 1
[node name="CancelAugmentButton" type="Button" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer/HBoxContainer"]
[node name="CancelAugmentButton" type="Button" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
focus_neighbor_left = NodePath(".")
@@ -331,7 +343,7 @@ theme_override_styles/normal_mirrored = ExtResource("5_rxojm")
theme_override_styles/normal = ExtResource("5_rxojm")
text = "Cancel"
[node name="ConfirmAugmentButton" type="Button" parent="ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer/HBoxContainer"]
[node name="ConfirmAugmentButton" type="Button" parent="AugmentMenu/ConfirmAugmentContainer/CenterContainer/PanelContainer/CenterContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
focus_neighbor_left = NodePath("../CancelAugmentButton")

View File

@@ -54,7 +54,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
ActionPanel.ReturnToGameAction += ActionPanel_ReturnToGameAction;
ActionPanel.AugmentMenuRequested += ActionPanel_AugmentMenuRequested;
AugmentMenu.AugmentMenuClosing += AugmentMenu_AugmentMenuClosing;
AugmentMenu.FocusMode = FocusModeEnum.None;
_player.EquipmentComponent.EquipmentChanged += EquipmentChanged;
_player.AttackComponent.CurrentAttack.Changed += AttackChanged;
_player.AttackComponent.MaximumAttack.Changed += AttackChanged;
@@ -79,9 +78,11 @@ public partial class InventoryMenu : Control, IInventoryMenu
public override void _Input(InputEvent @event)
{
if (Input.IsActionJustPressed(GameInputs.MoveUp) && _currentlySelected != ItemSlots.First())
var validSelectableItems = _player.Inventory.Items.Except(_player.Inventory.Items.OfType<IEquipableItem>().Where(x => x.Glued)).ToList();
if (Input.IsActionJustPressed(GameInputs.MoveUp) && _currentlySelected.Item.Value != validSelectableItems.First())
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
if (Input.IsActionJustPressed(GameInputs.MoveDown) && _currentlySelected != ItemSlots.Last(x => x.Item.Value != null))
if (Input.IsActionJustPressed(GameInputs.MoveDown) && _currentlySelected.Item.Value != validSelectableItems.Last())
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
if (Input.IsActionJustPressed(GameInputs.Interact))
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
@@ -93,8 +94,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
ItemSlots.ForEach(x => x.ItemPressed -= ItemPressed);
ItemSlots.ForEach(x => x.ItemSelected -= ItemSelected);
MenuPanel.Hide();
MenuPanel.FocusMode = FocusModeEnum.None;
AugmentMenu.FocusMode = FocusModeEnum.All;
SetProcessInput(false);
AugmentMenu.SetProcessInput(true);
AugmentMenu.OpenAugmentMenu(_currentlySelected.Item.Value as IAugmentItem);
@@ -136,9 +135,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
_currentlySelected = null;
if (_currentlySelected == null && validSelectableItems.Count > 0)
{
_currentlySelected = ItemSlots.FirstOrDefault(x => x.Item.Value == validSelectableItems.First());
}
if (validSelectableItems.Count > 0)
_currentlySelected.FocusItem();
@@ -167,8 +164,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
ItemSlots.ForEach(x => x.ItemPressed += ItemPressed);
ItemSlots.ForEach(x => x.ItemSelected += ItemSelected);
MenuPanel.Show();
MenuPanel.FocusMode = FocusModeEnum.All;
AugmentMenu.FocusMode = FocusModeEnum.None;
SetProcessInput(true);
AugmentMenu.SetProcessInput(false);
AugmentMenu.Hide();

View File

@@ -406,7 +406,7 @@ layout_mode = 2
[node name="ItemSlot20" parent="Panel/MarginContainer/PanelContainer/MenuPanel/InventoryList/Panel/MarginContainer2/Inventory" instance=ExtResource("6_unikd")]
layout_mode = 2
[node name="AugmentMenu" parent="Panel/MarginContainer/PanelContainer" instance=ExtResource("6_xwkpe")]
[node name="AugmentMenu" parent="." instance=ExtResource("6_xwkpe")]
unique_name_in_owner = true
visible = false
layout_mode = 2

View File

@@ -25,7 +25,7 @@ public partial class ItemSlot : Control, IItemSlot
[Node] public Label ItemCountLabel { get; set; } = default!;
public AutoProp<IBaseInventoryItem> Item { get; } = new AutoProp<IBaseInventoryItem>(default);
public AutoProp<IBaseInventoryItem> Item { get; set; } = new AutoProp<IBaseInventoryItem>(default);
public event Action<IItemSlot> ItemPressed;
@@ -38,6 +38,8 @@ public partial class ItemSlot : Control, IItemSlot
Item.Changed += Item_Changed;
ItemName.Pressed += ItemSlot_Pressed;
ItemName.FocusEntered += FocusItemInternal;
ItemName.Disabled = true;
ItemName.FocusMode = FocusModeEnum.None;
}
public void SetItemToSlot(IBaseInventoryItem item)
@@ -45,6 +47,7 @@ public partial class ItemSlot : Control, IItemSlot
Item.OnNext(item);
ItemTexture.Texture = item.GetTexture();
ItemName.Disabled = false;
ItemName.FocusMode = FocusModeEnum.All;
ItemName.Text = item.ItemName;
if (item is IStackable stackable)
@@ -54,7 +57,7 @@ public partial class ItemSlot : Control, IItemSlot
{
SetItemEquipmentStatus(_player.EquipmentComponent.IsItemEquipped(equipableItem));
ItemName.Disabled = equipableItem.Glued;
ItemName.FocusMode = ItemName.Disabled ? FocusModeEnum.None : FocusModeEnum.All;
ItemName.FocusMode = equipableItem.Glued ? FocusModeEnum.None : FocusModeEnum.All;
}
if (item is IAugmentableItem augmentableItem)
@@ -67,8 +70,9 @@ public partial class ItemSlot : Control, IItemSlot
{
Hide();
ItemName.Disabled = true;
ItemName.FocusMode = FocusModeEnum.None;
Item = new AutoProp<IBaseInventoryItem>(default);
ItemName.Text = string.Empty;
Item.Clear();
ItemTexture.Texture = null;
SetItemEquipmentStatus(false);
SetAugmentStatus(false);
@@ -110,12 +114,8 @@ public partial class ItemSlot : Control, IItemSlot
private void Item_Changed(IBaseInventoryItem obj)
{
if (obj == null)
return;
SetEmpty();
ItemName.Text = obj.ItemName;
if (obj is IEquipableItem equipable)
SetItemEquipmentStatus(_player.EquipmentComponent.IsItemEquipped(equipable));
if (obj is IAugmentableItem augmentable)
SetAugmentStatus(augmentable.Augment != null);
SetItemToSlot(obj);
}
}