QTfrontend/game.h
author Wuzzy <Wuzzy2@mail.ru>
Sat, 11 May 2019 04:58:11 +0200
changeset 14917 3a53309e684b
parent 14908 5119203470f3
child 15283 16f389fcd462
permissions -rw-r--r--
Set default SD fallback music for themes: sdmusic.ogg
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 883
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10392
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     4
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 9998
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    19
#ifndef GAME_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    20
#define GAME_H
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
#include <QString>
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    23
#include "team.h"
1907
a104432e8301 Random team generator rework by ttsmj
unc0rr
parents: 1375
diff changeset
    24
#include "namegen.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    25
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    26
#include "tcpBase.h"
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    27
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
class GameUIConfig;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
class GameCFGWidget;
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 324
diff changeset
    30
class TeamSelWidget;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
8901
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    32
enum GameType
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    33
{
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    34
    gtNone     = 0,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    35
    gtLocal    = 1,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    36
    gtQLocal   = 2,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    37
    gtDemo     = 3,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    38
    gtNet      = 4,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    39
    gtTraining = 5,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    40
    gtCampaign = 6,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    41
    gtSave     = 7,
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    42
};
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    43
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    44
enum GameState
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    45
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    46
    gsNotStarted = 0,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    47
    gsStarted  = 1,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    48
    gsInterrupted = 2,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    49
    gsFinished = 3,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    50
    gsStopped = 4,
4746
3ae448aebe7e implemented actions for closing/enging program (needs testing over the net)
koda
parents: 4430
diff changeset
    51
    gsDestroyed = 5,
3ae448aebe7e implemented actions for closing/enging program (needs testing over the net)
koda
parents: 4430
diff changeset
    52
    gsHalted = 6
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    53
};
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    54
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    55
enum RecordType
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    56
{
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    57
    rtDemo,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    58
    rtSave,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    59
    rtNeither,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    60
};
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    61
4084
0d0bf0533eee Add opendesktop association of files for non-windows. NEEDS TESTING.
nemo
parents: 3760
diff changeset
    62
bool checkForDir(const QString & dir);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    63
8901
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    64
// last game info
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    65
extern QList<QVariant> lastGameStartArgs;
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    66
extern GameType lastGameType;
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    67
extern GameCFGWidget * lastGameCfg;
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    68
extern QString lastGameAmmo;
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    69
extern TeamSelWidget * lastGameTeamSel;
505307b9735d implementation of a restart-game button. location and appearance is not final :P
thunderstruck
parents: 8472
diff changeset
    70
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
class HWGame : public TCPBase
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
{
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    73
        Q_OBJECT
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    74
    public:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    75
        HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget = 0);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    76
        virtual ~HWGame();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    77
        void AddTeam(const QString & team);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    78
        void PlayDemo(const QString & demofilename, bool isSave);
14908
5119203470f3 Teach frontend how to deal with official server replays (/watch)
Wuzzy <Wuzzy2@mail.ru>
parents: 14472
diff changeset
    79
        void PlayOfficialServerDemo();
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    80
        void StartLocal();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    81
        void StartQuick();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    82
        void StartNet();
14467
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13828
diff changeset
    83
        void StartTraining(const QString & file, const QString & subFolder, const QString & trainTeam);
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents: 6952
diff changeset
    84
        void StartCampaign(const QString & camp, const QString & campScript, const QString & campTeam);
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    85
        void abort();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    86
        GameState gameState;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    87
        bool netSuspend;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    88
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    89
    protected:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    90
        virtual QStringList getArguments();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    91
        virtual void onClientRead();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    92
        virtual void onClientDisconnect();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    93
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    94
    signals:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    95
        void SendNet(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    96
        void SendChat(const QString & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    97
        void SendTeamMessage(const QString & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    98
        void GameStateChanged(GameState gameState);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    99
        void GameStats(char type, const QString & info);
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   100
        void HaveRecord(RecordType type, const QByteArray & record);
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   101
        void ErrorMessage(const QString &);
7207
b216efbc00ff Fixed a bug where, after finishing a campaign mission, the user needed to reselect the team in the frontend in order to see the next mission.
belphegorr <szabibibi@gmail.com>
parents: 7201
diff changeset
   102
        void CampStateChanged(int);
14472
4edcb655dc5a Update training page after completing a training
Wuzzy <Wuzzy2@mail.ru>
parents: 14467
diff changeset
   103
        void TrainingStateChanged(int);
10392
5012e1f9e893 - Support for pausing multiplayer games
alfadur
parents: 10108
diff changeset
   104
        void SendConsoleCommand(const QString & command);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   105
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   106
    public slots:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   107
        void FromNet(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   108
        void FromNetChat(const QString & msg);
13828
d012948b1eda Make frontend forward server error and warning messages to engine
Wuzzy <Wuzzy2@mail.ru>
parents: 11973
diff changeset
   109
        void FromNetWarning(const QString & msg);
d012948b1eda Make frontend forward server error and warning messages to engine
Wuzzy <Wuzzy2@mail.ru>
parents: 11973
diff changeset
   110
        void FromNetError(const QString & msg);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   111
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   112
    private:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   113
        char msgbuf[MAXMSGCHARS];
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   114
        QString ammostr;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   115
        GameUIConfig * config;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   116
        GameCFGWidget * gamecfg;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   117
        TeamSelWidget* m_pTeamSelWidget;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   118
        GameType gameType;
8472
da6b569ac930 - Collect synced packets to send within 1 second (cSendEmptyPacketTime) into buffer which is flushed each second.
unc0rr
parents: 8346
diff changeset
   119
        QByteArray m_netSendBuffer;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   120
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   121
        void commonConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   122
        void SendConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   123
        void SendQuickConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   124
        void SendNetConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   125
        void SendTrainingConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   126
        void SendCampaignConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   127
        void ParseMessage(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   128
        void SetGameState(GameState state);
7665
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   129
        void sendCampaignVar(const QByteArray & varToSend);
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   130
        void writeCampaignVar(const QByteArray &varVal);
14467
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13828
diff changeset
   131
        void sendMissionVar(const QByteArray & varToSend);
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13828
diff changeset
   132
        void writeMissionVar(const QByteArray &varVal);
8472
da6b569ac930 - Collect synced packets to send within 1 second (cSendEmptyPacketTime) into buffer which is flushed each second.
unc0rr
parents: 8346
diff changeset
   133
        void flushNetBuffer();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   134
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   135
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   136
#endif