mainmenu.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "main_menu/mainmenu.h"
  2. #include "gui/guiscenemanager.h"
  3. #include "soundengine.h"
  4. #include "ui_mainmenu.h"
  5. #include <QString>
  6. #include <QApplication>
  7. #include <QMovie>
  8. #include <QFileInfo>
  9. MainMenu::MainMenu(QWidget *parent) :
  10. Scene(parent),
  11. ui(new Ui::MainMenu)
  12. {
  13. ui->setupUi(this);
  14. // Load animated GIF
  15. watcher = new MainMenuButtonHoverWatcher(this);
  16. ui->hotseat_button->installEventFilter(watcher);
  17. ui->about_us_button->installEventFilter(watcher);
  18. ui->leave_game_button->installEventFilter(watcher);
  19. }
  20. MainMenu::~MainMenu()
  21. {
  22. delete ui;
  23. delete watcher;
  24. }
  25. void MainMenu::init()
  26. {
  27. SoundEngine::getInstance().playlist().addMedia(QUrl("qrc:/assets/main_menu/main_menu_music_1.mp3"));
  28. SoundEngine::getInstance().player().play();
  29. GuiSceneManager::getInstance().show("main_menu_background");
  30. raise();
  31. }
  32. MainMenuButtonHoverWatcher::MainMenuButtonHoverWatcher(QObject * parent) :
  33. QObject(parent)
  34. {}
  35. bool MainMenuButtonHoverWatcher::eventFilter(QObject * watched, QEvent * event) {
  36. QPushButton * button = qobject_cast<QPushButton*>(watched);
  37. if (!button) {
  38. return false;
  39. }
  40. if (event->type() == QEvent::Enter) {
  41. button->setStyleSheet("font: 10pt \"Viking Cyr\";"
  42. "color: rgb(255, 255, 0);"
  43. "border-image: url(:/assets/main_menu/" + button->objectName() + "_hover.png);");
  44. SoundEngine::getInstance().playAsync("qrc:/assets/main_menu/button_hover.mp3");
  45. return false;
  46. }
  47. if (event->type() == QEvent::Leave){
  48. button->setStyleSheet("font: 10pt \"Viking Cyr\";"
  49. "color: rgb(255, 255, 0);"
  50. "border-image: url(:/assets/main_menu/" + button->objectName() + ".png);");
  51. return false;
  52. }
  53. if (event->type() == QEvent::MouseButtonPress) {
  54. SoundEngine::getInstance().playAsync("qrc:/assets/main_menu/button_click.mp3");
  55. return false;
  56. }
  57. return false;
  58. }
  59. void MainMenu::on_hotseat_button_clicked() {
  60. GuiSceneManager::getInstance().changeScene("pvp_intro");
  61. }
  62. void MainMenu::on_leave_game_button_clicked() {
  63. QApplication::exit();
  64. }