Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditor / MapEditorPanel.cs
  1. using Godot;
  2. using UI.MapEditorTools;
  3.  
  4. namespace UI.MapEditor;
  5.  
  6. public partial class MapEditorPanel : MapEditor
  7. {
  8. /// <summary>
  9. /// 左上角工具面板
  10. /// </summary>
  11. public MapEditorToolsPanel ToolsPanel { get; private set; }
  12. private EditorTileMapBar _editorTileMapBar;
  13.  
  14. public override void OnCreateUi()
  15. {
  16. _editorTileMapBar = new EditorTileMapBar(this, S_TileMap);
  17. ToolsPanel = S_CanvasLayer.OpenNestedUi<MapEditorToolsPanel>(UiManager.UiName.MapEditorTools);
  18. //S_HSplitContainer.Instance.AnchorLeft
  19. }
  20.  
  21. public override void OnShowUi()
  22. {
  23. S_Left.Instance.Resized += OnMapViewResized;
  24. S_Back.Instance.Pressed += OnBackClick;
  25. OnMapViewResized();
  26. _editorTileMapBar.OnShow();
  27. }
  28.  
  29. public override void OnHideUi()
  30. {
  31. S_Left.Instance.Resized -= OnMapViewResized;
  32. S_Back.Instance.Pressed -= OnBackClick;
  33. _editorTileMapBar.OnHide();
  34. }
  35.  
  36. public override void Process(float delta)
  37. {
  38. _editorTileMapBar.Process(delta);
  39. }
  40.  
  41. /// <summary>
  42. /// 加载地牢, 返回是否加载成功
  43. /// </summary>
  44. /// <param name="dir">文件夹路径</param>
  45. /// <param name="groupName">房间组名</param>
  46. /// <param name="roomType">房间类型</param>
  47. /// <param name="roomName">房间名称</param>
  48. public bool LoadMap(string dir, string groupName, DungeonRoomType roomType, string roomName)
  49. {
  50. return S_TileMap.Instance.Load(dir, groupName, roomType, roomName);
  51. }
  52. //调整地图显示区域大小
  53. private void OnMapViewResized()
  54. {
  55. S_SubViewport.Instance.Size = S_Left.Instance.Size.AsVector2I() - new Vector2I(4, 4);
  56. }
  57.  
  58. private void OnBackClick()
  59. {
  60. //返回上一个Ui
  61. if (PrevUi != null)
  62. {
  63. DisposeUi();
  64. PrevUi.ShowUi();
  65. }
  66. }
  67. }