Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / roomMap / RoomMapPanel.cs
@小李xl 小李xl on 30 Nov 2023 2 KB 小地图,制作中
  1. using System.Linq;
  2. using Godot;
  3.  
  4. namespace UI.RoomMap;
  5.  
  6. public partial class RoomMapPanel : RoomMap
  7. {
  8.  
  9. public override void OnCreateUi()
  10. {
  11. DrawRoom();
  12. }
  13.  
  14. public override void OnDestroyUi()
  15. {
  16. }
  17.  
  18. public override void Process(float delta)
  19. {
  20. // //按下地图按键
  21. // if (InputManager.Map && !S_RoomMap.Instance.IsOpen)
  22. // {
  23. // World.Current.Pause = true;
  24. // S_RoomMap.Instance.ShowUi();
  25. // }
  26. // else if (!InputManager.Map && S_RoomMap.Instance.IsOpen)
  27. // {
  28. // S_RoomMap.Instance.HideUi();
  29. // World.Current.Pause = false;
  30. // }
  31. S_Root.Instance.Position = S_DrawContainer.Instance.Size / 2 - Player.Current.Position / 12;
  32. }
  33. private void DrawRoom()
  34. {
  35. var startRoom = GameApplication.Instance.DungeonManager.StartRoomInfo;
  36. startRoom.EachRoom(roomInfo =>
  37. {
  38. var navigationPolygonData = roomInfo.RoomSplit.TileInfo.NavigationList[0];
  39. var points = navigationPolygonData.GetPoints();
  40. var newPoints = new Vector2[points.Length];
  41. for (var i = 0; i < points.Length; i++)
  42. {
  43. newPoints[i] = roomInfo.ToGlobalPosition(points[i]);
  44. }
  45.  
  46. var outline = new PolygonOutline();
  47. outline.SetPoints(newPoints);
  48. S_Root.AddChild(outline);
  49. if (roomInfo.Doors != null)
  50. {
  51. foreach (var doorInfo in roomInfo.Doors)
  52. {
  53. if (doorInfo.IsForward)
  54. {
  55. var aislePoints = doorInfo.Navigation.CloseNavigationData.GetPoints();
  56. var newAislePoints = new Vector2[aislePoints.Length];
  57. for (var i = 0; i < aislePoints.Length; i++)
  58. {
  59. newAislePoints[i] = roomInfo.ToGlobalPosition(aislePoints[i]);
  60. }
  61.  
  62. var aisleOutline = new PolygonOutline();
  63. aisleOutline.SetPoints(newAislePoints);
  64. S_Root.AddChild(aisleOutline);
  65. }
  66. }
  67. }
  68. //roomInfo.Doors[0].Navigation.OpenNavigationData
  69. });
  70.  
  71. }
  72. }