- using System.Linq;
- using Godot;
-
- namespace UI.RoomMap;
-
- public partial class RoomMapPanel : RoomMap
- {
-
- public override void OnCreateUi()
- {
- DrawRoom();
- }
-
- public override void OnDestroyUi()
- {
- }
-
- public override void Process(float delta)
- {
- // //按下地图按键
- // if (InputManager.Map && !S_RoomMap.Instance.IsOpen)
- // {
- // World.Current.Pause = true;
- // S_RoomMap.Instance.ShowUi();
- // }
- // else if (!InputManager.Map && S_RoomMap.Instance.IsOpen)
- // {
- // S_RoomMap.Instance.HideUi();
- // World.Current.Pause = false;
- // }
-
- S_Root.Instance.Position = S_DrawContainer.Instance.Size / 2 - Player.Current.Position / 12;
- }
-
- private void DrawRoom()
- {
- var startRoom = GameApplication.Instance.DungeonManager.StartRoomInfo;
- startRoom.EachRoom(roomInfo =>
- {
- var navigationPolygonData = roomInfo.RoomSplit.TileInfo.NavigationList[0];
- var points = navigationPolygonData.GetPoints();
- var newPoints = new Vector2[points.Length];
- for (var i = 0; i < points.Length; i++)
- {
- newPoints[i] = roomInfo.ToGlobalPosition(points[i]);
- }
-
- var outline = new PolygonOutline();
- outline.SetPoints(newPoints);
- S_Root.AddChild(outline);
-
- if (roomInfo.Doors != null)
- {
- foreach (var doorInfo in roomInfo.Doors)
- {
- if (doorInfo.IsForward)
- {
- var aislePoints = doorInfo.Navigation.CloseNavigationData.GetPoints();
- var newAislePoints = new Vector2[aislePoints.Length];
- for (var i = 0; i < aislePoints.Length; i++)
- {
- newAislePoints[i] = roomInfo.ToGlobalPosition(aislePoints[i]);
- }
-
- var aisleOutline = new PolygonOutline();
- aisleOutline.SetPoints(newAislePoints);
- S_Root.AddChild(aisleOutline);
- }
- }
- }
- //roomInfo.Doors[0].Navigation.OpenNavigationData
- });
-
- }
- }