Merge branch 'master' into loot_rebuild

This commit is contained in:
Cold-Mint 2024-06-16 20:22:25 +08:00 committed by GitHub
commit 1a25325aa8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 135 additions and 41 deletions

View File

@ -37,26 +37,11 @@ position = Vector2(491, 193)
[node name="CollisionShape2D" type="CollisionShape2D" parent="RoomSlotList/Slot1"] [node name="CollisionShape2D" type="CollisionShape2D" parent="RoomSlotList/Slot1"]
position = Vector2(5, 0) position = Vector2(5, 0)
shape = SubResource("RectangleShape2D_jxmys") shape = SubResource("RectangleShape2D_jxmys")
debug_color = Color(0.854902, 0.14902, 0.823529, 0.419608) debug_color = Color(0, 0.6, 0.701961, 0.419608)
[node name="Marker2D" type="Marker2D" parent="."] [node name="Marker2D" type="Marker2D" parent="."]
position = Vector2(216, 113) position = Vector2(216, 113)
script = ExtResource("2_6p8mv") script = ExtResource("2_6p8mv")
[node name="StaffOfTheUndead" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(231, 116)
[node name="StaffOfTheUndead2" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(113, 149)
[node name="StaffOfTheUndead5" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(213, 177)
[node name="StaffOfTheUndead6" parent="." instance=ExtResource("3_ud0w8")] [node name="StaffOfTheUndead6" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(290, 167) position = Vector2(290, 167)
[node name="StaffOfTheUndead3" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(70, 88)
[node name="StaffOfTheUndead4" parent="." instance=ExtResource("3_ud0w8")]
position = Vector2(367, 85)

View File

@ -1,32 +1,54 @@
[gd_scene load_steps=2 format=3 uid="uid://dsat7xk63bfg2"] [gd_scene load_steps=2 format=3 uid="uid://dsat7xk63bfg2"]
[ext_resource type="Script" path="res://scripts/inventory/PacksackUi.cs" id="1_jgs18"] [ext_resource type="Script" path="res://scripts/loader/uiLoader/PacksackUi.cs" id="1_wm4bu"]
[node name="PacksackUi" type="Control"] [node name="PacksackUi" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_left = 33.0
offset_top = 81.0
offset_right = -58.0
offset_bottom = -35.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_jgs18") script = ExtResource("1_wm4bu")
[node name="GridContainer" type="GridContainer" parent="."] [node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
color = Color(0, 0, 0, 0.294118)
[node name="Label" type="Label" parent="."] [node name="TitleLabel" type="Label" parent="."]
layout_mode = 0 layout_mode = 1
offset_left = 3.0 anchors_preset = 10
offset_top = -43.0 anchor_right = 1.0
offset_right = 43.0 offset_bottom = 30.0
offset_bottom = -18.0 grow_horizontal = 2
text = "背包" text = "ui_name"
horizontal_alignment = 1
[node name="GridContainer" type="GridContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 36.0
offset_top = 57.0
offset_right = -34.0
offset_bottom = -23.0
grow_horizontal = 2
grow_vertical = 2
[node name="ExitButton" type="Button" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -75.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 41.0
grow_horizontal = 0
text = "ui_close"

View File

@ -211,7 +211,7 @@ text = "ui_load"
layout_mode = 2 layout_mode = 2
text = "ui_create_room" text = "ui_create_room"
[node name="ReturnButton" type="Button" parent="HBoxContainer"] [node name="ExitButton" type="Button" parent="HBoxContainer"]
layout_mode = 2 layout_mode = 2
text = "ui_close" text = "ui_close"

View File

@ -84,6 +84,14 @@ offset_right = 20.0
offset_bottom = 25.0 offset_bottom = 25.0
grow_horizontal = 2 grow_horizontal = 2
[node name="BackpackUIContainer" type="Control" parent="CanvasLayer"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="GameOverMenu" parent="CanvasLayer" instance=ExtResource("6_yjmrv")] [node name="GameOverMenu" parent="CanvasLayer" instance=ExtResource("6_yjmrv")]
visible = false visible = false

View File

@ -75,4 +75,14 @@ public static class GameSceneNodeHolder
/// <para>操作提示</para> /// <para>操作提示</para>
/// </summary> /// </summary>
public static RichTextLabel? OperationTipLabel { get; set; } public static RichTextLabel? OperationTipLabel { get; set; }
/// <summary>
/// <para>BackpackUiContainer</para>
/// <para>背包Ui容器</para>
/// </summary>
/// <remarks>
///<para>The knapsack Ui container houses the container of the knapsack ui node. When a user uses a backpack, the node to which his backpack is attached is displayed from within the backpack ui container.</para>
///<para>背包Ui容器内存放的是背包ui节点的容器。当用户使用背包时会从背包ui容器内将其背包对于的节点展示出来。</para>
/// </remarks>
public static Control? BackpackUiContainer { get; set; }
} }

View File

@ -176,7 +176,8 @@ public class UniversalItemContainer : IItemContainer
public ItemSlotNode? Match(IItemStack stack) public ItemSlotNode? Match(IItemStack stack)
{ {
return _itemSlotNodes?.FirstOrDefault(itemSlotNode => itemSlotNode.CanAddItem(stack.GetItem()!)); var item = stack.GetItem();
return item == null ? null : _itemSlotNodes?.FirstOrDefault(itemSlotNode => itemSlotNode.CanAddItem(item));
} }
public ItemSlotNode? Match(Func<ItemSlotNode, bool> predicate) public ItemSlotNode? Match(Func<ItemSlotNode, bool> predicate)

View File

@ -3,6 +3,7 @@ using ColdMint.scripts.pickable;
using ColdMint.scripts.utils; using ColdMint.scripts.utils;
using Godot; using Godot;
using PacksackUi = ColdMint.scripts.loader.uiLoader.PacksackUi;
namespace ColdMint.scripts.item; namespace ColdMint.scripts.item;
@ -38,6 +39,11 @@ public partial class Packsack : PickAbleTemplate
if (_packsackUi == null) if (_packsackUi == null)
{ {
_packsackUi = NodeUtils.InstantiatePackedScene<PacksackUi>(_packedScene,this); _packsackUi = NodeUtils.InstantiatePackedScene<PacksackUi>(_packedScene,this);
if (_packsackUi != null)
{
_packsackUi.Title = Name;
_packsackUi.ItemContainer = ItemContainer;
}
} }
_packsackUi?.Show(); _packsackUi?.Show();

View File

@ -27,6 +27,10 @@ public partial class GameSceneLoader : SceneLoaderTemplate
//加载HotBar //加载HotBar
var hotBar = GetNode<HotBar>("CanvasLayer/Control/VBoxContainer/HotBar"); var hotBar = GetNode<HotBar>("CanvasLayer/Control/VBoxContainer/HotBar");
GameSceneNodeHolder.HotBar = hotBar; GameSceneNodeHolder.HotBar = hotBar;
//Backpack Ui container
//背包Ui容器
var backpackUiContainer = GetNode<Control>("CanvasLayer/BackpackUIContainer");
GameSceneNodeHolder.BackpackUiContainer = backpackUiContainer;
//Load operation prompt //Load operation prompt
//加载操作提示 //加载操作提示
var operationTip = GetNode<RichTextLabel>("CanvasLayer/Control/VBoxContainer/OperationTip"); var operationTip = GetNode<RichTextLabel>("CanvasLayer/Control/VBoxContainer/OperationTip");

View File

@ -308,9 +308,9 @@ public partial class LevelGraphEditorLoader : UiLoaderTemplate
}; };
} }
if (_nodeBinding.ReturnButton != null) if (_nodeBinding.ExitButton != null)
{ {
_nodeBinding.ReturnButton.Pressed += () => _nodeBinding.ExitButton.Pressed += () =>
{ {
if (_mainMenu == null) if (_mainMenu == null)
{ {

View File

@ -1,13 +1,15 @@
using ColdMint.scripts.utils; using ColdMint.scripts.debug;
using ColdMint.scripts.inventory;
using ColdMint.scripts.utils;
using Godot; using Godot;
namespace ColdMint.scripts.inventory; namespace ColdMint.scripts.loader.uiLoader;
/// <summary> /// <summary>
/// <para>Backpack UI</para> /// <para>Backpack UI</para>
/// <para>背包UI</para> /// <para>背包UI</para>
/// </summary> /// </summary>
public partial class PacksackUi : Control public partial class PacksackUi : UiLoaderTemplate
{ {
private IItemContainer? _itemContainer; private IItemContainer? _itemContainer;
@ -15,6 +17,26 @@ public partial class PacksackUi : Control
private GridContainer? _gridContainer; private GridContainer? _gridContainer;
private Label? _titleLabel;
private string? _title;
private Button? _exitButton;
/// <summary>
/// <para>title</para>
/// <para>标题</para>
/// </summary>
public string? Title
{
get => _title;
set
{
_title = value;
SetTile(value);
}
}
/// <summary> /// <summary>
/// <para>Packsack</para> /// <para>Packsack</para>
/// <para>背包</para> /// <para>背包</para>
@ -48,13 +70,43 @@ public partial class PacksackUi : Control
} }
} }
public override void _Ready() /// <summary>
/// <para>SetTile</para>
/// <para>设置标题</para>
/// </summary>
/// <param name="title"></param>
private void SetTile(string? title)
{
if (_titleLabel == null)
{
return;
}
_titleLabel.Text = title;
}
public override void InitializeData()
{ {
_packedScene = GD.Load<PackedScene>("res://prefab/ui/ItemSlot.tscn"); _packedScene = GD.Load<PackedScene>("res://prefab/ui/ItemSlot.tscn");
}
public override void InitializeUi()
{
_gridContainer = GetNode<GridContainer>("GridContainer"); _gridContainer = GetNode<GridContainer>("GridContainer");
_titleLabel = GetNode<Label>("TitleLabel");
_exitButton = GetNode<Button>("ExitButton");
_gridContainer.Columns = Config.HotBarSize; _gridContainer.Columns = Config.HotBarSize;
//If the item container was set before this node was placed in the node tree, load it here. //If the item container was set before this node was placed in the node tree, load it here.
//若物品容器在此节点放置到节点树之前被设置了,那么在这里加载。 //若物品容器在此节点放置到节点树之前被设置了,那么在这里加载。
PlaceItemSlot(_itemContainer); PlaceItemSlot(_itemContainer);
SetTile(_title);
}
public override void LoadUiActions()
{
if (_exitButton != null)
{
_exitButton.Pressed += Hide;
}
} }
} }

View File

@ -17,7 +17,7 @@ public class LevelGraphEditorBinding : INodeBinding
public LineEdit? RoomNameLineEdit; public LineEdit? RoomNameLineEdit;
public LineEdit? RoomDescriptionLineEdit; public LineEdit? RoomDescriptionLineEdit;
public Button? CreateRoomButton; public Button? CreateRoomButton;
public Button? ReturnButton; public Button? ExitButton;
public TextEdit? RoomTemplateCollectionTextEdit; public TextEdit? RoomTemplateCollectionTextEdit;
public Label? RoomTemplateTipsLabel; public Label? RoomTemplateTipsLabel;
public Button? ShowSavePanelButton; public Button? ShowSavePanelButton;
@ -48,7 +48,7 @@ public class LevelGraphEditorBinding : INodeBinding
GraphEdit = root.GetNode<GraphEdit>("GraphEdit"); GraphEdit = root.GetNode<GraphEdit>("GraphEdit");
DeleteSelectedNodeButton = root.GetNode<Button>("HBoxContainer/DeleteSelectedNodeButton"); DeleteSelectedNodeButton = root.GetNode<Button>("HBoxContainer/DeleteSelectedNodeButton");
ShowCreateRoomPanelButton = root.GetNode<Button>("HBoxContainer/ShowCreateRoomPanelButton"); ShowCreateRoomPanelButton = root.GetNode<Button>("HBoxContainer/ShowCreateRoomPanelButton");
ReturnButton = root.GetNode<Button>("HBoxContainer/ReturnButton"); ExitButton = root.GetNode<Button>("HBoxContainer/ExitButton");
CreateOrEditorPanel = root.GetNode<Panel>("CreateOrEditorPanel"); CreateOrEditorPanel = root.GetNode<Panel>("CreateOrEditorPanel");
HideCreateRoomPanelButton = root.GetNode<Button>("CreateOrEditorPanel/HideCreateRoomPanelButton"); HideCreateRoomPanelButton = root.GetNode<Button>("CreateOrEditorPanel/HideCreateRoomPanelButton");
RoomNameLineEdit = root.GetNode<LineEdit>("CreateOrEditorPanel/RoomNameLineEdit"); RoomNameLineEdit = root.GetNode<LineEdit>("CreateOrEditorPanel/RoomNameLineEdit");

View File

@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using ColdMint.scripts.debug; using ColdMint.scripts.debug;
using ColdMint.scripts.inventory;
using ColdMint.scripts.item; using ColdMint.scripts.item;
using ColdMint.scripts.item.weapon; using ColdMint.scripts.item.weapon;
using Godot; using Godot;
using PacksackUi = ColdMint.scripts.loader.uiLoader.PacksackUi;
namespace ColdMint.scripts.utils; namespace ColdMint.scripts.utils;
@ -132,6 +134,10 @@ public static class NodeUtils
return GameSceneNodeHolder.PacksackContainer; return GameSceneNodeHolder.PacksackContainer;
} }
if (GameSceneNodeHolder.BackpackUiContainer!=null && childNode is PacksackUi)
{
return GameSceneNodeHolder.BackpackUiContainer;
}
return defaultParentNode; return defaultParentNode;
} }