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.

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