Browse Source

Remaking main_menu scene && adding sound engine && refactoring project structure

Ivan Arkhipov 6 years ago
parent
commit
2d1390142e
55 changed files with 1365 additions and 834 deletions
  1. BIN
      assets/loading_form/icon_loading.gif
  2. BIN
      assets/main_menu/Nick Murray ft. Juliet Lyons – Aeon.mp3
  3. BIN
      assets/main_menu/about_us_button.png
  4. BIN
      assets/main_menu/about_us_button_hover.png
  5. BIN
      assets/main_menu/background.png
  6. BIN
      assets/main_menu/button_click.mp3
  7. BIN
      assets/main_menu/button_hover.mp3
  8. BIN
      assets/main_menu/hotseat_button.png
  9. BIN
      assets/main_menu/hotseat_button_hover.png
  10. BIN
      assets/main_menu/leave_game_button.png
  11. BIN
      assets/main_menu/leave_game_button_hover.png
  12. BIN
      assets/main_menu/main_menu_music_1.mp3
  13. BIN
      assets/main_menu/main_menu_music_1.ogg
  14. BIN
      assets/main_menu/settings_button.png
  15. BIN
      assets/main_menu/settings_button_hover.png
  16. BIN
      assets/main_menu/tree.gif
  17. BIN
      assets/main_menu/tree.psd
  18. 83 65
      client.pro
  19. 0 0
      include/effects/melledamage.h
  20. 0 0
      include/effects/selfheal.h
  21. 0 32
      include/gui/mainmenu.h
  22. 0 413
      include/gui/mainmenu.ui
  23. 2 0
      include/gui/scene.h
  24. 0 292
      include/hotseatgame/gui/playervsplayerintro.ui
  25. 0 0
      include/hotseatgame/raceicon.h
  26. 0 0
      include/hotseatgame/uniticon.h
  27. 0 0
      include/skills/melledamage.h
  28. 0 0
      include/skills/selfheal.h
  29. 0 0
      include/skills/spell.h
  30. 56 0
      include/soundengine.h
  31. 5 0
      res/loading_form.qrc
  32. 17 0
      res/main_menu.qrc
  33. 1 0
      source/gui/guiscenemanager.cpp
  34. 0 28
      source/gui/mainmenu.cpp
  35. 0 0
      source/hotseatgame/raceicon.cpp
  36. 0 0
      source/hotseatgame/uniticon.cpp
  37. 63 0
      source/soundengine.cpp
  38. 0 0
      ui/hotseat_game/hotseatgame.cpp
  39. 0 0
      ui/hotseat_game/hotseatgame.h
  40. 0 0
      ui/hotseat_game/hotseatgame.ui
  41. 1 1
      ui/hotseat_intro/playervsplayerintro.cpp
  42. 0 1
      ui/hotseat_intro/playervsplayerintro.h
  43. 658 0
      ui/hotseat_intro/playervsplayerintro.ui
  44. 2 2
      ui/hotseat_prebattle/prebattlescene.cpp
  45. 0 0
      ui/hotseat_prebattle/prebattlescene.h
  46. 0 0
      ui/hotseat_prebattle/prebattlescene.ui
  47. 0 0
      ui/hotseat_recruitment/recruitmentscene.cpp
  48. 0 0
      ui/hotseat_recruitment/recruitmentscene.h
  49. 0 0
      ui/hotseat_recruitment/recruitmentscene.ui
  50. 0 0
      ui/loading_form/loadingform.cpp
  51. 0 0
      ui/loading_form/loadingform.h
  52. 0 0
      ui/loading_form/loadingform.ui
  53. 82 0
      ui/main_menu/mainmenu.cpp
  54. 40 0
      ui/main_menu/mainmenu.h
  55. 355 0
      ui/main_menu/mainmenu.ui

BIN
assets/loading_form/icon_loading.gif


BIN
assets/main_menu/Nick Murray ft. Juliet Lyons – Aeon.mp3


BIN
assets/main_menu/about_us_button.png


BIN
assets/main_menu/about_us_button_hover.png


BIN
assets/main_menu/background.png


BIN
assets/main_menu/button_click.mp3


BIN
assets/main_menu/button_hover.mp3


BIN
assets/main_menu/hotseat_button.png


BIN
assets/main_menu/hotseat_button_hover.png


BIN
assets/main_menu/leave_game_button.png


BIN
assets/main_menu/leave_game_button_hover.png


BIN
assets/main_menu/main_menu_music_1.mp3


BIN
assets/main_menu/main_menu_music_1.ogg


BIN
assets/main_menu/settings_button.png


BIN
assets/main_menu/settings_button_hover.png


BIN
assets/main_menu/tree.gif


BIN
assets/main_menu/tree.psd


+ 83 - 65
client.pro

@@ -4,7 +4,7 @@
 #
 #-------------------------------------------------
 
-QT       += core gui
+QT       += core gui multimedia
 
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
@@ -24,15 +24,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 INCLUDEPATH += $$PWD/include/
-
-##create_res_folder.target = $$OUT_PWD/res
-#QMAKE_EXTRA_TARGETS += createFolder
-#createFolder.target = createResFolder
-#createFolder.commands =
-
-#POST_TARGETDEPS += createResFolder
-
-#QMAKE_PRE_LINK = $(MKDIR) $$OUT_PWD/res/
+INCLUDEPATH += $$PWD/ui/
 
 # ================================================== #
 
@@ -74,66 +66,92 @@ QMAKE_EXTRA_TARGETS += guiRes
 PRE_TARGETDEPS += BuildResources
 
 # ================================================== #
-SOURCES += \
-    source/main.cpp \
-    source/effects/effect.cpp \
-    source/gui/guiscenemanager.cpp \
-    source/gui/loadingform.cpp \
-    source/gui/mainmenu.cpp \
-    source/gui/scene.cpp \
-    source/hotseatgame/gui/hotseatgame.cpp \
-    source/hotseatgame/gui/playervsplayerintro.cpp \
-    source/hotseatgame/gui/prebattlescene.cpp \
-    source/hotseatgame/gui/raceicon.cpp \
-    source/hotseatgame/gui/recruitmentscene.cpp \
-    source/hotseatgame/gui/uniticon.cpp \
-    source/hotseatgame/gamemanager.cpp \
-    source/hotseatgame/unitsqueue.cpp \
-    source/units/mage.cpp \
-    source/units/unit.cpp \
-    source/units/warrior.cpp \
-    source/cell.cpp \
-    source/playermanager.cpp \
-    source/race.cpp \
-    source/racemanager.cpp
-
-HEADERS += \
-    include/effects/effect.h \
-    include/gui/guiscenemanager.h \
-    include/gui/loadingform.h \
-    include/gui/mainmenu.h \
-    include/gui/scene.h \
-    include/hotseatgame/gui/hotseatgame.h \
-    include/hotseatgame/gui/playervsplayerintro.h \
-    include/hotseatgame/gui/prebattlescene.h \
-    include/hotseatgame/gui/raceicon.h \
-    include/hotseatgame/gui/recruitmentscene.h \
-    include/hotseatgame/gui/uniticon.h \
-    include/hotseatgame/gamemanager.h \
-    include/hotseatgame/unitsqueue.h \
-    include/units/mage.h \
-    include/units/unit.h \
-    include/units/warrior.h \
-    include/abstractfactory.h \
-    include/cell.h \
-    include/player.h \
-    include/playermanager.h \
-    include/race.h \
-    include/racemanager.h
-
-FORMS += \
-    include/gui/loadingform.ui \
-    include/gui/mainmenu.ui \
-    include/hotseatgame/gui/hotseatgame.ui \
-    include/hotseatgame/gui/playervsplayerintro.ui \
-    include/hotseatgame/gui/prebattlescene.ui \
-    include/hotseatgame/gui/recruitmentscene.ui
+SOURCES +=                                      \
+    source/main.cpp                             \
+    source/cell.cpp                             \
+    source/playermanager.cpp                    \
+    source/race.cpp                             \
+    source/racemanager.cpp                      \
+    source/soundengine.cpp                      \
+                                                \
+    source/effects/effect.cpp                   \
+    source/effects/melledamage.cpp              \
+    source/effects/selfheal.cpp                 \
+                                                \
+    source/gui/guiscenemanager.cpp              \
+    source/gui/scene.cpp                        \
+                                                \
+    source/hotseatgame/raceicon.cpp             \
+    source/hotseatgame/uniticon.cpp             \
+    source/hotseatgame/gamemanager.cpp          \
+    source/hotseatgame/unitsqueue.cpp           \
+                                                \
+    source/skills/spell.cpp                     \
+    source/skills/selfheal.cpp                  \
+    source/skills/melledamage.cpp               \
+                                                \
+    source/units/mage.cpp                       \
+    source/units/unit.cpp                       \
+    source/units/warrior.cpp                    \
+                                                \
+    ui/hotseat_game/hotseatgame.cpp             \
+    ui/hotseat_intro/playervsplayerintro.cpp    \
+    ui/hotseat_prebattle/prebattlescene.cpp     \
+    ui/hotseat_recruitment/recruitmentscene.cpp \
+    ui/loading_form/loadingform.cpp             \
+    ui/main_menu/mainmenu.cpp                   \
+
+HEADERS +=                                      \
+    include/abstractfactory.h                   \
+    include/cell.h                              \
+    include/player.h                            \
+    include/playermanager.h                     \
+    include/race.h                              \
+    include/racemanager.h                       \
+    include/soundengine.h                       \
+                                                \
+    include/effects/effect.h                    \
+    include/effects/melledamage.h               \
+    include/effects/selfheal.h                  \
+                                                \
+    include/gui/guiscenemanager.h               \
+    include/gui/scene.h                         \
+                                                \
+    include/hotseatgame/gamemanager.h           \
+    include/hotseatgame/raceicon.h              \
+    include/hotseatgame/uniticon.h              \
+    include/hotseatgame/unitsqueue.h            \
+                                                \
+    include/skills/melledamage.h                \
+    include/skills/selfheal.h                   \
+    include/skills/spell.h                      \
+                                                \
+    include/units/mage.h                        \
+    include/units/unit.h                        \
+    include/units/warrior.h                     \
+                                                \
+    ui/hotseat_game/hotseatgame.h               \
+    ui/hotseat_intro/playervsplayerintro.h      \
+    ui/hotseat_prebattle/prebattlescene.h       \
+    ui/hotseat_recruitment/recruitmentscene.h   \
+    ui/loading_form/loadingform.h               \
+    ui/main_menu/mainmenu.h
+
+FORMS +=                                        \
+    ui/hotseat_game/hotseatgame.ui              \
+    ui/hotseat_intro/playervsplayerintro.ui     \
+    ui/hotseat_prebattle/prebattlescene.ui      \
+    ui/hotseat_recruitment/recruitmentscene.ui  \
+    ui/loading_form/loadingform.ui              \
+    ui/main_menu/mainmenu.ui
 
 RESOURCES += \
      res/GUI.qrc \
      res/hotseatgame/game_ui.qrc \
      res/hotseatgame/units.qrc \
      res/hotseatgame/spells.qrc \
-     res/hotseatgame/effects.qrc
+     res/hotseatgame/effects.qrc \
+     res/main_menu.qrc \
+     res/loading_form.qrc
 
 RC_ICONS = $$PWD/assets/common/icon.ico

+ 0 - 0
include/effects/MelleDamage.h → include/effects/melledamage.h


+ 0 - 0
include/effects/SelfHeal.h → include/effects/selfheal.h


+ 0 - 32
include/gui/mainmenu.h

@@ -1,32 +0,0 @@
-#ifndef MAINMENU_H
-#define MAINMENU_H
-
-#include "gui/scene.h"
-
-#include <QWidget>
-
-namespace Ui {
-class MainMenu;
-}
-
-class MainMenu : public Scene
-{
-    Q_OBJECT
-
-public:
-    explicit MainMenu(QWidget *parent = 0);
-    ~MainMenu();
-
-    void ParseArgs(QString args) {}
-
-private slots:
-
-    void on_exit_button_clicked();
-
-    void on_pvp_local_battle_button_clicked();
-
-private:
-    Ui::MainMenu *ui;
-};
-
-#endif // MAINMENU_H

+ 0 - 413
include/gui/mainmenu.ui

@@ -1,413 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainMenu</class>
- <widget class="Scene" name="MainMenu">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>1626</width>
-    <height>1186</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
-    <number>0</number>
-   </property>
-   <property name="spacing">
-    <number>0</number>
-   </property>
-   <item row="0" column="0">
-    <widget class="QWidget" name="content_" native="true">
-     <property name="styleSheet">
-      <string notr="true">border-image: url(:/assets/common/background.jpg);</string>
-     </property>
-     <layout class="QGridLayout" name="gridLayout_2">
-      <property name="leftMargin">
-       <number>75</number>
-      </property>
-      <property name="topMargin">
-       <number>150</number>
-      </property>
-      <item row="0" column="0">
-       <widget class="QWidget" name="menu_" native="true">
-        <property name="minimumSize">
-         <size>
-          <width>400</width>
-          <height>600</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>400</width>
-          <height>600</height>
-         </size>
-        </property>
-        <property name="styleSheet">
-         <string notr="true">border-image:none;
-background-image:none;</string>
-        </property>
-        <layout class="QGridLayout" name="gridLayout_3">
-         <property name="leftMargin">
-          <number>0</number>
-         </property>
-         <property name="topMargin">
-          <number>0</number>
-         </property>
-         <property name="rightMargin">
-          <number>0</number>
-         </property>
-         <property name="bottomMargin">
-          <number>0</number>
-         </property>
-         <property name="spacing">
-          <number>0</number>
-         </property>
-         <item row="0" column="0">
-          <widget class="QWidget" name="border_upleft_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-topleft.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="0" column="1">
-          <widget class="QWidget" name="border_up_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>5</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>16777215</width>
-             <height>5</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-top.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="0" column="2">
-          <widget class="QWidget" name="border_upright_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-topright.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="1" column="0">
-          <widget class="QWidget" name="border_left_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>5</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>5</width>
-             <height>16777215</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-left.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="1" column="1">
-          <widget class="QWidget" name="content" native="true">
-           <property name="styleSheet">
-            <string notr="true">background-image: url(:/assets/window/strong_translucent-background.png);</string>
-           </property>
-           <widget class="QPushButton" name="exit_button">
-            <property name="geometry">
-             <rect>
-              <x>10</x>
-              <y>350</y>
-              <width>350</width>
-              <height>100</height>
-             </rect>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>350</width>
-              <height>100</height>
-             </size>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>350</width>
-              <height>100</height>
-             </size>
-            </property>
-            <property name="styleSheet">
-             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
-color: rgb(255, 255, 0);
-border-image: url(:/assets/window/button1.png);
-</string>
-            </property>
-            <property name="text">
-             <string>Выйти из игры</string>
-            </property>
-           </widget>
-           <widget class="QPushButton" name="pvp_local_battle_button">
-            <property name="geometry">
-             <rect>
-              <x>10</x>
-              <y>250</y>
-              <width>350</width>
-              <height>100</height>
-             </rect>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>350</width>
-              <height>100</height>
-             </size>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>350</width>
-              <height>100</height>
-             </size>
-            </property>
-            <property name="font">
-             <font>
-              <family>Viking Cyr</family>
-              <pointsize>10</pointsize>
-              <weight>50</weight>
-              <italic>false</italic>
-              <bold>false</bold>
-             </font>
-            </property>
-            <property name="styleSheet">
-             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
-color: rgb(255, 255, 0);
-border-image: url(:/assets/window/button1.png);
-</string>
-            </property>
-            <property name="text">
-             <string>Игрок против игрока</string>
-            </property>
-            <property name="checkable">
-             <bool>false</bool>
-            </property>
-            <property name="flat">
-             <bool>true</bool>
-            </property>
-           </widget>
-           <widget class="QLabel" name="title_">
-            <property name="geometry">
-             <rect>
-              <x>170</x>
-              <y>10</y>
-              <width>191</width>
-              <height>211</height>
-             </rect>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Ignored" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="styleSheet">
-             <string notr="true">font: 14pt &quot;Barocco Initial&quot;;
-border-image:none;
-background-image:none;</string>
-            </property>
-            <property name="text">
-             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; color:#b12d2d;&quot;&gt;Супер-мега-крутая-игрушка-название-которой-мы-еще-не-придумали&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-            </property>
-            <property name="wordWrap">
-             <bool>true</bool>
-            </property>
-           </widget>
-           <widget class="QWidget" name="widget" native="true">
-            <property name="geometry">
-             <rect>
-              <x>10</x>
-              <y>20</y>
-              <width>150</width>
-              <height>150</height>
-             </rect>
-            </property>
-            <property name="styleSheet">
-             <string notr="true">border-image: url(:/assets/common/logo.png);</string>
-            </property>
-           </widget>
-          </widget>
-         </item>
-         <item row="1" column="2">
-          <widget class="QWidget" name="border_right_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>8</width>
-             <height>16777215</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-right.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="0">
-          <widget class="QWidget" name="border_botleft_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-botleft.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="1">
-          <widget class="QWidget" name="border_bottom_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>16777215</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-bottom.png)</string>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="2">
-          <widget class="QWidget" name="border_botright_" native="true">
-           <property name="minimumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>8</width>
-             <height>8</height>
-            </size>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">background:url(:/assets/window/opaque-border-botright.png)</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </widget>
-      </item>
-      <item row="3" column="0">
-       <spacer name="verticalSpacer">
-        <property name="orientation">
-         <enum>Qt::Vertical</enum>
-        </property>
-        <property name="sizeType">
-         <enum>QSizePolicy::MinimumExpanding</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>20</width>
-          <height>40</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="1">
-       <spacer name="horizontalSpacer">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>40</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-     </layout>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>Scene</class>
-   <extends>QWidget</extends>
-   <header location="global">gui/scene.h</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>

+ 2 - 0
include/gui/scene.h

@@ -15,6 +15,8 @@ public:
 
     virtual void init() {}
 
+    virtual void deinit() {}
+
 signals:
 
 public slots:

+ 0 - 292
include/hotseatgame/gui/playervsplayerintro.ui

@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>PlayerVsPlayerIntro</class>
- <widget class="Scene" name="PlayerVsPlayerIntro">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>1240</width>
-    <height>1001</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QGridLayout" name="gridLayout" rowstretch="0,0">
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
-    <number>0</number>
-   </property>
-   <property name="spacing">
-    <number>0</number>
-   </property>
-   <item row="0" column="0" rowspan="2" colspan="2">
-    <widget class="QWidget" name="widget" native="true">
-     <property name="autoFillBackground">
-      <bool>false</bool>
-     </property>
-     <property name="styleSheet">
-      <string notr="true">border-image: url(:/assets/common/background.jpg)</string>
-     </property>
-     <layout class="QGridLayout" name="gridLayout_3">
-      <property name="leftMargin">
-       <number>20</number>
-      </property>
-      <property name="topMargin">
-       <number>20</number>
-      </property>
-      <property name="rightMargin">
-       <number>20</number>
-      </property>
-      <property name="bottomMargin">
-       <number>20</number>
-      </property>
-      <item row="0" column="0">
-       <widget class="QWidget" name="book_" native="true">
-        <property name="minimumSize">
-         <size>
-          <width>1110</width>
-          <height>871</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>1110</width>
-          <height>871</height>
-         </size>
-        </property>
-        <property name="styleSheet">
-         <string notr="true">border-image:none;
-background-image:none;
-image: url(:/assets/common/book.png);</string>
-        </property>
-        <widget class="QWidget" name="book_content_" native="true">
-         <property name="geometry">
-          <rect>
-           <x>60</x>
-           <y>110</y>
-           <width>951</width>
-           <height>571</height>
-          </rect>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">background: none;
-background-image:none;
-image: none;</string>
-         </property>
-         <widget class="QLabel" name="label">
-          <property name="geometry">
-           <rect>
-            <x>528</x>
-            <y>110</y>
-            <width>356</width>
-            <height>262</height>
-           </rect>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background-image:none;
-image:none;
-border-image: url(:/assets/pvp_intro/picture.jpg);</string>
-          </property>
-          <property name="frameShape">
-           <enum>QFrame::WinPanel</enum>
-          </property>
-          <property name="frameShadow">
-           <enum>QFrame::Raised</enum>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-         </widget>
-         <widget class="QLabel" name="title_1">
-          <property name="geometry">
-           <rect>
-            <x>80</x>
-            <y>156</y>
-            <width>334</width>
-            <height>216</height>
-           </rect>
-          </property>
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background: none;
-background-image:none;
-image: none;</string>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; color:#fdeaa8;&quot;&gt;Этот режим включает в себя стандартное пошаговое сражение между двумя игроками в отсутствие какого-либо сценария. Каждому игроку будет предложено выбрать расу и набрать армию в соответствии с указанным бюджетом. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-          <property name="margin">
-           <number>20</number>
-          </property>
-         </widget>
-         <widget class="QLabel" name="divider_">
-          <property name="geometry">
-           <rect>
-            <x>80</x>
-            <y>110</y>
-            <width>334</width>
-            <height>39</height>
-           </rect>
-          </property>
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background: none;
-background-image:none;
-image: url(:/assets/recruitscene/divider.png);</string>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-         </widget>
-         <widget class="QWidget" name="widget_11" native="true">
-          <property name="geometry">
-           <rect>
-            <x>528</x>
-            <y>379</y>
-            <width>356</width>
-            <height>200</height>
-           </rect>
-          </property>
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>200</height>
-           </size>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background: none;
-background-image:none;
-image: none;</string>
-          </property>
-          <layout class="QGridLayout" name="gridLayout_2">
-           <item row="1" column="2">
-            <widget class="QPushButton" name="go_next">
-             <property name="text">
-              <string>Продолжить</string>
-             </property>
-            </widget>
-           </item>
-           <item row="1" column="3">
-            <widget class="QPushButton" name="back_to_menu">
-             <property name="text">
-              <string>Назад</string>
-             </property>
-            </widget>
-           </item>
-           <item row="0" column="0">
-            <widget class="QLabel" name="label_2">
-             <property name="sizePolicy">
-              <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="text">
-              <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; color:#b12d2d;&quot;&gt;Кол-во монет:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-             </property>
-            </widget>
-           </item>
-           <item row="1" column="0">
-            <spacer name="horizontalSpacer_3">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item row="1" column="1">
-            <spacer name="horizontalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item row="0" column="1" colspan="3">
-            <widget class="QLineEdit" name="money_">
-             <property name="text">
-              <string>1000</string>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </widget>
-         <widget class="QLabel" name="title_">
-          <property name="geometry">
-           <rect>
-            <x>110</x>
-            <y>70</y>
-            <width>303</width>
-            <height>28</height>
-           </rect>
-          </property>
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background: none;
-background-image:none;
-image: none;</string>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:14pt; color:#b12d2d;&quot;&gt;Режим: игрок против игрока&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-         </widget>
-        </widget>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <customwidgets>
-  <customwidget>
-   <class>Scene</class>
-   <extends>QWidget</extends>
-   <header location="global">gui/scene.h</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>

+ 0 - 0
include/hotseatgame/gui/raceicon.h → include/hotseatgame/raceicon.h


+ 0 - 0
include/hotseatgame/gui/uniticon.h → include/hotseatgame/uniticon.h


+ 0 - 0
include/skills/MelleDamage.h → include/skills/melledamage.h


+ 0 - 0
include/skills/SelfHeal.h → include/skills/selfheal.h


+ 0 - 0
include/skills/Spell.h → include/skills/spell.h


+ 56 - 0
include/soundengine.h

@@ -0,0 +1,56 @@
+#ifndef INCLUDESOUNDENGINE_H
+#define INCLUDESOUNDENGINE_H
+
+#include <QObject>
+#include <QSound>
+#include <QMediaPlayer>
+#include <QMediaPlaylist>
+
+#include <memory>
+#include <set>
+
+class AsyncSound : public QObject, public std::enable_shared_from_this<AsyncSound> {
+    Q_OBJECT
+public:
+    AsyncSound() = delete;
+    explicit AsyncSound(QString path);
+    ~AsyncSound();
+
+    QMediaPlayer* operator->() const;
+
+private:
+    QMediaPlayer* player;
+private slots:
+    void onStateChanged(const QMediaPlayer::State& state);
+signals:
+    void finished(std::shared_ptr<AsyncSound>);
+};
+
+class SoundEngine : public QObject
+{
+    Q_OBJECT
+public:
+    static SoundEngine& getInstance() {
+        static SoundEngine instance(nullptr);
+        return instance;
+    }
+
+    QMediaPlayer& player() const;
+    QMediaPlaylist& playlist() const;
+    std::shared_ptr<AsyncSound> playAsync(QString path);
+
+private:
+    SoundEngine() = delete;
+    SoundEngine(const SoundEngine&) = delete;
+    explicit SoundEngine(QObject *parent = nullptr);
+    ~SoundEngine();
+
+private slots:
+    void onAsyncSoundFinished(const std::shared_ptr<AsyncSound> &sound);
+private:
+    QMediaPlayer *player_;        // Аудио плеер
+    QMediaPlaylist *playlist_;    // Плейлист
+    std::set<std::shared_ptr<AsyncSound>> async_sounds; // Список активных асинхронных звуков
+};
+
+#endif // INCLUDESOUNDENGINE_H

+ 5 - 0
res/loading_form.qrc

@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/">
+        <file>../assets/loading_form/icon_loading.gif</file>
+    </qresource>
+</RCC>

+ 17 - 0
res/main_menu.qrc

@@ -0,0 +1,17 @@
+<RCC>
+    <qresource prefix="/">
+        <file>../assets/main_menu/background.png</file>
+        <file>../assets/main_menu/tree.gif</file>
+        <file>../assets/main_menu/about_us_button.png</file>
+        <file>../assets/main_menu/about_us_button_hover.png</file>
+        <file>../assets/main_menu/hotseat_button.png</file>
+        <file>../assets/main_menu/hotseat_button_hover.png</file>
+        <file>../assets/main_menu/leave_game_button.png</file>
+        <file>../assets/main_menu/leave_game_button_hover.png</file>
+        <file>../assets/main_menu/settings_button.png</file>
+        <file>../assets/main_menu/settings_button_hover.png</file>
+        <file>../assets/main_menu/main_menu_music_1.mp3</file>
+        <file>../assets/main_menu/button_hover.mp3</file>
+        <file>../assets/main_menu/button_click.mp3</file>
+    </qresource>
+</RCC>

+ 1 - 0
source/gui/guiscenemanager.cpp

@@ -57,6 +57,7 @@ bool GuiSceneManager::changeScene(QString scene_name, QString args) {
     }
 
     if (current_scene_ != "none") {
+        scenes_[current_scene_]->deinit();
         scenes_[current_scene_]->hide();
         window_->takeCentralWidget();
     }

+ 0 - 28
source/gui/mainmenu.cpp

@@ -1,28 +0,0 @@
-#include "gui/mainmenu.h"
-#include "gui/guiscenemanager.h"
-#include "ui_mainmenu.h"
-
-#include <QString>
-#include <QApplication>
-
-MainMenu::MainMenu(QWidget *parent) :
-    Scene(parent),
-    ui(new Ui::MainMenu)
-{
-    ui->setupUi(this);
-}
-
-MainMenu::~MainMenu()
-{
-    delete ui;
-}
-
-void MainMenu::on_exit_button_clicked()
-{
-    QApplication::quit();
-}
-
-void MainMenu::on_pvp_local_battle_button_clicked()
-{
-    GuiSceneManager::getInstance().changeScene("pvp_intro");
-}

+ 0 - 0
source/hotseatgame/gui/raceicon.cpp → source/hotseatgame/raceicon.cpp


+ 0 - 0
source/hotseatgame/gui/uniticon.cpp → source/hotseatgame/uniticon.cpp


+ 63 - 0
source/soundengine.cpp

@@ -0,0 +1,63 @@
+#include "include/soundengine.h"
+
+AsyncSound::AsyncSound(QString path) {
+    player = new QMediaPlayer();
+    player->setMedia(QUrl(path));
+    player->setVolume(50);
+    player->play();
+    qDebug() << "Sound started!";
+    connect(player, &QMediaPlayer::stateChanged, this, &AsyncSound::onStateChanged);
+}
+
+AsyncSound::~AsyncSound() {
+    delete player;
+}
+
+QMediaPlayer* AsyncSound::operator->() const
+{
+    return player;
+}
+
+void AsyncSound::onStateChanged(const QMediaPlayer::State &state)
+{
+    if (state == QMediaPlayer::StoppedState)
+        emit finished(shared_from_this());
+}
+
+QMediaPlayer& SoundEngine::player() const {
+    return *player_;
+}
+
+QMediaPlaylist& SoundEngine::playlist() const {
+    return *playlist_;
+}
+
+std::shared_ptr<AsyncSound> SoundEngine::playAsync(QString path) {
+    auto sound_ptr = std::make_shared<AsyncSound>(path);
+    if (!sound_ptr)
+        return sound_ptr;
+
+    connect(&(*sound_ptr), &AsyncSound::finished, this, &SoundEngine::onAsyncSoundFinished);
+    async_sounds.insert(sound_ptr);
+    return sound_ptr;
+}
+
+SoundEngine::SoundEngine(QObject *parent) : QObject(parent) {
+    player_ = new QMediaPlayer();
+    playlist_ = new QMediaPlaylist(player_);
+    player_->setPlaylist(playlist_);
+    playlist_->setPlaybackMode(QMediaPlaylist::Loop);
+    player_->setVolume(50);
+}
+
+SoundEngine::~SoundEngine() {
+   player_->deleteLater();
+   playlist_->deleteLater();
+}
+
+void SoundEngine::onAsyncSoundFinished(const std::shared_ptr<AsyncSound> &sound)
+{
+    qDebug() << "Sound finished";
+    if (async_sounds.count(sound))
+        async_sounds.erase(sound);
+}

+ 0 - 0
source/hotseatgame/gui/hotseatgame.cpp → ui/hotseat_game/hotseatgame.cpp


+ 0 - 0
include/hotseatgame/gui/hotseatgame.h → ui/hotseat_game/hotseatgame.h


+ 0 - 0
include/hotseatgame/gui/hotseatgame.ui → ui/hotseat_game/hotseatgame.ui


+ 1 - 1
source/hotseatgame/gui/playervsplayerintro.cpp → ui/hotseat_intro/playervsplayerintro.cpp

@@ -26,5 +26,5 @@ void PlayerVsPlayerIntro::on_go_next_clicked()
 {
     PlayerManager::getInstance().setPlayersNum(2);
     /// TODO - Check if money input correct
-    GuiSceneManager::getInstance().changeScene("recruit_army", "0|" + ui->money_->text());
+    GuiSceneManager::getInstance().changeScene("recruit_army", "0|" + ui->money->text());
 }

+ 0 - 1
include/hotseatgame/gui/playervsplayerintro.h → ui/hotseat_intro/playervsplayerintro.h

@@ -17,7 +17,6 @@ public:
     explicit PlayerVsPlayerIntro(QWidget *parent = 0);
     ~PlayerVsPlayerIntro();
 
-    void ParseArgs(QString args) {}
 private slots:
     void on_back_to_menu_clicked();
 

+ 658 - 0
ui/hotseat_intro/playervsplayerintro.ui

@@ -0,0 +1,658 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PlayerVsPlayerIntro</class>
+ <widget class="Scene" name="PlayerVsPlayerIntro">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1700</width>
+    <height>979</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="autoFillBackground">
+   <bool>true</bool>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <item row="0" column="0">
+    <widget class="QWidget" name="widget" native="true">
+     <property name="styleSheet">
+      <string notr="true">border-image: url(:/assets/common/background.jpg);</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <property name="leftMargin">
+       <number>25</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <item row="1" column="0">
+       <widget class="QWidget" name="menu_" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>400</width>
+          <height>600</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16777215</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-image:none;
+background-image:none;</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_3">
+         <property name="leftMargin">
+          <number>0</number>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <property name="rightMargin">
+          <number>0</number>
+         </property>
+         <property name="bottomMargin">
+          <number>0</number>
+         </property>
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QWidget" name="border_upleft_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>26</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-topleft.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QWidget" name="border_up_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>16777215</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-top.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="2">
+          <widget class="QWidget" name="border_upright_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-topright.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QWidget" name="border_left_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>26</width>
+             <height>16777215</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-left.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QWidget" name="game_widget_2" native="true">
+           <property name="styleSheet">
+            <string notr="true">background-color: rgb(0, 0, 0);</string>
+           </property>
+           <widget class="QPushButton" name="go_next">
+            <property name="geometry">
+             <rect>
+              <x>0</x>
+              <y>240</y>
+              <width>350</width>
+              <height>100</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>350</width>
+              <height>100</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>350</width>
+              <height>100</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Viking Cyr</family>
+              <pointsize>10</pointsize>
+              <weight>50</weight>
+              <italic>false</italic>
+              <bold>false</bold>
+             </font>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
+color: rgb(255, 255, 0);
+border-image: url(:/assets/window/button1.png);
+</string>
+            </property>
+            <property name="text">
+             <string>Продолжить</string>
+            </property>
+            <property name="checkable">
+             <bool>false</bool>
+            </property>
+            <property name="flat">
+             <bool>true</bool>
+            </property>
+           </widget>
+           <widget class="QWidget" name="widget_3" native="true">
+            <property name="geometry">
+             <rect>
+              <x>0</x>
+              <y>10</y>
+              <width>150</width>
+              <height>150</height>
+             </rect>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border-image: url(:/assets/common/logo.png);</string>
+            </property>
+           </widget>
+           <widget class="QPushButton" name="back_to_menu">
+            <property name="geometry">
+             <rect>
+              <x>0</x>
+              <y>340</y>
+              <width>350</width>
+              <height>100</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>350</width>
+              <height>100</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>350</width>
+              <height>100</height>
+             </size>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
+color: rgb(255, 255, 0);
+border-image: url(:/assets/window/button1.png);
+</string>
+            </property>
+            <property name="text">
+             <string>Назад</string>
+            </property>
+           </widget>
+           <widget class="QLabel" name="title_3">
+            <property name="geometry">
+             <rect>
+              <x>140</x>
+              <y>60</y>
+              <width>211</width>
+              <height>21</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Ignored" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 14pt &quot;Barocco Initial&quot;;
+border-image:none;
+background-image:none;</string>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; color:#b12d2d;&quot;&gt;Выбор режима&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+            <property name="margin">
+             <number>0</number>
+            </property>
+           </widget>
+          </widget>
+         </item>
+         <item row="1" column="2">
+          <widget class="QWidget" name="border_right_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>26</width>
+             <height>16777215</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-right.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QWidget" name="border_botleft_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>26</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>26</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-botleft.png)</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QWidget" name="border_bottom_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>26</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>16777215</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border_bottom.png);
+background-color: rgb(0, 0, 0);</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="2">
+          <widget class="QWidget" name="border_botright_3" native="true">
+           <property name="minimumSize">
+            <size>
+             <width>25</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>25</width>
+             <height>26</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background:url(:/assets/window/strong_translucent-border-botright.png)</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="0" column="1" rowspan="3">
+       <widget class="QWidget" name="widget_2" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">background-image:none;
+border-image:none;
+image:none;</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_4">
+         <property name="leftMargin">
+          <number>0</number>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <property name="rightMargin">
+          <number>0</number>
+         </property>
+         <property name="bottomMargin">
+          <number>0</number>
+         </property>
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QWidget" name="content_" native="true">
+           <property name="styleSheet">
+            <string notr="true">background: none;
+background-image:none;
+image: none;</string>
+           </property>
+           <widget class="QLabel" name="label_4">
+            <property name="geometry">
+             <rect>
+              <x>528</x>
+              <y>110</y>
+              <width>356</width>
+              <height>262</height>
+             </rect>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background-image:none;
+image:none;
+border-image: url(:/assets/pvp_intro/picture.jpg);</string>
+            </property>
+            <property name="frameShape">
+             <enum>QFrame::WinPanel</enum>
+            </property>
+            <property name="frameShadow">
+             <enum>QFrame::Raised</enum>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+           </widget>
+           <widget class="QLabel" name="title_5">
+            <property name="geometry">
+             <rect>
+              <x>80</x>
+              <y>156</y>
+              <width>334</width>
+              <height>216</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background: none;
+background-image:none;
+image: none;</string>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; color:#fdeaa8;&quot;&gt;Этот режим включает в себя стандартное пошаговое сражение между двумя игроками в отсутствие какого-либо сценария. Каждому игроку будет предложено выбрать расу и набрать армию в соответствии с указанным бюджетом. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+            <property name="margin">
+             <number>20</number>
+            </property>
+           </widget>
+           <widget class="QLabel" name="divider_2">
+            <property name="geometry">
+             <rect>
+              <x>80</x>
+              <y>110</y>
+              <width>334</width>
+              <height>39</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background: none;
+background-image:none;
+image: url(:/assets/recruitscene/divider.png);</string>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+           </widget>
+           <widget class="QWidget" name="widget_13" native="true">
+            <property name="geometry">
+             <rect>
+              <x>528</x>
+              <y>379</y>
+              <width>356</width>
+              <height>200</height>
+             </rect>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>200</height>
+             </size>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background: none;
+background-image:none;
+image: none;</string>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_5">
+             <item row="1" column="0">
+              <spacer name="horizontalSpacer_7">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item row="0" column="0">
+              <widget class="QLabel" name="label_1">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="text">
+                <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; color:#b12d2d;&quot;&gt;Кол-во монет:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <spacer name="horizontalSpacer_8">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item row="0" column="1" colspan="2">
+              <widget class="QLineEdit" name="money">
+               <property name="text">
+                <string>1000</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+           <widget class="QLabel" name="title_6">
+            <property name="geometry">
+             <rect>
+              <x>110</x>
+              <y>70</y>
+              <width>303</width>
+              <height>28</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background: none;
+background-image:none;
+image: none;</string>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:14pt; color:#b12d2d;&quot;&gt;Режим: игрок против игрока&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+           </widget>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <spacer name="verticalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>179</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="0">
+       <spacer name="verticalSpacer">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>180</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>Scene</class>
+   <extends>QWidget</extends>
+   <header location="global">gui/scene.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>

+ 2 - 2
source/hotseatgame/gui/prebattlescene.cpp → ui/hotseat_prebattle/prebattlescene.cpp

@@ -66,7 +66,7 @@ void PreBattleScene::init() {
 
 void PreBattleScene::on_start_battle_clicked()
 {
-    QMessageBox msg(QMessageBox::Information, "Нельзя сотворить здесь!", "Не ну имейте терпение! Всё будет! Но попозже... :)");
-    msg.exec();
+//    QMessageBox msg(QMessageBox::Information, "Нельзя сотворить здесь!", "Не ну имейте терпение! Всё будет! Но попозже... :)");
+//    msg.exec();
     GuiSceneManager::getInstance().changeScene("hotseatgame");
 }

+ 0 - 0
include/hotseatgame/gui/prebattlescene.h → ui/hotseat_prebattle/prebattlescene.h


+ 0 - 0
include/hotseatgame/gui/prebattlescene.ui → ui/hotseat_prebattle/prebattlescene.ui


+ 0 - 0
source/hotseatgame/gui/recruitmentscene.cpp → ui/hotseat_recruitment/recruitmentscene.cpp


+ 0 - 0
include/hotseatgame/gui/recruitmentscene.h → ui/hotseat_recruitment/recruitmentscene.h


+ 0 - 0
include/hotseatgame/gui/recruitmentscene.ui → ui/hotseat_recruitment/recruitmentscene.ui


+ 0 - 0
source/gui/loadingform.cpp → ui/loading_form/loadingform.cpp


+ 0 - 0
include/gui/loadingform.h → ui/loading_form/loadingform.h


+ 0 - 0
include/gui/loadingform.ui → ui/loading_form/loadingform.ui


+ 82 - 0
ui/main_menu/mainmenu.cpp

@@ -0,0 +1,82 @@
+#include "gui/mainmenu.h"
+#include "gui/guiscenemanager.h"
+#include "soundengine.h"
+
+#include "ui_mainmenu.h"
+
+#include <QString>
+#include <QApplication>
+#include <QMovie>
+#include <QFileInfo>
+
+MainMenu::MainMenu(QWidget *parent) :
+    Scene(parent),
+    ui(new Ui::MainMenu)
+{
+    ui->setupUi(this);
+    // Load animated GIF
+    movie = new QMovie(":/assets/main_menu/tree.gif");
+    watcher = new ButtonHoverWatcher(this);
+
+    ui->hotseat_button->installEventFilter(watcher);
+    ui->about_us_button->installEventFilter(watcher);
+    ui->leave_game_button->installEventFilter(watcher);
+
+    ui->tree_label->setMovie(movie);
+    movie->start();
+}
+
+MainMenu::~MainMenu()
+{
+    delete movie;
+    delete ui;
+    delete watcher;
+}
+
+void MainMenu::init()
+{
+    SoundEngine::getInstance().playlist().addMedia(QUrl("qrc:/assets/main_menu/main_menu_music_1.mp3"));
+    SoundEngine::getInstance().player().play();
+}
+
+ButtonHoverWatcher::ButtonHoverWatcher(QObject * parent) :
+    QObject(parent)
+{}
+
+bool ButtonHoverWatcher::eventFilter(QObject * watched, QEvent * event) {
+    QPushButton * button = qobject_cast<QPushButton*>(watched);
+    if (!button) {
+        return false;
+    }
+
+    if (event->type() == QEvent::Enter) {
+        button->setStyleSheet("font: 10pt \"Viking Cyr\";"
+                              "color: rgb(255, 255, 0);"
+                              "border-image: url(:/assets/main_menu/" + button->objectName() + "_hover.png);");
+        SoundEngine::getInstance().playAsync("qrc:/assets/main_menu/button_hover.mp3");
+        return false;
+    }
+
+    if (event->type() == QEvent::Leave){
+        button->setStyleSheet("font: 10pt \"Viking Cyr\";"
+                              "color: rgb(255, 255, 0);"
+                              "border-image: url(:/assets/main_menu/" + button->objectName() + ".png);");
+        return false;
+    }
+
+    if (event->type() == QEvent::MouseButtonPress) {
+        qDebug() << "CLICK!!";
+        SoundEngine::getInstance().playAsync("qrc:/assets/main_menu/button_click.mp3");
+        return false;
+    }
+
+    return false;
+}
+
+void MainMenu::on_hotseat_button_clicked() {
+    GuiSceneManager::getInstance().changeScene("pvp_intro");
+}
+
+void MainMenu::on_leave_game_button_clicked() {
+    QApplication::exit();
+}

+ 40 - 0
ui/main_menu/mainmenu.h

@@ -0,0 +1,40 @@
+#ifndef MAINMENU_H
+#define MAINMENU_H
+
+#include "gui/scene.h"
+
+class ButtonHoverWatcher : public QObject
+{
+    Q_OBJECT
+public:
+    explicit ButtonHoverWatcher(QObject * parent = Q_NULLPTR);
+    virtual bool eventFilter(QObject * watched, QEvent * event) Q_DECL_OVERRIDE;
+};
+
+namespace Ui {
+class MainMenu;
+}
+
+class MainMenu : public Scene
+{
+    Q_OBJECT
+
+public:
+    explicit MainMenu(QWidget *parent = 0);
+    ~MainMenu();
+
+    void init() override;
+
+private slots:
+
+    void on_hotseat_button_clicked();
+
+    void on_leave_game_button_clicked();
+
+private:
+    Ui::MainMenu *ui;
+    QMovie* movie;
+    ButtonHoverWatcher * watcher;
+};
+
+#endif // MAINMENU_H

+ 355 - 0
ui/main_menu/mainmenu.ui

@@ -0,0 +1,355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainMenu</class>
+ <widget class="Scene" name="MainMenu">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1000</width>
+    <height>800</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <item row="0" column="0">
+    <widget class="QWidget" name="content_" native="true">
+     <property name="styleSheet">
+      <string notr="true">background-image: url(:/assets/main_menu/background.png);</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <property name="leftMargin">
+       <number>25</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <item row="1" column="1">
+       <widget class="QWidget" name="menu_" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>400</width>
+          <height>600</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>400</width>
+          <height>600</height>
+         </size>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-image:none;
+background-image:none;</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_3">
+         <property name="leftMargin">
+          <number>0</number>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <property name="rightMargin">
+          <number>0</number>
+         </property>
+         <property name="bottomMargin">
+          <number>0</number>
+         </property>
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QWidget" name="game_widget_1" native="true">
+           <property name="styleSheet">
+            <string notr="true">background-color: rgb(0, 0, 0);</string>
+           </property>
+           <widget class="QPushButton" name="hotseat_button">
+            <property name="geometry">
+             <rect>
+              <x>70</x>
+              <y>180</y>
+              <width>230</width>
+              <height>70</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Viking Cyr</family>
+              <pointsize>10</pointsize>
+              <weight>50</weight>
+              <italic>false</italic>
+              <bold>false</bold>
+             </font>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
+color: rgb(255, 255, 0);
+border-image: url(:/assets/main_menu/hotseat_button.png);
+</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+            <property name="checkable">
+             <bool>false</bool>
+            </property>
+            <property name="flat">
+             <bool>true</bool>
+            </property>
+           </widget>
+           <widget class="QWidget" name="widget" native="true">
+            <property name="geometry">
+             <rect>
+              <x>0</x>
+              <y>10</y>
+              <width>150</width>
+              <height>150</height>
+             </rect>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border-image: url(:/assets/common/logo.png);</string>
+            </property>
+           </widget>
+           <widget class="QPushButton" name="leave_game_button">
+            <property name="geometry">
+             <rect>
+              <x>70</x>
+              <y>340</y>
+              <width>230</width>
+              <height>70</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
+color: rgb(255, 255, 0);
+border-image: url(:/assets/main_menu/leave_game_button.png);</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+           <widget class="QLabel" name="title_">
+            <property name="geometry">
+             <rect>
+              <x>150</x>
+              <y>60</y>
+              <width>191</width>
+              <height>31</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Ignored" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 14pt &quot;Barocco Initial&quot;;
+border-image:none;
+background-image:none;</string>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; color:#b12d2d;&quot;&gt;Главное меню&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+           </widget>
+           <widget class="QPushButton" name="about_us_button">
+            <property name="geometry">
+             <rect>
+              <x>70</x>
+              <y>260</y>
+              <width>230</width>
+              <height>70</height>
+             </rect>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">font: 10pt &quot;Viking Cyr&quot;;
+color: rgb(255, 255, 0);
+border-image: url(:/assets/main_menu/about_us_button.png);</string>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+           <zorder>title_</zorder>
+           <zorder>leave_game_button</zorder>
+           <zorder>hotseat_button</zorder>
+           <zorder>widget</zorder>
+           <zorder>about_us_button</zorder>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <spacer name="verticalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="3" rowspan="3">
+       <widget class="QLabel" name="tree_label">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+        <property name="scaledContents">
+         <bool>true</bool>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="1">
+       <spacer name="verticalSpacer">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="0" rowspan="3">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>Scene</class>
+   <extends>QWidget</extends>
+   <header location="global">gui/scene.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>