Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / roomMap / RoomMapPanel.cs
@小李xl 小李xl on 30 Nov 2023 2 KB 小地图制作中
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
        });

    }
}