diff --git a/DungeonShooting_Godot/prefab/ui/EditorTools.tscn b/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
index 27e37f9..1089ea7 100644
--- a/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
+++ b/DungeonShooting_Godot/prefab/ui/EditorTools.tscn
@@ -166,9 +166,10 @@
[node name="Confirm" type="ConfirmationDialog" parent="."]
initial_position = 1
-size = Vector2i(200, 124)
+size = Vector2i(350, 200)
unresizable = true
[node name="Tips" type="AcceptDialog" parent="."]
initial_position = 1
+size = Vector2i(350, 200)
unresizable = true
diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorCreateRoom.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorCreateRoom.tscn
new file mode 100644
index 0000000..eb89af9
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/ui/MapEditorCreateRoom.tscn
@@ -0,0 +1,11 @@
+[gd_scene load_steps=2 format=3 uid="uid://bfx6u04j0pbnu"]
+
+[ext_resource type="Script" path="res://src/game/ui/mapEditorCreateRoom/MapEditorCreateRoomPanel.cs" id="1_dep3f"]
+
+[node name="MapEditorCreateRoom" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1_dep3f")
+Layer = 3
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
index b20c9a6..c36be94 100644
--- a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://chd2vtesap5cf"
-path="res://.godot/imported/enemy0001.png-1247a3ddf8a1a163d812cad12c4340fd.ctex"
+path="res://.godot/imported/Enemy0001.png-148a38dfa95953b26d890356e8875de4.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://resource/sprite/role/enemy0001/enemy0001.png"
-dest_files=["res://.godot/imported/enemy0001.png-1247a3ddf8a1a163d812cad12c4340fd.ctex"]
+source_file="res://resource/sprite/role/enemy0001/Enemy0001.png"
+dest_files=["res://.godot/imported/Enemy0001.png-148a38dfa95953b26d890356e8875de4.ctex"]
[params]
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
index 56388a2..d563acf 100644
--- a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d2f55lu60x64i"
-path="res://.godot/imported/enemy0001_Debris.png-297a2fb6680cb862a9a085cf58f8268c.ctex"
+path="res://.godot/imported/Enemy0001_Debris.png-ac416dc79cd3c1217b27e1ef1fbe0d0b.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://resource/sprite/role/enemy0001/enemy0001_Debris.png"
-dest_files=["res://.godot/imported/enemy0001_Debris.png-297a2fb6680cb862a9a085cf58f8268c.ctex"]
+source_file="res://resource/sprite/role/enemy0001/Enemy0001_Debris.png"
+dest_files=["res://.godot/imported/Enemy0001_Debris.png-ac416dc79cd3c1217b27e1ef1fbe0d0b.ctex"]
[params]
diff --git a/DungeonShooting_Godot/src/framework/ui/UiManager.cs b/DungeonShooting_Godot/src/framework/ui/UiManager.cs
index a9b5a61..15c8aa5 100644
--- a/DungeonShooting_Godot/src/framework/ui/UiManager.cs
+++ b/DungeonShooting_Godot/src/framework/ui/UiManager.cs
@@ -109,15 +109,34 @@
}
///
- /// 根据Ui资源路径打开Ui, 并返回Ui实例, 该Ui资源的场景根节点必须继承
+ /// 根据Ui资源路径创建Ui, 并返回Ui实例, 该Ui资源的场景根节点必须继承
+ /// 该函数不会自动打开Ui, 需要手动调用 ShowUi() 函数来显示Ui
///
- public static UiBase OpenUi(string uiName)
+ public static UiBase CreateUi(string uiName)
{
var packedScene = ResourceManager.Load("res://" + GameConfig.UiPrefabDir + uiName + ".tscn");
var uiBase = packedScene.Instantiate();
var canvasLayer = GetUiLayer(uiBase.Layer);
canvasLayer.AddChild(uiBase);
uiBase.OnCreateUi();
+ return uiBase;
+ }
+
+ ///
+ /// 根据Ui资源路径创建Ui, 并返回Ui实例, 该Ui资源的场景根节点必须继承
+ /// 该函数不会自动打开Ui, 需要手动调用 ShowUi() 函数来显示Ui
+ ///
+ public static T CreateUi(string uiName) where T : UiBase
+ {
+ return (T)CreateUi(uiName);
+ }
+
+ ///
+ /// 根据Ui资源路径打开Ui, 并返回Ui实例, 该Ui资源的场景根节点必须继承
+ ///
+ public static UiBase OpenUi(string uiName)
+ {
+ var uiBase = CreateUi(uiName);
uiBase.ShowUi();
return uiBase;
}
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index faf53ee..4dfc545 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -52,6 +52,7 @@
public const string prefab_ui_Loading_tscn = "res://prefab/ui/Loading.tscn";
public const string prefab_ui_Main_tscn = "res://prefab/ui/Main.tscn";
public const string prefab_ui_MapEditor_tscn = "res://prefab/ui/MapEditor.tscn";
+ public const string prefab_ui_MapEditorCreateRoom_tscn = "res://prefab/ui/MapEditorCreateRoom.tscn";
public const string prefab_ui_MapEditorProject_tscn = "res://prefab/ui/MapEditorProject.tscn";
public const string prefab_ui_MapEditorTools_tscn = "res://prefab/ui/MapEditorTools.tscn";
public const string prefab_ui_RoomUI_tscn = "res://prefab/ui/RoomUI.tscn";
diff --git a/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs b/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
index 5144e3b..f1444e5 100644
--- a/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
+++ b/DungeonShooting_Godot/src/game/manager/UiManager_Methods.cs
@@ -11,6 +11,7 @@
public const string Loading = "Loading";
public const string Main = "Main";
public const string MapEditor = "MapEditor";
+ public const string MapEditorCreateRoom = "MapEditorCreateRoom";
public const string MapEditorProject = "MapEditorProject";
public const string MapEditorTools = "MapEditorTools";
public const string RoomUI = "RoomUI";
@@ -218,6 +219,46 @@
}
///
+ /// 打开 MapEditorCreateRoom, 并返回UI实例
+ ///
+ public static UI.MapEditorCreateRoom.MapEditorCreateRoomPanel Open_MapEditorCreateRoom()
+ {
+ return OpenUi(UiName.MapEditorCreateRoom);
+ }
+
+ ///
+ /// 隐藏 MapEditorCreateRoom 的所有实例
+ ///
+ public static void Hide_MapEditorCreateRoom()
+ {
+ var uiInstance = Get_MapEditorCreateRoom_Instance();
+ foreach (var uiPanel in uiInstance)
+ {
+ uiPanel.HideUi();
+ }
+ }
+
+ ///
+ /// 销毁 MapEditorCreateRoom 的所有实例
+ ///
+ public static void Dispose_MapEditorCreateRoom()
+ {
+ var uiInstance = Get_MapEditorCreateRoom_Instance();
+ foreach (var uiPanel in uiInstance)
+ {
+ uiPanel.DisposeUi();
+ }
+ }
+
+ ///
+ /// 获取所有 MapEditorCreateRoom 的实例, 如果没有实例, 则返回一个空数组
+ ///
+ public static UI.MapEditorCreateRoom.MapEditorCreateRoomPanel[] Get_MapEditorCreateRoom_Instance()
+ {
+ return GetUiInstance(nameof(UI.MapEditorCreateRoom.MapEditorCreateRoom));
+ }
+
+ ///
/// 打开 MapEditorProject, 并返回UI实例
///
public static UI.MapEditorProject.MapEditorProjectPanel Open_MapEditorProject()
diff --git a/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs b/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
index 98bbdf7..7e9eaf8 100644
--- a/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/editorTools/EditorToolsPanel.cs
@@ -186,7 +186,7 @@
/// 当窗口关闭时的回调
public void ShowTips(string title, string message, Action onClose = null)
{
- ShowTips(title, message, 200, 124, onClose);
+ ShowTips(title, message, 350, 200, onClose);
}
///
@@ -224,7 +224,7 @@
/// 当窗口关闭时的回调, 参数如果为 true 表示点击了确定按钮
public void ShowConfirm(string title, string message, Action onClose = null)
{
- ShowConfirm(title, message, 200, 124, onClose);
+ ShowConfirm(title, message, 350, 200, onClose);
}
///
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoom.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoom.cs
new file mode 100644
index 0000000..ff99457
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoom.cs
@@ -0,0 +1,14 @@
+namespace UI.MapEditorCreateRoom;
+
+///
+/// Ui代码, 该类是根据ui场景自动生成的, 请不要手动编辑该类, 以免造成代码丢失
+///
+public abstract partial class MapEditorCreateRoom : UiBase
+{
+
+ public MapEditorCreateRoom() : base(nameof(MapEditorCreateRoom))
+ {
+ }
+
+
+}
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoomPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoomPanel.cs
new file mode 100644
index 0000000..81fcff8
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorCreateRoom/MapEditorCreateRoomPanel.cs
@@ -0,0 +1,36 @@
+using Godot;
+
+namespace UI.MapEditorCreateRoom;
+
+public partial class MapEditorCreateRoomPanel : MapEditorCreateRoom
+{
+
+ public override void OnCreateUi()
+ {
+ //S_ConfirmationDialog.Instance.Title = "创建地牢房间";
+ }
+
+ public override void OnShowUi()
+ {
+ //S_ConfirmationDialog.Instance.VisibilityChanged += OnVisibilityChanged;
+ }
+
+ public override void OnHideUi()
+ {
+ //S_ConfirmationDialog.Instance.VisibilityChanged -= OnVisibilityChanged;
+ }
+
+ public override void OnDisposeUi()
+ {
+
+ }
+
+ private void OnVisibilityChanged()
+ {
+ //if (!S_ConfirmationDialog.Instance.Visible)
+ {
+ GD.Print("关闭UI");
+ DisposeUi();
+ }
+ }
+}
diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
index d5d8d93..c9d36d6 100644
--- a/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/mapEditorProject/MapEditorProjectPanel.cs
@@ -42,9 +42,17 @@
public override void OnShowUi()
{
+ S_GroupSearchButton.Instance.Pressed += OnSearchButtonClick;
+ S_RoomAddButton.Instance.Pressed += OnCreateRoomClick;
RefreshGroup();
}
+ public override void OnHideUi()
+ {
+ S_GroupSearchButton.Instance.Pressed -= OnSearchButtonClick;
+ S_RoomAddButton.Instance.Pressed -= OnCreateRoomClick;
+ }
+
public override void OnDisposeUi()
{
_groupGrid.Destroy();
@@ -54,10 +62,13 @@
_roomGrid = null;
}
+ ///
+ /// 刷新组数据
+ ///
public void RefreshGroup()
{
MapProjectManager.RefreshMapGroup();
- _groupGrid.SetDataList(MapProjectManager.GroupData.Values.ToArray());
+ OnSearchButtonClick();
}
public void SelectGroup(MapProjectManager.MapGroupInfo group)
@@ -76,4 +87,30 @@
//加载地牢
mapEditor.LoadMap(room.RootPath, room.Group, room.RoomType, room.Name);
}
+
+ //搜索组按钮点击
+ private void OnSearchButtonClick()
+ {
+ //输入文本
+ var text = S_GroupSearchInput.Instance.Text;
+ if (!string.IsNullOrEmpty(text))
+ {
+ var str = text.Trim().ToLower();
+ var result = MapProjectManager.GroupData.Values.Where(info =>
+ {
+ return info.Name.Trim().ToLower().Contains(str);
+ });
+ _groupGrid.SetDataList(result.ToArray());
+ }
+ else
+ {
+ _groupGrid.SetDataList(MapProjectManager.GroupData.Values.ToArray());
+ }
+ }
+
+ //创建地牢房间按钮点击
+ private void OnCreateRoomClick()
+ {
+ UiManager.Open_MapEditorCreateRoom();
+ }
}