2004-08-16 17:19:17 +02:00
|
|
|
#ifndef _Network_NetClient_H
|
|
|
|
#define _Network_NetClient_H
|
|
|
|
|
|
|
|
#include <CStr.h>
|
|
|
|
#include <Network/Session.h>
|
|
|
|
|
|
|
|
#include "TurnManager.h"
|
2005-06-20 17:14:36 +02:00
|
|
|
#include "simulation/ScriptObject.h"
|
2005-01-17 05:52:02 +01:00
|
|
|
#include "scripting/ScriptableObject.h"
|
2005-02-21 18:13:31 +01:00
|
|
|
#include "scripting/JSMap.h"
|
|
|
|
|
|
|
|
#include <map>
|
2005-01-17 05:52:02 +01:00
|
|
|
|
2005-06-20 17:14:36 +02:00
|
|
|
class CPlayerSlot;
|
2004-08-16 17:19:17 +02:00
|
|
|
class CPlayer;
|
2005-06-20 17:14:36 +02:00
|
|
|
class CGame;
|
|
|
|
class CGameAttributes;
|
2004-08-16 17:19:17 +02:00
|
|
|
|
2005-01-17 05:52:02 +01:00
|
|
|
class CNetClient: public CNetSession, protected CTurnManager, public CJSObject<CNetClient>
|
2004-08-16 17:19:17 +02:00
|
|
|
{
|
2005-02-21 18:13:31 +01:00
|
|
|
class CServerSession: public CJSObject<CServerSession>
|
|
|
|
{
|
|
|
|
static void ScriptingInit();
|
|
|
|
|
|
|
|
public:
|
|
|
|
CServerSession(int sessionID, const CStrW &name);
|
|
|
|
|
|
|
|
int m_SessionID;
|
|
|
|
CStrW m_Name;
|
|
|
|
};
|
|
|
|
typedef std::map<int, CServerSession *> SessionMap;
|
|
|
|
|
|
|
|
SessionMap m_ServerSessions;
|
|
|
|
CJSMap<SessionMap> m_JSI_ServerSessions;
|
|
|
|
|
2005-01-17 05:52:02 +01:00
|
|
|
CStrW m_Password;
|
2005-02-21 18:13:31 +01:00
|
|
|
int m_SessionID;
|
2004-08-16 17:19:17 +02:00
|
|
|
|
2005-02-21 18:13:31 +01:00
|
|
|
CPlayerSlot *m_pLocalPlayerSlot;
|
2004-08-16 17:19:17 +02:00
|
|
|
CGame *m_pGame;
|
|
|
|
CGameAttributes *m_pGameAttributes;
|
|
|
|
|
2005-01-17 05:52:02 +01:00
|
|
|
// JS event scripts
|
|
|
|
CScriptObject m_OnStartGame;
|
|
|
|
CScriptObject m_OnChat;
|
2005-01-19 23:32:25 +01:00
|
|
|
CScriptObject m_OnConnectComplete;
|
2005-01-23 02:36:47 +01:00
|
|
|
CScriptObject m_OnDisconnect;
|
2005-02-21 18:13:31 +01:00
|
|
|
CScriptObject m_OnClientConnect;
|
|
|
|
CScriptObject m_OnClientDisconnect;
|
|
|
|
|
|
|
|
void OnClientConnect(int sessionID, const CStrW &name);
|
|
|
|
void OnClientDisconnect(int sessionID);
|
|
|
|
|
|
|
|
// JS Interface Functions
|
|
|
|
bool JSI_BeginConnect(JSContext *cx, uintN argc, jsval *argv);
|
|
|
|
static void ScriptingInit();
|
2005-01-17 05:52:02 +01:00
|
|
|
|
2004-08-16 17:19:17 +02:00
|
|
|
protected:
|
|
|
|
virtual void NewTurn();
|
|
|
|
virtual void QueueLocalCommand(CNetMessage *pMsg);
|
|
|
|
|
|
|
|
void StartGame();
|
|
|
|
|
|
|
|
public:
|
|
|
|
CNetClient(CGame *pGame, CGameAttributes *pGameAttribs);
|
2005-01-17 05:52:02 +01:00
|
|
|
virtual ~CNetClient();
|
2004-08-16 17:19:17 +02:00
|
|
|
|
|
|
|
static MessageHandler ConnectHandler;
|
2005-01-23 02:36:47 +01:00
|
|
|
|
|
|
|
static MessageHandler BaseHandler; // Common to all connected states
|
2004-08-16 17:19:17 +02:00
|
|
|
static MessageHandler HandshakeHandler;
|
|
|
|
static MessageHandler AuthenticateHandler;
|
2005-01-23 02:36:47 +01:00
|
|
|
|
|
|
|
static MessageHandler ChatHandler; // Common to pre-game and later
|
2004-08-16 17:19:17 +02:00
|
|
|
static MessageHandler PreGameHandler;
|
2004-09-21 16:40:43 +02:00
|
|
|
static MessageHandler InGameHandler;
|
2004-08-16 17:19:17 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
extern CNetClient *g_NetClient;
|
|
|
|
|
|
|
|
#endif //_Network_NetClient_H
|