From 75b6546d5dfc94c868ceb4df095d5a509031f8e1 Mon Sep 17 00:00:00 2001
From: mikakoi <mikakoivuranta1@kamk.fi>
Date: Mon, 27 Mar 2023 13:11:29 +0300
Subject: [PATCH] change sentence structure, add exit dialogue

---
 CMakeLists.txt      |  4 +-
 CMakeLists.txt.user |  2 +-
 enemy.cpp           | 10 ++---
 exitdialogue.cpp    | 14 +++++++
 exitdialogue.h      | 23 +++++++++++
 exitdialogue.ui     | 96 +++++++++++++++++++++++++++++++++++++++++++++
 mainwindow.cpp      | 33 ++++++++++++----
 mainwindow.h        |  2 +
 mainwindow.ui       | 53 ++++++++++++-------------
 player.cpp          | 10 ++---
 10 files changed, 199 insertions(+), 48 deletions(-)
 create mode 100644 exitdialogue.cpp
 create mode 100644 exitdialogue.h
 create mode 100644 exitdialogue.ui

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ba3673..5674b57 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,10 +14,10 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
 
 set(PROJECT_SOURCES
         main.cpp
-        mainwindow.cpp mainwindow.h
-        mainwindow.ui
+        mainwindow.cpp mainwindow.h mainwindow.ui
         player.h player.cpp
         enemy.h enemy.cpp
+        exitdialogue.h exitdialogue.cpp exitdialogue.ui
 )
 
 if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 64055e3..e377dfb 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 9.0.1, 2023-03-20T15:24:45. -->
+<!-- Written by QtCreator 9.0.1, 2023-03-27T13:08:41. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
diff --git a/enemy.cpp b/enemy.cpp
index d7b9262..8fe178d 100644
--- a/enemy.cpp
+++ b/enemy.cpp
@@ -20,7 +20,7 @@ void Enemy::DoAttack()
         int damage = DamageCalculation(5, 10);
         mw->TakeDamage(damage);
 
-        result = "Clawed for ";
+        result = "clawed for ";
         result.append(QString::number(damage));
     }
     else if (random < 45)
@@ -29,7 +29,7 @@ void Enemy::DoAttack()
         int damage = DamageCalculation(8, 10);
         mw->TakeDamage(damage);
 
-        result = "Bit for ";
+        result = "bit for ";
         result.append(QString::number(damage));
     }
     else if (random < 65)
@@ -39,7 +39,7 @@ void Enemy::DoAttack()
         mw->LowerMagic(damage);
         mw->TakeDisadvantage();
 
-        result = "Leeched mana by ";
+        result = "leeched mana by ";
         result.append(QString::number(damage));
     }
     else if (random < 85)
@@ -49,7 +49,7 @@ void Enemy::DoAttack()
         mw->DealDamage(damage);
         mw->DealCleanse();
 
-        result = "Curled up to heal for ";
+        result = "curled up to heal for ";
         result.append(QString::number(damage));
     }
     else
@@ -59,7 +59,7 @@ void Enemy::DoAttack()
         mw->TakeDamage(damage);
         mw->DealDisadvantage();
 
-        result = "Breathed flames for ";
+        result = "breathed flames for ";
         result.append(QString::number(damage));
     }
     mw->WriteEnemyAction(result);
diff --git a/exitdialogue.cpp b/exitdialogue.cpp
new file mode 100644
index 0000000..f863d15
--- /dev/null
+++ b/exitdialogue.cpp
@@ -0,0 +1,14 @@
+#include "exitdialogue.h"
+#include "ui_exitdialogue.h"
+
+ExitDialogue::ExitDialogue(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::ExitDialogue)
+{
+    ui->setupUi(this);
+}
+
+ExitDialogue::~ExitDialogue()
+{
+    delete ui;
+}
diff --git a/exitdialogue.h b/exitdialogue.h
new file mode 100644
index 0000000..0d1942a
--- /dev/null
+++ b/exitdialogue.h
@@ -0,0 +1,23 @@
+#ifndef EXITDIALOGUE_H
+#define EXITDIALOGUE_H
+
+#include <QDialog>
+
+namespace Ui {
+class ExitDialogue;
+}
+
+class ExitDialogue : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ExitDialogue(QWidget *parent = nullptr);
+    ~ExitDialogue();
+
+private:
+    Ui::ExitDialogue *ui;
+};
+
+#endif // EXITDIALOGUE_H
+
diff --git a/exitdialogue.ui b/exitdialogue.ui
new file mode 100644
index 0000000..88d5bff
--- /dev/null
+++ b/exitdialogue.ui
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ExitDialogue</class>
+ <widget class="QDialog" name="ExitDialogue">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QWidget" name="layoutWidget">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>391</width>
+     <height>301</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <widget class="QLabel" name="label">
+      <property name="text">
+       <string>Are you sure you want to close?</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QDialogButtonBox" name="buttonBox">
+      <property name="enabled">
+       <bool>true</bool>
+      </property>
+      <property name="mouseTracking">
+       <bool>false</bool>
+      </property>
+      <property name="layoutDirection">
+       <enum>Qt::RightToLeft</enum>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="standardButtons">
+       <set>QDialogButtonBox::No|QDialogButtonBox::Yes</set>
+      </property>
+      <property name="centerButtons">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ExitDialogue</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ExitDialogue</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/mainwindow.cpp b/mainwindow.cpp
index e7d17ea..968fc8f 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -1,6 +1,8 @@
 #include "mainwindow.h"
 #include "./ui_mainwindow.h"
 
+#include "exitdialogue.h"
+
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
     , ui(new Ui::MainWindow)
@@ -123,14 +125,14 @@ void MainWindow::DoEnemyAttack()
 
 void MainWindow::WritePlayerAction(QString text)
 {
-    QString result = "Player: ";
+    QString result = "Hero ";
     result.append(text);
 
     ui->playerAction->setText(result);
 }
 void MainWindow::WriteEnemyAction(QString text)
 {
-    QString result = "Enemy: ";
+    QString result = "Monster ";
     result.append(text);
 
     ui->enemyAction->setText(result);
@@ -156,10 +158,10 @@ void MainWindow::CheckGameState()
     case GameStatus::MenuOpen:
         break;
     case GameStatus::PlayerDead:
-        WritePlayerAction("Was slain");
+        WritePlayerAction("was slain");
         break;
     case GameStatus::EnemyDead:
-        WriteEnemyAction("Was slain");
+        WriteEnemyAction("was slain");
         break;
     default:
         break;
@@ -176,8 +178,8 @@ void MainWindow::RestartGame()
     DealCleanse();
 
     gameStatus = GameStatus::Playing;
-    WritePlayerAction("Entered the dungeon");
-    WriteEnemyAction("Drew near");
+    WritePlayerAction("entered the dungeon");
+    WriteEnemyAction("drew near");
 }
 void MainWindow::NewEnemy()
 {
@@ -188,8 +190,8 @@ void MainWindow::NewEnemy()
     DealCleanse();
 
     gameStatus = GameStatus::Playing;
-    WritePlayerAction("Encountered an enemy");
-    WriteEnemyAction("Drew near");
+    WritePlayerAction("encountered an enemy");
+    WriteEnemyAction("drew near");
 }
 
 void MainWindow::on_attackButton_clicked()
@@ -277,3 +279,18 @@ void MainWindow::on_RunButton_clicked()
         break;
     }
 }
+
+void MainWindow::on_actionExit_triggered()
+{
+    ExitDialogue exit;
+    exit.setModal(true);
+    connect(&exit, SIGNAL(accepted()), this, SLOT(close()));
+    exit.exec();
+
+    /*
+    ExitDialog *exit = new ExitDialog(this);
+    exit->setModal(false);
+    connect(exit, SIGNAL(accepted()), this, SLOT(close()));
+    exit->show();
+    */
+}
diff --git a/mainwindow.h b/mainwindow.h
index b9b806d..9bf5f56 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -51,6 +51,8 @@ private slots:
 
     void on_RunButton_clicked();
 
+    void on_actionExit_triggered();
+
 private:
 
     void CheckGameState();
diff --git a/mainwindow.ui b/mainwindow.ui
index 9669ac4..38fa2ed 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -34,7 +34,7 @@
      </rect>
     </property>
    </widget>
-   <widget class="QWidget" name="">
+   <widget class="QWidget" name="layoutWidget">
     <property name="geometry">
      <rect>
       <x>10</x>
@@ -114,7 +114,7 @@
      </item>
     </layout>
    </widget>
-   <widget class="QWidget" name="">
+   <widget class="QWidget" name="layoutWidget">
     <property name="geometry">
      <rect>
       <x>280</x>
@@ -124,17 +124,10 @@
      </rect>
     </property>
     <layout class="QGridLayout" name="gridLayout">
-     <item row="1" column="1">
-      <widget class="QProgressBar" name="enemyHealth">
-       <property name="value">
-        <number>24</number>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QProgressBar" name="playerHealth">
-       <property name="value">
-        <number>24</number>
+     <item row="4" column="1">
+      <widget class="QLabel" name="enemyStatusCondition">
+       <property name="text">
+        <string>No status condition</string>
        </property>
       </widget>
      </item>
@@ -145,15 +138,22 @@
        </property>
       </widget>
      </item>
-     <item row="0" column="0">
-      <widget class="QLabel" name="PlayerLabel">
-       <property name="text">
-        <string>Player health</string>
+     <item row="3" column="0">
+      <widget class="QProgressBar" name="PlayerMana">
+       <property name="value">
+        <number>24</number>
        </property>
       </widget>
      </item>
-     <item row="3" column="0">
-      <widget class="QProgressBar" name="PlayerMana">
+     <item row="1" column="0">
+      <widget class="QProgressBar" name="playerHealth">
+       <property name="value">
+        <number>24</number>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QProgressBar" name="enemyHealth">
        <property name="value">
         <number>24</number>
        </property>
@@ -173,16 +173,16 @@
        </property>
       </widget>
      </item>
-     <item row="4" column="1">
-      <widget class="QLabel" name="enemyStatusCondition">
+     <item row="0" column="0">
+      <widget class="QLabel" name="PlayerLabel">
        <property name="text">
-        <string>No status condition</string>
+        <string>Player health</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
-   <widget class="QWidget" name="">
+   <widget class="QWidget" name="layoutWidget">
     <property name="geometry">
      <rect>
       <x>10</x>
@@ -208,7 +208,7 @@
      </item>
     </layout>
    </widget>
-   <widget class="QWidget" name="">
+   <widget class="QWidget" name="layoutWidget">
     <property name="geometry">
      <rect>
       <x>281</x>
@@ -221,14 +221,14 @@
      <item>
       <widget class="QLabel" name="playerAction">
        <property name="text">
-        <string>Player: Started fight</string>
+        <string>Hero entered the dungeon</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="enemyAction">
        <property name="text">
-        <string>Enemy: Started fight</string>
+        <string>Monster drew near</string>
        </property>
       </widget>
      </item>
@@ -248,7 +248,6 @@
     <property name="title">
      <string>File</string>
     </property>
-    <addaction name="actionSave"/>
     <addaction name="actionExit"/>
    </widget>
    <addaction name="menuFile"/>
diff --git a/player.cpp b/player.cpp
index a97636a..d9bb96f 100644
--- a/player.cpp
+++ b/player.cpp
@@ -24,7 +24,7 @@ void Player::Attack()
     mw->DealDamage(damage);
     mw->DoEnemyAttack();
 
-    QString result = "Stabbed for ";
+    QString result = "stabbed for ";
     result.append(QString::number(damage));
     mw->WritePlayerAction(result);
 }
@@ -34,7 +34,7 @@ void Player::HeavyAttack()
     int damage = DamageCalculation(3, 10);
     mw->DealDamage(damage);
 
-    QString result = "Bonked for ";
+    QString result = "bonked for ";
     result.append(QString::number(damage));
     mw->WritePlayerAction(result);
 
@@ -49,7 +49,7 @@ void Player::DarkMagic()
         int damage = 15;
         mw->DealDamage(damage);
 
-        QString result = "Spellcast for ";
+        QString result = "spellcast for ";
         result.append(QString::number(damage));
         mw->WritePlayerAction(result);
 
@@ -65,7 +65,7 @@ void Player::LightMagic()
         int damage = -15;
         mw->TakeDamage(damage);
 
-        QString result = "Healed for ";
+        QString result = "healed for ";
         result.append(QString::number(damage));
         mw->WritePlayerAction(result);
 
@@ -77,7 +77,7 @@ void Player::Run()
     mw->DealDisadvantage();
     mw->TakeCleanse();
 
-    QString result = "Distracted";
+    QString result = "distracted opponent";
     mw->WritePlayerAction(result);
 
     mw->DoEnemyAttack();
-- 
GitLab