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
{
///
/// 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
/// 计算新的房间放置信息
///
///
///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);
}