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);
}