summaryrefslogtreecommitdiff
path: root/src/interface.cpp
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2017-12-12 14:57:52 +0100
committerPaweł Redman <pawel.redman@gmail.com>2017-12-12 14:57:52 +0100
commit1fd33b69f7cef5f9dfe1da417717545f34c673d0 (patch)
treedd30ac53136a54b159018bf4aea6d09d77d376fb /src/interface.cpp
parent9f88509c8e440d9bb3430b71708efd69988f461c (diff)
Start moving game logic to src/game.
Diffstat (limited to 'src/interface.cpp')
-rw-r--r--src/interface.cpp134
1 files changed, 0 insertions, 134 deletions
diff --git a/src/interface.cpp b/src/interface.cpp
deleted file mode 100644
index 3a6a294..0000000
--- a/src/interface.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "common.hpp"
-
-namespace interface {
-
-state_t::state_t(sf::RenderWindow *window_, game::state_t *game_)
-{
- window = window_;
- game = game_;
-}
-
-static sf::Vector2f compute_pan(sf::RenderWindow *window, sf::Vector2f pan_ref)
-{
- sf::Vector2i mouse = sf::Mouse::getPosition(*window);
- sf::Vector2f vmouse = window->mapPixelToCoords(mouse);
- return -(vmouse - pan_ref);
-}
-
-void state_t::tick(double dt)
-{
- sf::Vector2u size;
- sf::Event event;
- sf::Vector2f view_size;
- v2f_t wmouse; // Mouse position in world space;
-
- size = window->getSize();
-
- camera.zoom = expfade(camera.zoom, camera.target_zoom, 15, dt);
-
- {
- float view_scale;
-
- view_scale = 3 * exp(camera.zoom * 0.3);
- if (size.x > size.y) {
- view_size.y = view_scale;
- view_size.x = view_scale * size.x / size.y;
- } else {
- view_size.x = view_scale;
- view_size.y = view_scale * size.y / size.x;
- }
-
- window->setView(sf::View(camera.center, view_size));
- }
-
-
- while (window->pollEvent(event)) {
- // FIXME: refactor this nested switch clusterfuck
- switch (event.type) {
- case sf::Event::Closed:
- window->close();
- return;
-
- case sf::Event::MouseButtonPressed:
- wmouse = window->mapPixelToCoords(sf::Vector2i(event.mouseButton.x, event.mouseButton.y));
-
- switch (event.mouseButton.button) {
- case sf::Mouse::Button::Left:
- select.selecting = true;
- select.rect[0] = wmouse;
- select.rect[1] = wmouse;
- break;
-
- case sf::Mouse::Button::Right:
- game->command(wmouse);
- break;
-
- case sf::Mouse::Button::Middle:
- camera.panning = true;
- camera.pan_ref = wmouse;
- break;
-
- default:;
- }
- break;
-
- case sf::Event::MouseButtonReleased:
- switch (event.mouseButton.button) {
- case sf::Mouse::Button::Left:
- if (select.selecting)
- game->select(select.rect);
- select.selecting = false;
- break;
-
- case sf::Mouse::Button::Middle:
- if (camera.panning)
- camera.center += compute_pan(window, camera.pan_ref);
- camera.panning = false;
- break;
-
- default:;
- }
- break;
-
- case sf::Event::MouseWheelScrolled:
- camera.target_zoom -= event.mouseWheelScroll.delta;
- if (camera.target_zoom < 0)
- camera.target_zoom = 0;
- if (camera.target_zoom > 11)
- camera.target_zoom = 11;
- break;
-
- case sf::Event::KeyPressed:
- switch (event.key.code) {
- case sf::Keyboard::Key::F1:
- debug_draw_cmodels ^= 1;
- break;
-
- case sf::Keyboard::Key::F2:
- debug_draw_paths ^= 1;
- break;
-
- case sf::Keyboard::Key::F3:
- debug_draw_tile_coords ^= 1;
- break;
-
- default:;
- }
- default:;
- }
- }
-
- if (camera.panning) {
- sf::Vector2f delta = compute_pan(window, camera.pan_ref);
- window->setView(sf::View(camera.center + delta, view_size));
- } else
- window->setView(sf::View(camera.center, view_size));
-
- // Compute this _after_ the setView above.
- wmouse = window->mapPixelToCoords(sf::Mouse::getPosition(*window));
-
- if (select.selecting)
- select.rect[1] = wmouse;
-}
-
-} // namespace interface