|
|
|
@ -12,7 +12,7 @@ |
|
|
|
|
|
|
|
|
|
using namespace components; |
|
|
|
|
|
|
|
|
|
void draw_gui(sf::RenderWindow &window, sf::Text &text, Stats &stats) { |
|
|
|
|
void draw_gui(sf::RenderWindow &window, Raycaster &rayview, sf::Text &text, Stats &stats) { |
|
|
|
|
sf::RectangleShape rect({SCREEN_WIDTH - RAY_VIEW_WIDTH, SCREEN_HEIGHT}); |
|
|
|
|
|
|
|
|
|
rect.setPosition({0,0}); |
|
|
|
@ -20,8 +20,11 @@ void draw_gui(sf::RenderWindow &window, sf::Text &text, Stats &stats) { |
|
|
|
|
window.draw(rect); |
|
|
|
|
|
|
|
|
|
text.setString( |
|
|
|
|
fmt::format("FPS\nmean:{:>8.5}\nsdev: {:>8.5}\nmin: {:>8.5}\nmax: {:>8.5}\ncount:{:<10}\n\nVSync? {}\nFR Limit: {}\nDebug? {}\n\nHit R to reset.", |
|
|
|
|
stats.mean(), stats.stddev(), stats.min, stats.max, stats.n, VSYNC, FRAME_LIMIT, DEBUG_BUILD)); |
|
|
|
|
fmt::format("FPS\nmean:{:>8.5}\nsdev: {:>8.5}\nmin: {:>8.5}\nmax: {:>8.5}\ncount:{:<10}\n\nVSync? {}\nFR Limit: {}\nDebug? {}\n\nHit R to reset.\n\ndir: {:>2.2},{:>2.2}\npos: {:>2.2},{:>2.2}", |
|
|
|
|
stats.mean(), stats.stddev(), stats.min, |
|
|
|
|
stats.max, stats.n, VSYNC, |
|
|
|
|
FRAME_LIMIT, DEBUG_BUILD, rayview.$dirX, |
|
|
|
|
rayview.$dirY, rayview.$posX, rayview.$posY)); |
|
|
|
|
window.draw(text); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -64,12 +67,20 @@ inline void handle_window_events(sf::RenderWindow &window, Raycaster &rayview, |
|
|
|
|
state = MOVE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(key->scancode == sf::Keyboard::Scan::D) { |
|
|
|
|
if(key->scancode == sf::Keyboard::Scan::Q) { |
|
|
|
|
camera.plan_rotate(rayview, 1); |
|
|
|
|
state = ROTATE; |
|
|
|
|
} else if(key->scancode == sf::Keyboard::Scan::E) { |
|
|
|
|
camera.plan_rotate(rayview, -1); |
|
|
|
|
state = ROTATE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(key->scancode == sf::Keyboard::Scan::D) { |
|
|
|
|
camera.plan_strafe(rayview, -1); |
|
|
|
|
state = STRAFE; |
|
|
|
|
} else if(key->scancode == sf::Keyboard::Scan::A) { |
|
|
|
|
camera.plan_rotate(rayview, 1); |
|
|
|
|
state = ROTATE; |
|
|
|
|
camera.plan_strafe(rayview, 1); |
|
|
|
|
state = STRAFE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -131,7 +142,7 @@ int main() { |
|
|
|
|
stats.sample(1/elapsed.count()); |
|
|
|
|
|
|
|
|
|
auto weapon_sprite_ptr = rayview.$textures.sword.sprite; |
|
|
|
|
draw_gui(window, text, stats); |
|
|
|
|
draw_gui(window, rayview, text, stats); |
|
|
|
|
draw_weapon(window, *weapon_sprite_ptr, rotation); |
|
|
|
|
window.display(); |
|
|
|
|
|
|
|
|
@ -146,12 +157,15 @@ int main() { |
|
|
|
|
state = IDLE; |
|
|
|
|
} |
|
|
|
|
} else if(state == STRAFE) { |
|
|
|
|
state = IDLE; |
|
|
|
|
if(camera.play_strafe(rayview)) { |
|
|
|
|
state = IDLE; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
dbc::sentinel("invalid move state."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key::R)) { |
|
|
|
|
rayview.position_camera(player.x + 0.5, player.y + 0.5); |
|
|
|
|
stats.reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|