game.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #ifndef __GAME_H
  2. #define __GAME_H
  3. struct Game {
  4. Player p;
  5. // HACK TODO WARNING
  6. // Magic number
  7. static const unsigned int GRID_W = 256;
  8. static const unsigned int GRID_H = 256;
  9. unsigned int game_seed;
  10. bool debug_enabled;
  11. size_t n_skin;
  12. Game(bool debug, size_t _n_skin) : debug_enabled(debug), n_skin(_n_skin) {}
  13. template <typename SINK>
  14. void save(SINK& s) {
  15. serialize::write(s, game_seed);
  16. serialize::write(s, p);
  17. }
  18. template <typename SOURCE>
  19. void load(SOURCE& s) {
  20. serialize::read(s, game_seed);
  21. serialize::read(s, p);
  22. }
  23. // generation
  24. template <typename FUNC>
  25. void generate(GameState& state, FUNC progressbar);
  26. // rendering
  27. void make_screen(mainloop::screen_params_t& sp, GameState& state);
  28. void set_skin(GameState& state, unsigned int x, unsigned int y);
  29. void drawing_context(mainloop::drawing_context_t& ctx, const GameState& state);
  30. void draw_hud(GameState& state);
  31. // processing
  32. void init(GameState& state, unsigned int address, unsigned int seed);
  33. void dispose(GameState& state);
  34. void endgame(GameState& state, const std::string& name, unsigned int address, unsigned int seed);
  35. void process_world(GameState& state,
  36. bool& done, bool& dead, bool& regen, bool& need_input, bool& do_draw);
  37. // actions
  38. /* (None as members of this class.) */
  39. // ui
  40. void handle_input(GameState& state, GameOptions& options,
  41. bool& done, bool& dead, bool& regen,
  42. maudit::keypress k);
  43. template <typename FUNC>
  44. void goodbye_message(GameState& state, FUNC println);
  45. };
  46. enum class screens_t : unsigned int {
  47. messages = 0,
  48. inventory,
  49. inv_item,
  50. floor_item,
  51. spells,
  52. help,
  53. tombstone,
  54. howto,
  55. achievements,
  56. monsters,
  57. victory_status,
  58. stats,
  59. overmap,
  60. bank_main,
  61. bank_withdrawal,
  62. bank_deposit,
  63. bank_buy,
  64. bank_buy_confirm,
  65. options
  66. };
  67. #include "game_generation.h"
  68. #include "game_rendering.h"
  69. #include "game_processing.h"
  70. #include "bank_screens.h"
  71. #include "actions.h"
  72. #include "inv_screens.h"
  73. #include "look_screens.h"
  74. #include "apply.h"
  75. #include "inv_screens2.h"
  76. #include "highscore.h"
  77. #include "game_ui.h"
  78. #endif