Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditor / MapEditorPanel.cs
@小李xl 小李xl on 23 Jul 2023 1 KB 创建地牢组和地牢房间
  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. public bool LoadMap(DungeonRoomSplit roomSplit)
  45. {
  46. return S_TileMap.Instance.Load(roomSplit);
  47. }
  48. //调整地图显示区域大小
  49. private void OnMapViewResized()
  50. {
  51. S_SubViewport.Instance.Size = S_Left.Instance.Size.AsVector2I() - new Vector2I(4, 4);
  52. }
  53.  
  54. private void OnBackClick()
  55. {
  56. //返回上一个Ui
  57. if (PrevUi != null)
  58. {
  59. DisposeUi();
  60. PrevUi.ShowUi();
  61. }
  62. }
  63. }