Added callback to display player names of connected players.
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define ADD_PADDING(x) ((((x) + 3) >> 2) << 2)
|
||||
#define ADD_PADDING(x) ((((x) + 3) >> 2) << 2)
|
||||
|
||||
#define NET_TYPE_JOIN_GAME 1
|
||||
#define NET_TYPE_JOIN_GAME_ACK 2
|
||||
|
||||
@@ -77,7 +77,9 @@ ServerRecvStateInit::Process(ServerRecvThread &server)
|
||||
if (tmpPacket)
|
||||
{
|
||||
// TODO: check password
|
||||
// TODO: display name
|
||||
NetPacketJoinGame::Data playerData;
|
||||
tmpPacket->GetData(playerData);
|
||||
server.GetCallback().SignalNetServerPlayerJoined(playerData.playerName);
|
||||
boost::shared_ptr<NetPacket> answer(new NetPacketJoinGameAck);
|
||||
server.GetSender().Send(answer, recvSock);
|
||||
session->SetState(SessionData::Established);
|
||||
|
||||
@@ -41,7 +41,8 @@ private:
|
||||
};
|
||||
|
||||
|
||||
ServerRecvThread::ServerRecvThread()
|
||||
ServerRecvThread::ServerRecvThread(ServerCallback &cb)
|
||||
: m_callback(cb)
|
||||
{
|
||||
m_senderCallback.reset(new ServerSenderCallback(*this));
|
||||
m_sender.reset(new SenderThread(GetSenderCallback()));
|
||||
@@ -85,6 +86,12 @@ ServerRecvThread::AddNotification(unsigned notification)
|
||||
m_notificationQueue.push_back(notification);
|
||||
}
|
||||
|
||||
ServerCallback &
|
||||
ServerRecvThread::GetCallback()
|
||||
{
|
||||
return m_callback;
|
||||
}
|
||||
|
||||
void
|
||||
ServerRecvThread::Main()
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ ServerThread::ServerThread(ServerCallback &cb)
|
||||
: m_callback(cb)
|
||||
{
|
||||
m_context.reset(new ServerContext);
|
||||
m_recvThread.reset(new ServerRecvThread);
|
||||
m_recvThread.reset(new ServerRecvThread(cb));
|
||||
}
|
||||
|
||||
ServerThread::~ServerThread()
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#ifndef _SERVERCALLBACK_H_
|
||||
#define _SERVERCALLBACK_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
class ServerCallback
|
||||
{
|
||||
public:
|
||||
@@ -28,6 +30,8 @@ public:
|
||||
|
||||
virtual void SignalNetServerSuccess(int actionID) = 0;
|
||||
virtual void SignalNetServerError(int errorID, int osErrorID) = 0;
|
||||
|
||||
virtual void SignalNetServerPlayerJoined(const std::string &playerName) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <net/connectdata.h>
|
||||
#include <net/sessiondata.h>
|
||||
#include <net/servercallback.h>
|
||||
|
||||
#define RECEIVER_THREAD_TERMINATE_TIMEOUT 200
|
||||
|
||||
@@ -43,13 +44,15 @@ class NetPacket;
|
||||
class ServerRecvThread : public Thread
|
||||
{
|
||||
public:
|
||||
ServerRecvThread();
|
||||
ServerRecvThread(ServerCallback &gui);
|
||||
virtual ~ServerRecvThread();
|
||||
|
||||
void SendToAllPlayers(boost::shared_ptr<NetPacket> packet);
|
||||
void AddConnection(boost::shared_ptr<ConnectData> data);
|
||||
void AddNotification(unsigned notification);
|
||||
|
||||
ServerCallback &GetCallback();
|
||||
|
||||
protected:
|
||||
|
||||
typedef std::deque<boost::shared_ptr<ConnectData> > ConnectQueue;
|
||||
@@ -94,6 +97,8 @@ private:
|
||||
|
||||
std::auto_ptr<ServerSenderCallback> m_senderCallback;
|
||||
|
||||
ServerCallback &m_callback;
|
||||
|
||||
friend class ServerRecvStateInit;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user