using System.Collections.Generic; using System.IO; using Godot; using FileAccess = Godot.FileAccess; namespace ColdMint.scripts.map.room; /// /// The room template factory is used to generate room templates /// 房间模板工厂用于生成房间模板 /// public static class RoomFactory { /// /// A room template sets a path to a room resource /// 房间模板集转房间资源路径 /// /// /// /// Returned value Checked for the existence of the file. /// 返回值已检验文件是否存在。 /// public static string[] RoomTemplateSetToRoomRes(string[] roomTemplateSet) { var resList = new List(); foreach (var roomTemplate in roomTemplateSet) { //Detects whether it is a folder //检测是否为文件夹 if (DirAccess.DirExistsAbsolute(roomTemplate)) { using var dir = DirAccess.Open(roomTemplate); if (dir != null) { dir.ListDirBegin(); var fileName = dir.GetNext(); while (!string.IsNullOrEmpty(fileName)) { if (!dir.CurrentIsDir()) { resList.Add(Path.Join(roomTemplate, fileName)); } fileName = dir.GetNext(); } } } if (FileAccess.FileExists(roomTemplate)) { resList.Add(roomTemplate); } } return resList.ToArray(); } /// /// CreateRoom /// 创建房间模板 /// /// /// public static Room? CreateRoom(string resPath) { //If the file does not exist, null is returned //如果文件不存在,则返回null var exists = FileAccess.FileExists(resPath); if (!exists) { return null; } var room = new Room { RoomScene = GD.Load(resPath) }; return room; } }