QTfrontend/game.h
author nemo
Sun, 24 Jan 2010 16:46:06 +0000
changeset 2712 8f4527c9137c
parent 2468 0b62498c201a
child 2948 3f21a9dc93d0
permissions -rw-r--r--
Minor tweak, try to make long flavour text last longer, move the hurt self messages to unused messages group, so they don't get wiped by crate an instant later.
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();
2468
0b62498c201a openal fix, training map selection and rcplane adjustments from Smaxx (untested, but look reasonable). Bunch of new graphics from Tiy, new translation for pt-pt from inu_
nemo
parents: 2403
diff changeset
    53
	void StartTraining(const QString & file);
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);
2403
6c5d504af2ba - Proper /team command implementation
unc0rr
parents: 1907
diff changeset
    63
	void SendTeamMessage(const QString & msg);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    64
	void GameStateChanged(GameState gameState);
7b61834edcf6 - Better blowtorch
unc0rr
parents: 253
diff changeset
    65
	void GameStats(char type, const QString & info);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    66
	void HaveRecord(bool isDemo, const QByteArray & record);
425
a7e1dabc8fb7 - Better AI thinking behavior
unc0rr
parents: 419
diff changeset
    67
	void ErrorMessage(const QString &);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    68
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    69
public slots:
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    70
	void FromNet(const QByteArray & msg);
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1066
diff changeset
    71
	void FromNetChat(const QString & msg);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    72
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    73
private:
1375
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    74
	enum GameType {
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    75
		gtLocal    = 1,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    76
		gtQLocal   = 2,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    77
		gtDemo     = 3,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    78
		gtNet      = 4,
c95c6887b289 Start new hedgewars server instead of old one
unc0rr
parents: 1356
diff changeset
    79
		gtTraining = 5
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    80
    };
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    81
	char msgbuf[MAXMSGCHARS];
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    82
	QString teams[5];
681
7a20c50988ec working weapons select
displacer
parents: 588
diff changeset
    83
	QString ammostr;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    84
	int TeamCount;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    85
	GameUIConfig * config;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    86
	GameCFGWidget * gamecfg;
339
7535ab6c3820 Run game message added, team and config info provided for net game
displacer
parents: 324
diff changeset
    87
	TeamSelWidget* m_pTeamSelWidget;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    88
	GameType gameType;
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    89
	GameState gameState;
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    90
253
e7b3687fcb2c fixed: choose map for simple game is working now
displacer
parents: 239
diff changeset
    91
	void commonConfig();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    92
	void SendConfig();
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    93
	void SendQuickConfig();
341
184230eb4151 - Store more team specific values in HWTeam
unc0rr
parents: 339
diff changeset
    94
	void SendNetConfig();
588
b2e61fc49e5d Better stub for Training mode
unc0rr
parents: 587
diff changeset
    95
	void SendTrainingConfig();
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    96
	void ParseMessage(const QByteArray & msg);
533
eebb7684ac22 Save saves in Save directory
unc0rr
parents: 486
diff changeset
    97
	void SetGameState(GameState state);
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    98
};
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    99
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
   100
#endif