guiscenemanager.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "gui/guiscenemanager.h"
  2. #include "gui/gui.h"
  3. #include "gui/mainmenu.h"
  4. #include "gui/playervsplayerintro.h"
  5. #include "gui/prebattlescene.h"
  6. #include "hotseatgame\gui\hotseatgame.h"
  7. GuiSceneManager::GuiSceneManager(QObject *parent) : QObject(parent) {
  8. gui_ = new GUI();
  9. gui_->show();
  10. current_scene_ = "none";
  11. registerScene("main_menu", new MainMenu(gui_->mainContentScene()));
  12. registerScene("pvp_intro", new PlayerVsPlayerIntro(gui_->mainContentScene()));
  13. registerScene("recruit_army", new RecruitmentScene(gui_->mainContentScene()));
  14. registerScene("prebattle", new PreBattleScene(gui_->mainContentScene()));
  15. registerScene("hotseatgame", new HotSeatGame());
  16. changeScene("main_menu");
  17. }
  18. GuiSceneManager::~GuiSceneManager() {}
  19. bool GuiSceneManager::registerScene(QString scene_name, Scene* scene) {
  20. if (scene_name == "none")
  21. return false;
  22. if (scenes_.count(scene_name) != 0) {
  23. delete scene;
  24. return false;
  25. }
  26. scenes_[scene_name] = scene;
  27. return true;
  28. }
  29. bool GuiSceneManager::changeScene(QString scene_name, QString args) {
  30. if (scene_name == "main_window") {
  31. return false;
  32. }
  33. if (current_scene_ != "none")
  34. scenes_[current_scene_]->hide();
  35. scenes_[scene_name]->parseArgs(args);
  36. scenes_[scene_name]->init();
  37. scenes_[scene_name]->show();
  38. current_scene_ = scene_name;
  39. return true;
  40. }
  41. bool GuiSceneManager::hideMainWindow() {
  42. gui_->hide();
  43. return true;
  44. }
  45. bool GuiSceneManager::showMainWindow() {
  46. gui_->show();
  47. return true;
  48. }
  49. bool GuiSceneManager::hideDetachedScene(QString scene_name) {
  50. if (scenes_.count(scene_name) == 0 || !scenes_[scene_name])
  51. return false;
  52. scenes_[scene_name]->hide();
  53. return true;
  54. }
  55. bool GuiSceneManager::showDetachedScene(QString scene_name, QString args) {
  56. if (scenes_.count(scene_name) == 0 || !scenes_[scene_name])
  57. return false;
  58. scenes_[scene_name]->parseArgs(args);
  59. scenes_[scene_name]->init();
  60. scenes_[scene_name]->show();
  61. return true;
  62. }