room-creation #15
1 changed files with 35 additions and 20 deletions
|
@ -18,12 +18,14 @@ enum RoomType {
|
|||
SleepingRoom
|
||||
}
|
||||
|
||||
type Tile = (Vec2, Vec2, Furniture); //(pos, size, furniture)
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Room {
|
||||
room_type: RoomType,
|
||||
pub size: (u8, u8), //(width, height)
|
||||
pub grid: Grid,
|
||||
furnitures: Vec<(Vec2, Vec2, Furniture)> //(pos, size, furniture)
|
||||
furnitures: Vec<Tile>
|
||||
}
|
||||
|
||||
impl RoomType {
|
||||
|
@ -44,9 +46,33 @@ impl Room {
|
|||
let room_type = RoomType::random();
|
||||
let size = Self::random_size(&room_type);
|
||||
|
||||
let mut furnitures = Vec::new();
|
||||
let furnitures = Self::random_room_furniture(&room_type, size, ctx);
|
||||
|
||||
if room_type == RoomType::Kitchen {
|
||||
Room {
|
||||
room_type,
|
||||
size,
|
||||
grid: Self::create_grid(size.0, size.1),
|
||||
furnitures
|
||||
}
|
||||
}
|
||||
|
||||
fn random_size(room_type: &RoomType) -> (u8, u8) {
|
||||
//Kitchen + Living Room 5-8
|
||||
//Bath + sleepingroom 4-6
|
||||
//Toilet 2-3
|
||||
match room_type {
|
||||
RoomType::Kitchen | RoomType::LivingRoom => (random_i32(5, 8) as u8, 3),
|
||||
RoomType::Bath | RoomType::SleepingRoom => (random_i32(4, 6) as u8, 3),
|
||||
RoomType::Toilett => (random_i32(2, 3) as u8, 3)
|
||||
}
|
||||
}
|
||||
|
||||
fn random_room_furniture(room_type: &RoomType, size: (u8, u8), ctx: &mut EngineContext<'_>) -> Vec<Tile> {
|
||||
let mut furnitures = Vec::new();
|
||||
let width = size.0;
|
||||
|
||||
match room_type {
|
||||
RoomType::Kitchen => {
|
||||
furnitures.push((
|
||||
vec2(0.0, 0.0),
|
||||
vec2(1.0, 2.0),
|
||||
|
@ -63,22 +89,11 @@ impl Room {
|
|||
Furniture::new("kitchen", "blender", ctx)
|
||||
));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
Room {
|
||||
room_type,
|
||||
size,
|
||||
grid: Self::create_grid(size.0, size.1),
|
||||
furnitures
|
||||
}
|
||||
}
|
||||
|
||||
fn random_size(room_type: &RoomType) -> (u8, u8) {
|
||||
match room_type {
|
||||
RoomType::Kitchen | RoomType::LivingRoom => (random_i32(5, 8) as u8, 3),
|
||||
RoomType::Bath | RoomType::SleepingRoom => (random_i32(4, 6) as u8, 3),
|
||||
RoomType::Toilett => (random_i32(2, 3) as u8, 3)
|
||||
}
|
||||
}
|
||||
|
||||
fn create_grid(width: u8, height: u8) -> Grid {
|
||||
error!("START GRID CREATION!");
|
||||
|
|
Loading…
Reference in a new issue