Raycaster now has wall collision so won't go through walls. Next step is to render all the sprites being places and then implement the Systems.
This commit is contained in:
parent
75ffb49a53
commit
d6c09e111d
6 changed files with 25 additions and 6 deletions
15
gui.cpp
15
gui.cpp
|
@ -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() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue