Start position of dealer is now set via network. Added files for network client engine. Added factory code.
This commit is contained in:
@@ -115,7 +115,8 @@ struct NetPacketPlayerLeftData
|
||||
struct NetPacketGameStartData
|
||||
{
|
||||
NetPacketHeader head;
|
||||
u_int32_t reserved;
|
||||
u_int16_t startDealerPos;
|
||||
u_int16_t reserved;
|
||||
};
|
||||
|
||||
struct NetPacketHandStartData
|
||||
@@ -760,7 +761,7 @@ NetPacketGameStart::SetData(const NetPacketGameStart::Data &inData)
|
||||
NetPacketGameStartData *tmpData = (NetPacketGameStartData *)GetRawData();
|
||||
assert(tmpData);
|
||||
|
||||
tmpData->reserved = htonl(inData.reserved);
|
||||
tmpData->startDealerPos = htons(inData.startDealerPos);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -769,7 +770,7 @@ NetPacketGameStart::GetData(NetPacketGameStart::Data &outData) const
|
||||
NetPacketGameStartData *tmpData = (NetPacketGameStartData *)GetRawData();
|
||||
assert(tmpData);
|
||||
|
||||
outData.reserved = ntohl(tmpData->reserved);
|
||||
outData.startDealerPos = ntohs(tmpData->startDealerPos);
|
||||
}
|
||||
|
||||
const NetPacketGameStart *
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <core/rand.h>
|
||||
#include <gamedata.h>
|
||||
#include <game.h>
|
||||
#include <tools.h>
|
||||
#include <playerinterface.h>
|
||||
#include <handinterface.h>
|
||||
|
||||
@@ -223,8 +224,18 @@ ServerRecvStateStartGame::HandleNewConnection(ServerRecvThread &server, boost::s
|
||||
int
|
||||
ServerRecvStateStartGame::Process(ServerRecvThread &server)
|
||||
{
|
||||
GameData &gameData = server.GetGameData();
|
||||
|
||||
// Set dealer pos.
|
||||
Tools myTool;
|
||||
myTool.getRandNumber(0, gameData.numberOfPlayers-1, 1, &gameData.startDealerPos, 0);
|
||||
|
||||
boost::shared_ptr<NetPacket> answer(new NetPacketGameStart);
|
||||
|
||||
NetPacketGameStart::Data gameStartData;
|
||||
gameStartData.startDealerPos = gameData.startDealerPos;
|
||||
static_cast<NetPacketGameStart *>(answer.get())->SetData(gameStartData);
|
||||
|
||||
server.SendToAllPlayers(answer);
|
||||
server.SetState(ServerRecvStateStartHand::Instance());
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <net/receiverhelper.h>
|
||||
#include <net/socket_msg.h>
|
||||
#include <game.h>
|
||||
#include <localenginefactory.h>
|
||||
|
||||
#include <boost/lambda/lambda.hpp>
|
||||
|
||||
@@ -247,7 +248,11 @@ ServerRecvThread::InternalStartGame()
|
||||
{
|
||||
GuiInterface &gui = GetGui();
|
||||
PlayerDataList playerData = GetPlayerDataList();
|
||||
m_game.reset(new Game(&gui, playerData, GetGameData(), m_curGameId++, m_playerConfig));
|
||||
|
||||
// EngineFactory erstellen
|
||||
boost::shared_ptr<EngineFactory> factory(new LocalEngineFactory(m_playerConfig)); // LocalEngine erstellen
|
||||
|
||||
m_game.reset(new Game(&gui, factory, playerData, GetGameData(), m_curGameId++));
|
||||
SetState(SERVER_START_GAME_STATE::Instance());
|
||||
}
|
||||
|
||||
@@ -493,7 +498,7 @@ ServerRecvThread::GetGame()
|
||||
return *m_game;
|
||||
}
|
||||
|
||||
const GameData &
|
||||
GameData &
|
||||
ServerRecvThread::GetGameData() const
|
||||
{
|
||||
assert(m_gameData.get());
|
||||
|
||||
+2
-1
@@ -194,7 +194,8 @@ class NetPacketGameStart : public NetPacket
|
||||
public:
|
||||
struct Data
|
||||
{
|
||||
u_int32_t reserved;
|
||||
u_int16_t startDealerPos;
|
||||
u_int16_t reserved;
|
||||
};
|
||||
|
||||
NetPacketGameStart();
|
||||
|
||||
@@ -121,7 +121,7 @@ protected:
|
||||
ReceiverHelper &GetReceiver();
|
||||
|
||||
Game &GetGame();
|
||||
const GameData &GetGameData() const;
|
||||
GameData &GetGameData() const;
|
||||
bool CheckPassword(const std::string &password) const;
|
||||
|
||||
ServerSenderCallback &GetSenderCallback();
|
||||
|
||||
Reference in New Issue
Block a user