Chat messages are now working.

This commit is contained in:
lotodore
2007-05-25 16:03:12 +00:00
parent d01ecaf885
commit 13a731e041
21 changed files with 761 additions and 337 deletions
+27 -10
View File
@@ -21,7 +21,7 @@
#ifndef _SERVERRECVSTATE_H_
#define _SERVERRECVSTATE_H_
#include <net/connectdata.h>
#include <net/serverrecvthread.h>
#include <playerdata.h>
#define SERVER_INITIAL_STATE ServerRecvStateInit
@@ -29,7 +29,6 @@
class Game;
class PlayerInterface;
class ServerRecvThread;
class ServerCallback;
class ServerRecvState
@@ -44,8 +43,25 @@ public:
virtual int Process(ServerRecvThread &server) = 0;
};
// Abstract State: Receiving.
class ServerRecvStateReceiving : public ServerRecvState
{
public:
virtual ~ServerRecvStateReceiving();
// Globally handle packets which are allowed in all running states.
// Calls InternalProcess if packet has not been processed.
virtual int Process(ServerRecvThread &server);
protected:
ServerRecvStateReceiving();
virtual int InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet) = 0;
};
// State: Initialization.
class ServerRecvStateInit : public ServerRecvState
class ServerRecvStateInit : public ServerRecvStateReceiving
{
public:
// Access the state singleton.
@@ -56,14 +72,13 @@ public:
//
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
//
virtual int Process(ServerRecvThread &server);
protected:
// Protected constructor - this is a singleton.
ServerRecvStateInit();
virtual int InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet);
private:
unsigned m_curUniquePlayerId;
@@ -75,10 +90,11 @@ class ServerRecvStateRunning : public ServerRecvState
public:
virtual ~ServerRecvStateRunning();
//
// Reject new connections.
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
protected:
ServerRecvStateRunning();
};
@@ -140,7 +156,7 @@ protected:
};
// State: Wait for a player action.
class ServerRecvStateWaitPlayerAction : public ServerRecvStateRunning
class ServerRecvStateWaitPlayerAction : public ServerRecvStateReceiving
{
public:
// Access the state singleton.
@@ -148,14 +164,15 @@ public:
virtual ~ServerRecvStateWaitPlayerAction();
//
virtual int Process(ServerRecvThread &server);
virtual void HandleNewConnection(ServerRecvThread &server, boost::shared_ptr<ConnectData> data);
protected:
// Protected constructor - this is a singleton.
ServerRecvStateWaitPlayerAction();
virtual int InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet);
static int GetHighestSet(Game &curGame);
static void SetHighestSet(Game &curGame, int highestSet);
};