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 / 16; //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 sprite = new Sprite2D(); sprite.Texture = roomInfo.PreviewTexture; sprite.Offset = roomInfo.PreviewOffset; sprite.Position = roomInfo.Position; S_Root.AddChild(sprite); // //房间区域 // 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.AisleNavigation.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(aislePoints); // S_Root.AddChild(aisleOutline); // } // } // } // //roomInfo.Doors[0].Navigation.OpenNavigationData }); } }