using Godot; /// <summary> /// 测试地牢生成 /// </summary> public partial class TestGenerateDungeon : Node2D { [Export] public NodePath TileMapPath; [Export] public NodePath Camera3D; private TileMap _tileMap; private Camera2D _camera; private GenerateDungeon _generateDungeon; private Font _font; // public override void _Ready() // { // _tileMap = GetNode<TileMap>(TileMapPath); // _camera = GetNode<Camera2D>(Camera3D); // // _font = ResourceManager.Load<Font>(ResourcePath.resource_font_cn_font_36_tres); // // _generateDungeon = new GenerateDungeon(); // _generateDungeon.Generate(); // // foreach (var info in _generateDungeon.RoomInfos) // { // //临时铺上地砖 // var id = (int)_tileMap.TileSet.GetTilesIds()[0]; // for (int i = 0; i < info.Size.X; i++) // { // for (int j = 0; j < info.Size.Y; j++) // { // _tileMap.SetCell(i + (int)info.Position.X, j + (int)info.Position.Y, id); // } // } // } // } // // public override void _Process(float delta) // { // //移动相机位置 // var dir = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down"); // _camera.Position += dir * 1000 * delta; // // Update(); // } // // public override void _Draw() // { // DrawRoomInfo(_generateDungeon.StartRoom); // // } // // private void DrawRoomInfo(RoomInfo room) // { // var cellSize = _tileMap.CellSize; // var pos1 = (room.Position + room.Size / 2) * cellSize; // foreach (var nextRoom in room.Next) // { // var pos2 = (nextRoom.Position + nextRoom.Size / 2) * cellSize; // DrawLine(pos1, pos2, Colors.Red); // DrawRoomInfo(nextRoom); // } // // DrawString(_font, pos1, room.Id.ToString(), Colors.Yellow); // // foreach (var roomDoor in room.Doors) // { // var originPos = roomDoor.OriginPosition * cellSize; // switch (roomDoor.Direction) // { // case DoorDirection.E: // DrawLine(originPos, originPos + new Vector2(3, 0) * cellSize, Colors.Yellow); // DrawLine(originPos + new Vector2(0, 4) * cellSize, originPos + new Vector2(3, 4) * cellSize, // Colors.Yellow); // break; // case DoorDirection.W: // DrawLine(originPos, originPos - new Vector2(3, 0) * cellSize, Colors.Yellow); // DrawLine(originPos + new Vector2(0, 4) * cellSize, originPos - new Vector2(3, -4) * cellSize, // Colors.Yellow); // break; // case DoorDirection.S: // DrawLine(originPos, originPos + new Vector2(0, 3) * cellSize, Colors.Yellow); // DrawLine(originPos + new Vector2(4, 0) * cellSize, originPos + new Vector2(4, 3) * cellSize, // Colors.Yellow); // break; // case DoorDirection.N: // DrawLine(originPos, originPos - new Vector2(0, 3) * cellSize, Colors.Yellow); // DrawLine(originPos + new Vector2(4, 0) * cellSize, originPos - new Vector2(-4, 3) * cellSize, // Colors.Yellow); // break; // } // // if (roomDoor.HasCross && roomDoor.RoomInfo.Id < roomDoor.ConnectRoom.Id) // { // DrawRect(new Rect2(roomDoor.Cross * cellSize, cellSize * 4), Colors.Yellow); // } // } // // //绘制地图上被占用的网格 // // _generateDungeon.RoomGrid.ForEach((x, y, value) => // // { // // DrawRect(new Rect2(new Vector2(x, y) * cellSize + new Vector2(6, 6), new Vector2(4, 4)), Colors.Green); // // }); // } }