QTfrontend/game.h
author S.D.
Tue, 27 Sep 2022 14:59:03 +0300
changeset 15878 fc3cb23fd26f
parent 15278 16f389fcd462
permissions -rw-r--r--
Allow to see rooms of incompatible versions in the lobby For the new clients the room version is shown in a separate column. There is also a hack for previous versions clients: the room vesion specifier is prepended to the room names for rooms of incompatible versions, and the server shows 'incompatible version' error if the client tries to join them.
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);
14903
5119203470f3 Teach frontend how to deal with official server replays (/watch)
Wuzzy <Wuzzy2@mail.ru>
parents: 14467
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();
14462
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13823
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);
15278
16f389fcd462 Prevent saving of demo after /lua command was used
Wuzzy <Wuzzy2@mail.ru>
parents: 14903
diff changeset
    99
        void DemoPresenceChanged(bool hasDemo);
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   100
        void GameStats(char type, const QString & info);
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   101
        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
   102
        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
   103
        void CampStateChanged(int);
14467
4edcb655dc5a Update training page after completing a training
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
   104
        void TrainingStateChanged(int);
10392
5012e1f9e893 - Support for pausing multiplayer games
alfadur
parents: 10108
diff changeset
   105
        void SendConsoleCommand(const QString & command);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   106
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   107
    public slots:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   108
        void FromNet(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   109
        void FromNetChat(const QString & msg);
13823
d012948b1eda Make frontend forward server error and warning messages to engine
Wuzzy <Wuzzy2@mail.ru>
parents: 11968
diff changeset
   110
        void FromNetWarning(const QString & msg);
d012948b1eda Make frontend forward server error and warning messages to engine
Wuzzy <Wuzzy2@mail.ru>
parents: 11968
diff changeset
   111
        void FromNetError(const QString & msg);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   112
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   113
    private:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   114
        char msgbuf[MAXMSGCHARS];
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   115
        QString ammostr;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   116
        GameUIConfig * config;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   117
        GameCFGWidget * gamecfg;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   118
        TeamSelWidget* m_pTeamSelWidget;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   119
        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
   120
        QByteArray m_netSendBuffer;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   121
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   122
        void commonConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   123
        void SendConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   124
        void SendQuickConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   125
        void SendNetConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   126
        void SendTrainingConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   127
        void SendCampaignConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   128
        void ParseMessage(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   129
        void SetGameState(GameState state);
15278
16f389fcd462 Prevent saving of demo after /lua command was used
Wuzzy <Wuzzy2@mail.ru>
parents: 14903
diff changeset
   130
        void SetDemoPresence(bool hasDemo);
7665
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   131
        void sendCampaignVar(const QByteArray & varToSend);
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   132
        void writeCampaignVar(const QByteArray &varVal);
14462
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13823
diff changeset
   133
        void sendMissionVar(const QByteArray & varToSend);
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13823
diff changeset
   134
        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
   135
        void flushNetBuffer();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   136
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   137
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   138
#endif