|
|
@ -8,7 +8,8 @@ namespace gui { |
|
|
|
|
|
|
|
|
|
|
|
MainUI::MainUI(sf::RenderWindow& window) : |
|
|
|
MainUI::MainUI(sf::RenderWindow& window) : |
|
|
|
$window(window), |
|
|
|
$window(window), |
|
|
|
$rayview(RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT) |
|
|
|
$rayview(RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT), |
|
|
|
|
|
|
|
$camera($rayview) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$window.setVerticalSyncEnabled(VSYNC); |
|
|
|
$window.setVerticalSyncEnabled(VSYNC); |
|
|
|
$window.setFramerateLimit(FRAME_LIMIT); |
|
|
|
$window.setFramerateLimit(FRAME_LIMIT); |
|
|
@ -42,6 +43,13 @@ namespace gui { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MainUI::render() { |
|
|
|
void MainUI::render() { |
|
|
|
|
|
|
|
auto aimed_at = $camera.aimed_at(); |
|
|
|
|
|
|
|
if($level.collision->occupied(aimed_at)) { |
|
|
|
|
|
|
|
$rayview.aiming_at = $level.collision->get(aimed_at); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$rayview.aiming_at = 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if($show_level) { |
|
|
|
if($show_level) { |
|
|
|
auto time = $clock.getElapsedTime(); |
|
|
|
auto time = $clock.getElapsedTime(); |
|
|
|
auto st = textures::get("down_the_well"); |
|
|
|
auto st = textures::get("down_the_well"); |
|
|
@ -64,14 +72,15 @@ namespace gui { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool MainUI::play_rotate() { |
|
|
|
bool MainUI::play_rotate() { |
|
|
|
bool done = $camera.play_rotate($rayview); |
|
|
|
bool done = $camera.play_rotate(); |
|
|
|
$needs_render = !done; |
|
|
|
$needs_render = !done; |
|
|
|
|
|
|
|
|
|
|
|
return done; |
|
|
|
return done; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// this could be an optional that returs a Point
|
|
|
|
// this could be an optional that returs a Point
|
|
|
|
std::optional<Point> MainUI::play_move() { |
|
|
|
std::optional<Point> MainUI::play_move() { |
|
|
|
if($camera.play_move($rayview)) { |
|
|
|
if($camera.play_move()) { |
|
|
|
$needs_render = false; |
|
|
|
$needs_render = false; |
|
|
|
Point pos{ |
|
|
|
Point pos{ |
|
|
|
size_t($camera.target_x), |
|
|
|
size_t($camera.target_x), |
|
|
@ -88,15 +97,15 @@ namespace gui { |
|
|
|
// -1 is left, 1 is right
|
|
|
|
// -1 is left, 1 is right
|
|
|
|
$compass_dir = ($compass_dir + dir) % $compass.size(); |
|
|
|
$compass_dir = ($compass_dir + dir) % $compass.size(); |
|
|
|
$overlay_ui.show_text("left", $compass[$compass_dir]); |
|
|
|
$overlay_ui.show_text("left", $compass[$compass_dir]); |
|
|
|
$camera.plan_rotate($rayview, dir); |
|
|
|
$camera.plan_rotate(dir); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Point MainUI::plan_move(int dir, bool strafe) { |
|
|
|
Point MainUI::plan_move(int dir, bool strafe) { |
|
|
|
return $camera.plan_move($rayview, dir, strafe); |
|
|
|
return $camera.plan_move(dir, strafe); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MainUI::abort_plan() { |
|
|
|
void MainUI::abort_plan() { |
|
|
|
$camera.abort_plan($rayview); |
|
|
|
$camera.abort_plan(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MainUI::dead_entity(DinkyECS::Entity entity) { |
|
|
|
void MainUI::dead_entity(DinkyECS::Entity entity) { |
|
|
|