2024-07-07 00:46:05 +02:00
|
|
|
mod furniture;
|
2024-07-06 17:59:56 +00:00
|
|
|
mod grid;
|
|
|
|
mod player;
|
2024-07-07 00:01:46 +02:00
|
|
|
mod room;
|
2024-07-06 17:59:56 +00:00
|
|
|
|
2024-07-07 10:04:29 +02:00
|
|
|
use comfy::EngineContext;
|
2024-07-06 17:59:56 +00:00
|
|
|
use grid::Grid;
|
|
|
|
use player::Player;
|
2024-07-07 00:01:46 +02:00
|
|
|
use room::Room;
|
2024-07-06 17:59:56 +00:00
|
|
|
|
2024-07-07 00:48:37 +02:00
|
|
|
#[derive(Debug)]
|
2024-07-06 17:59:56 +00:00
|
|
|
pub struct HouseState {
|
2024-07-07 00:01:46 +02:00
|
|
|
room: Room,
|
|
|
|
//grid: Grid,
|
2024-07-06 17:59:56 +00:00
|
|
|
player: Player
|
|
|
|
}
|
|
|
|
|
2024-07-07 10:04:29 +02:00
|
|
|
pub fn setup(state: &mut crate::State, ctx: &mut EngineContext<'_>) {
|
|
|
|
let house = {
|
|
|
|
let room = Room::new(ctx);
|
2024-07-07 00:48:37 +02:00
|
|
|
let player = Player::new(&room);
|
2024-07-07 10:04:29 +02:00
|
|
|
HouseState { room, player}
|
|
|
|
};
|
|
|
|
|
|
|
|
state.house = Some(house);
|
2024-07-07 00:48:37 +02:00
|
|
|
}
|
|
|
|
|
2024-07-07 10:04:29 +02:00
|
|
|
pub fn draw(state: &crate::State, ctx: &comfy::EngineContext<'_>) {
|
|
|
|
if let Some(house) = &state.house {
|
2024-07-07 00:01:46 +02:00
|
|
|
//Draw House
|
2024-07-07 10:04:29 +02:00
|
|
|
house.room.draw();
|
2024-07-07 00:01:46 +02:00
|
|
|
|
2024-07-06 17:59:56 +00:00
|
|
|
//Draw Grid
|
2024-07-07 00:01:46 +02:00
|
|
|
//state.house.grid.draw();
|
2024-07-06 17:59:56 +00:00
|
|
|
|
|
|
|
//Draw Player
|
2024-07-07 10:04:29 +02:00
|
|
|
house.player.draw();
|
|
|
|
}
|
2024-07-06 17:59:56 +00:00
|
|
|
}
|
|
|
|
|
2024-07-07 10:04:29 +02:00
|
|
|
pub fn update(state: &mut crate::State, ctx: &mut comfy::EngineContext<'_>) {
|
|
|
|
if let Some(house) = &mut state.house {
|
|
|
|
house.player.update(&house.room.grid);
|
|
|
|
|
|
|
|
if house.player.is_moving_to_right_room(&house.room) {
|
|
|
|
house.room = Room::new(ctx);
|
|
|
|
house.player.reset_on_room(&house.room, true);
|
|
|
|
} else if house.player.is_moving_to_left_room(&house.room) {
|
|
|
|
house.room = Room::new(ctx);
|
|
|
|
house.player.reset_on_room(&house.room, false);
|
|
|
|
}
|
2024-07-07 00:48:37 +02:00
|
|
|
}
|
2024-07-06 17:59:56 +00:00
|
|
|
}
|