guiscenemanager.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "gui/guiscenemanager.h"
  2. #include "ui/main_menu/mainmenu.h"
  3. #include "ui/main_menu/mainmenubackground.h"
  4. #include "ui/hotseat_recruitment/recruitmentscene.h"
  5. #include "ui/hotseat_intro/playervsplayerintro.h"
  6. #include "ui/hotseat_prebattle/prebattlescene.h"
  7. #include "ui/hotseat_game/hotseatgame.h"
  8. #include <QResource>
  9. #include <QApplication>
  10. #include <QFontDatabase>
  11. #include <QTimer>
  12. GuiSceneManager::GuiSceneManager(QObject *parent) : QObject(parent) {
  13. window_ = new QMainWindow(nullptr, Qt::Window | Qt::FramelessWindowHint);
  14. window_->setWindowTitle("Супер-мега-клёвая-игрушка-название-которой-мы-ещё-не-придумали");
  15. window_->setWindowState(Qt::WindowFullScreen);
  16. window_->show();
  17. current_scene_ = "none";
  18. QResource::registerResource(QApplication::applicationDirPath() + "/res/game_ui_data.gtr");
  19. QResource::registerResource(QApplication::applicationDirPath() + "/res/unit_data.gtr");
  20. QResource::registerResource(QApplication::applicationDirPath() + "/res/spell_data.gtr");
  21. QResource::registerResource(QApplication::applicationDirPath() + "/res/effect_data.gtr");
  22. QResource::registerResource(QApplication::applicationDirPath() + "/res/data1.gtr");
  23. QFontDatabase::addApplicationFont(":/assets/fonts/barocco-initial.ttf");
  24. QFontDatabase::addApplicationFont(":/assets/fonts/viking-cyr.ttf");
  25. QFontDatabase::addApplicationFont(":/assets/fonts/pixel.otf");
  26. registerScene("main_menu", new MainMenu(window_));
  27. registerScene("main_menu_background", new MainMenuBackground(window_));
  28. registerScene("pvp_intro", new PlayerVsPlayerIntro(window_));
  29. registerScene("recruit_army", new RecruitmentScene(window_));
  30. registerScene("prebattle", new PreBattleScene(window_));
  31. registerScene("hotseatgame", new HotSeatGame(window_));
  32. QTimer::singleShot(100, [=] {
  33. changeScene("main_menu");
  34. });
  35. }
  36. GuiSceneManager::~GuiSceneManager() {}
  37. bool GuiSceneManager::registerScene(QString scene_name, Scene* scene) {
  38. if (scene_name == "none")
  39. return false;
  40. if (scenes_.count(scene_name) != 0) {
  41. delete scene;
  42. return false;
  43. }
  44. scenes_[scene_name] = scene;
  45. return true;
  46. }
  47. bool GuiSceneManager::changeScene(QString scene_name, QString args) {
  48. if (scene_name == "main_window") {
  49. return false;
  50. }
  51. if (current_scene_ != "none") {
  52. scenes_[current_scene_]->deinit();
  53. scenes_[current_scene_]->hide();
  54. window_->takeCentralWidget();
  55. }
  56. scenes_[scene_name]->parseArgs(args);
  57. scenes_[scene_name]->init();
  58. window_->setCentralWidget(scenes_[scene_name]);
  59. scenes_[scene_name]->show();
  60. current_scene_ = scene_name;
  61. return true;
  62. }
  63. bool GuiSceneManager::show(QString scene_name)
  64. {
  65. if (scenes_.count(scene_name) == 0)
  66. return false;
  67. scenes_[scene_name]->resize(window_->size());
  68. scenes_[scene_name]->show();
  69. return true;
  70. }
  71. bool GuiSceneManager::hide(QString scene_name)
  72. {
  73. if (scenes_.count(scene_name) == 0)
  74. return true;
  75. scenes_[scene_name]->hide();
  76. return false;
  77. }