QTfrontend/game.h
author unc0rr
Tue, 04 Dec 2012 22:31:22 +0400
branchflibqtfrontend
changeset 8210 ad178654142a
parent 8106 861d145b270e
child 8280 734b069a418e
permissions -rw-r--r--
Register flib_gameconn callbacks
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
6952
7f70f37bbf08 license header year range adjustments
sheepluva
parents: 6700
diff changeset
     3
 * Copyright (c) 2004-2012 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
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
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"
8100
0e6fadf81a2c - frontlib loads team config via physfs
unc0rr
parents: 8092
diff changeset
    27
#include "frontlib.h"
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
class GameUIConfig;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    30
class GameCFGWidget;
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 324
diff changeset
    31
class TeamSelWidget;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    33
enum GameState
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    34
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    35
    gsNotStarted = 0,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    36
    gsStarted  = 1,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    37
    gsInterrupted = 2,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    38
    gsFinished = 3,
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2468
diff changeset
    39
    gsStopped = 4,
4746
3ae448aebe7e implemented actions for closing/enging program (needs testing over the net)
koda
parents: 4430
diff changeset
    40
    gsDestroyed = 5,
3ae448aebe7e implemented actions for closing/enging program (needs testing over the net)
koda
parents: 4430
diff changeset
    41
    gsHalted = 6
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    42
};
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    43
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    44
enum RecordType
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    45
{
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    46
    rtDemo,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    47
    rtSave,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    48
    rtNeither,
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    49
};
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    50
4084
0d0bf0533eee Add opendesktop association of files for non-windows. NEEDS TESTING.
nemo
parents: 3760
diff changeset
    51
bool checkForDir(const QString & dir);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    52
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    53
class HWGame : public TCPBase
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    54
{
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    55
        Q_OBJECT
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    56
    public:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    57
        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
    58
        virtual ~HWGame();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    59
        void AddTeam(const QString & team);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    60
        void PlayDemo(const QString & demofilename, bool isSave);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    61
        void StartLocal();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    62
        void StartQuick();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    63
        void StartNet();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    64
        void StartTraining(const QString & file);
7201
dc17ffdf0702 The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents: 6952
diff changeset
    65
        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
    66
        void abort();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    67
        GameState gameState;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    68
        bool netSuspend;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    69
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    70
    protected:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    71
        virtual QStringList getArguments();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    72
        virtual void onClientRead();
8092
08960209db8c Try to use map preview facilities:
unc0rr
parents: 7665
diff changeset
    73
        void onEngineStart();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    74
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    75
    signals:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    76
        void SendNet(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    77
        void SendChat(const QString & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    78
        void SendTeamMessage(const QString & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    79
        void GameStateChanged(GameState gameState);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    80
        void GameStats(char type, const QString & info);
7180
53ffc8853008 here it is
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
    81
        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
    82
        void ErrorMessage(const QString &);
8210
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
    83
        void campStateChanged(int);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    84
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    85
    public slots:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    86
        void FromNet(const QByteArray & msg);
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    87
        void FromNetChat(const QString & msg);
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
    private:
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    90
        enum GameType
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    91
        {
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    92
            gtLocal    = 1,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    93
            gtQLocal   = 2,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    94
            gtDemo     = 3,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    95
            gtNet      = 4,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    96
            gtTraining = 5,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    97
            gtCampaign = 6,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    98
            gtSave     = 7,
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
    99
        };
8092
08960209db8c Try to use map preview facilities:
unc0rr
parents: 7665
diff changeset
   100
        //char msgbuf[MAXMSGCHARS];
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   101
        QString ammostr;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   102
        GameUIConfig * config;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   103
        GameCFGWidget * gamecfg;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   104
        TeamSelWidget* m_pTeamSelWidget;
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   105
        GameType gameType;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   106
8100
0e6fadf81a2c - frontlib loads team config via physfs
unc0rr
parents: 8092
diff changeset
   107
        flib_gameconn * m_conn;
0e6fadf81a2c - frontlib loads team config via physfs
unc0rr
parents: 8092
diff changeset
   108
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   109
        void commonConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   110
        void SendConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   111
        void SendNetConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   112
        void SendTrainingConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   113
        void SendCampaignConfig();
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6217
diff changeset
   114
        void SetGameState(GameState state);
7665
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   115
        void sendCampaignVar(const QByteArray & varToSend);
e556b44f5bd8 More Qt-ish code, fix couple warnings.
unc0rr
parents: 7628
diff changeset
   116
        void writeCampaignVar(const QByteArray &varVal);
8210
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   117
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   118
        static void onChat(void* context, const char *msg, bool teamchat);
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   119
        static void onConnect(void* context);
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   120
        static void onDisconnect(void* context, int reason);
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   121
        static void onEngineMessage(void *context, const uint8_t *em, size_t size);
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   122
        static void onErrorMessage(void* context, const char *msg);
ad178654142a Register flib_gameconn callbacks
unc0rr
parents: 8106
diff changeset
   123
        static void onGameRecorded(void *context, const uint8_t *record, size_t size, bool isSavegame);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   124
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   125
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   126
#endif