1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/*
This file is part of the Boson game
Copyright (C) 2005 Rivo Laks (rivolaks@hot.ee)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef GAME_H
#define GAME_H
#include <qdatetime.h>
#include <qstring.h>
#include <kgame/kgame.h>
#include <kgame/kgameproperty.h>
class Server;
class KGamePropertyBase;
class QDataStream;
class QDomElement;
class Game : public KGame
{
Q_OBJECT
public:
enum PropertyIds
{
IdGameSpeed = 10000, // dont wanna #include <kgameproperty.h> - better: KGamePropertyBase::IdUser+...
IdGamePaused = 10001,
IdAdvanceCount = 10010,
IdAdvanceFlag = 10011,
IdAdvanceCallsCount = 10020
};
Game(Server* s, Q_UINT16 cookie);
~Game();
bool connectToServer();
virtual KPlayer* createPlayer(int rtti, int io, bool isvirtual);
virtual bool savegame(QDataStream& stream, bool network, bool saveplayers = true);
virtual bool loadgame(QDataStream& stream, bool network, bool reset);
unsigned int cycle() const { return mCycle; }
int gameSpeed() const { return mGameSpeed; }
bool gamePaused() const { return mGamePaused; }
bool gameStarted() const { return mGameStarted; }
bool gameInited() const { return mGameInited; }
const QDateTime& gameStartedTime() { return mGameStartedTime; }
const QString& mapName() const { return mMapName; }
const QString& mapComment() const { return mMapComment; }
const QString& mapGroundTheme() const { return mMapGroundTheme; }
int mapWidth() const { return mMapWidth; }
int mapHeight() const { return mMapHeight; }
protected:
virtual bool playerInput(QDataStream& msg, KPlayer* player);
bool loadGameData(const QByteArray& data);
bool loadMapData(QMap<QString, QByteArray>& files);
bool loadPlayersData(QMap<QString, QByteArray>& files);
bool unstreamPlayfieldFiles(QMap<QString, QByteArray>& files, const QByteArray& buffer);
protected slots:
void slotNetworkData(int msgid, const QByteArray& buffer, Q_UINT32 receiver, Q_UINT32 sender);
void slotPropertyChanged(KGamePropertyBase*);
private:
Server* mServer;
unsigned int mCycle;
KGamePropertyInt mGameSpeed;
KGamePropertyBool mGamePaused;
KGamePropertyInt mAdvanceFlag;
KGameProperty<unsigned int> mAdvanceCallsCount;
bool mGameStarted;
bool mGameInited;
QDateTime mGameStartedTime;
QString mMapName;
QString mMapComment;
QString mMapGroundTheme;
int mMapWidth;
int mMapHeight;
};
#endif
|