Start position of dealer is now set via network. Added files for network client engine. Added factory code.

This commit is contained in:
lotodore
2007-05-18 17:13:27 +00:00
parent a9e2d56b0d
commit b773c30ae0
38 changed files with 1302 additions and 55 deletions
+4 -3
View File
@@ -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 *
+11
View File
@@ -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());
+7 -2
View File
@@ -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
View File
@@ -194,7 +194,8 @@ class NetPacketGameStart : public NetPacket
public:
struct Data
{
u_int32_t reserved;
u_int16_t startDealerPos;
u_int16_t reserved;
};
NetPacketGameStart();
+1 -1
View File
@@ -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();