A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Game.h 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5. #include "common.h"
  6. #include "World.h"
  7. namespace Swan {
  8. class Game {
  9. public:
  10. Game(Win &win):
  11. win_(win),
  12. mouse_pos_(0, 0),
  13. keys_pressed_(sf::Keyboard::Key::KeyCount, false),
  14. mouse_pressed_(sf::Mouse::Button::ButtonCount, false) {}
  15. void createWorld(const std::string &worldgen);
  16. void onKeyPressed(sf::Keyboard::Key key) { keys_pressed_[(int)key] = true; }
  17. void onKeyReleased(sf::Keyboard::Key key) { keys_pressed_[(int)key] = false; }
  18. void onMouseMove(int x, int y) { mouse_pos_ = Vec2i(x, y); }
  19. void onMousePressed(sf::Mouse::Button button) { mouse_pressed_[(int)button] = true; }
  20. void onMouseReleased(sf::Mouse::Button button) { mouse_pressed_[(int)button] = false; }
  21. TilePos getMouseTile();
  22. Vec2i getMousePos() { return mouse_pos_; }
  23. bool isKeyPressed(sf::Keyboard::Key key) { return keys_pressed_[(int)key]; }
  24. bool isMousePressed(sf::Mouse::Button button) { return mouse_pressed_[(int)button]; }
  25. void draw();
  26. void update(float dt);
  27. void tick(float dt);
  28. std::unique_ptr<World> world_ = NULL;
  29. std::unique_ptr<ImageResource> invalid_image_ = NULL;
  30. std::unique_ptr<Tile> invalid_tile_ = NULL;
  31. std::unique_ptr<Item> invalid_item_ = NULL;
  32. Win &win_;
  33. private:
  34. Vec2i mouse_pos_;
  35. std::vector<bool> keys_pressed_;
  36. std::vector<bool> mouse_pressed_;
  37. };
  38. }