QTfrontend/game.h
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 1907 a104432e8301
child 2403 6c5d504af2ba
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
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
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 788
diff changeset
     3
 * Copyright (c) 2005-2008 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"
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
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    32
enum GameState {
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    33
	gsNotStarted = 0,
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    34
	gsStarted  = 1,
324
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 306
diff changeset
    35
	gsInterrupted = 2,
f4c109c82a0c Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents: 306
diff changeset
    36
	gsFinished = 3,
686
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 681
diff changeset
    37
	gsStopped = 4,
494b5880989a - Header cleanup in game.cpp
unc0rr
parents: 681
diff changeset
    38
	gsDestroyed = 5
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    39
};
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    40
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    41
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    42
class HWGame : public TCPBase
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    43
{
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    44
	Q_OBJECT
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    45
public:
681
7a20c50988ec working weapons select
displacer
parents: 588
diff changeset
    46
	HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget = 0);
419
fdeed9718e6b virtual destructors for tcpBase derived classes, readarray clear removed as unneeded
displacer
parents: 395
diff changeset
    47
	virtual ~HWGame();
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
    48
	void AddTeam(const QString & team);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    49
	void PlayDemo(const QString & demofilename);
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    50
	void StartLocal();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    51
	void StartQuick();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    52
	void StartNet();
587
74db4115064a More work on Training mode
unc0rr
parents: 533
diff changeset
    53
	void StartTraining();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    54
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    55
 protected:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    56
	virtual QStringList setArguments();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    57
	virtual void onClientRead();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    58
	virtual void onClientDisconnect();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    59
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    60
signals:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    61
	void SendNet(const QByteArray & msg);
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1066
diff changeset
    62
	void SendChat(const QString & msg);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    63
	void GameStateChanged(GameState gameState);
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    64
	void GameStats(char type, const QString & info);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    65
	void HaveRecord(bool isDemo, const QByteArray & record);
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 419
diff changeset
    66
	void ErrorMessage(const QString &);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    67
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    68
public slots:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    69
	void FromNet(const QByteArray & msg);
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1066
diff changeset
    70
	void FromNetChat(const QString & msg);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    71
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
private:
1375
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    73
	enum GameType {
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    74
		gtLocal    = 1,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    75
		gtQLocal   = 2,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    76
		gtDemo     = 3,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    77
		gtNet      = 4,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    78
		gtTraining = 5
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    79
    };
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    80
	char msgbuf[MAXMSGCHARS];
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    81
	QString teams[5];
681
7a20c50988ec working weapons select
displacer
parents: 588
diff changeset
    82
	QString ammostr;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    83
	int TeamCount;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    84
	GameUIConfig * config;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    85
	GameCFGWidget * gamecfg;
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 324
diff changeset
    86
	TeamSelWidget* m_pTeamSelWidget;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    87
	GameType gameType;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    88
	GameState gameState;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    89
253
e7b3687fcb2c fixed: choose map for simple game is working now
displacer
parents: 239
diff changeset
    90
	void commonConfig();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    91
	void SendConfig();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    92
	void SendQuickConfig();
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
    93
	void SendNetConfig();
588
b2e61fc49e5d Better stub for Training mode
unc0rr
parents: 587
diff changeset
    94
	void SendTrainingConfig();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    95
	void ParseMessage(const QByteArray & msg);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    96
	void SetGameState(GameState state);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    97
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    98
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    99
#endif