guiscenemanager.cpp 2.4 KB

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