|
|
|
@ -36,7 +36,7 @@ namespace gui { |
|
|
|
|
|
|
|
|
|
void FSM::START(Event ) { |
|
|
|
|
// ZED: this must die
|
|
|
|
|
$rayview.$map = generate_map(); |
|
|
|
|
generate_map(); |
|
|
|
|
$rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y); |
|
|
|
|
$rayview.position_camera($player.x + 0.5, $player.y + 0.5); |
|
|
|
|
state(State::IDLE); |
|
|
|
@ -55,6 +55,8 @@ namespace gui { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void FSM::IDLE(Event ev) { |
|
|
|
|
auto& level = $levels.current(); |
|
|
|
|
|
|
|
|
|
using FU = Event; |
|
|
|
|
|
|
|
|
|
switch(ev) { |
|
|
|
@ -89,6 +91,11 @@ namespace gui { |
|
|
|
|
default: |
|
|
|
|
dbc::sentinel("unhandled event in IDLE"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!level.map->can_move({size_t($camera.targetX), size_t($camera.targetY)})) { |
|
|
|
|
state(State::IDLE); |
|
|
|
|
$camera.abort_plan($rayview); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void FSM::END(Event ev) { |
|
|
|
@ -194,14 +201,12 @@ namespace gui { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Matrix FSM::generate_map() { |
|
|
|
|
void FSM::generate_map() { |
|
|
|
|
auto& level = $levels.current(); |
|
|
|
|
auto& tiles = level.map->tiles(); |
|
|
|
|
auto& player = level.world->get_the<Player>(); |
|
|
|
|
auto& player_position = level.world->get<Position>(player.entity); |
|
|
|
|
$player = player_position.location; |
|
|
|
|
|
|
|
|
|
return $textures.convert_char_to_texture(tiles.$tile_ids); |
|
|
|
|
$rayview.set_level(level); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool FSM::active() { |
|
|
|
|