using System.Threading.Tasks; using ColdMint.scripts.levelGraphEditor; using ColdMint.scripts.map.dateBean; using ColdMint.scripts.map.room; using Godot; namespace ColdMint.scripts.map.interfaces; /// /// Room placement strategy /// 房间放置策略 /// public interface IRoomPlacementStrategy { /// /// This method is called when the map generator starts generating the map /// 当地图生成器开始生成地图时调用此方法 /// /// /// ///Returning false terminates the build ///返回false则终止生成 /// public Task StartGeneration(Node mapRoot); /// /// Call this method after the build is complete /// 生成完成后调用此方法 /// /// public Task GeneratedComplete(Node mapRoot); /// /// Place the room in the designated location /// 在指定的位置放置房间 /// /// /// /// Room placement information /// 房间放置信息 /// /// /// Placement success or not /// 是否放置成功 /// public Task PlaceRoom(Node mapRoot, RoomPlacementData roomPlacementData); /// /// Calculate new room placement information /// 计算新的房间放置信息 /// /// ///randomNumberGenerator ///随机数生成器 /// /// /// Parent room node /// 父房间节点 /// /// /// New room data to be placed /// 欲放置的新房间数据 /// /// public Task CalculateNewRoomPlacementData(RandomNumberGenerator randomNumberGenerator, Room? parentRoomNode, RoomNodeData newRoomNodeData); /// /// Calculates the placement information for the starting room /// 计算起始房间的放置信息 /// /// /// /// public Task CalculatePlacementDataForStartingRoom( RandomNumberGenerator randomNumberGenerator, RoomNodeData startRoomNodeData); }