Commit 6f962667 authored by mercury233's avatar mercury233

test

parent 551606a6
......@@ -27,6 +27,7 @@ namespace ygo {
Game* mainGame;
#ifdef YGOPRO_SERVER_MODE
unsigned short aServerPort;
unsigned int lflist;
unsigned char rule;
......@@ -40,17 +41,16 @@ unsigned short replay_mode;
unsigned char start_hand;
unsigned char draw_count;
void Game::MainServerLoop(int bDuel_mode, int lflist) {
void Game::MainServerLoop(int mode, int lflist) {
deckManager.LoadLFList();
LoadExpansionDB();
dataManager.LoadDB("cards.cdb");
aServerPort = NetServer::StartServer(aServerPort);
NetServer::Initduel(bDuel_mode, lflist);
NetServer::InitDuel(mode, lflist);
printf("%u\n", aServerPort);
fflush(stdout);
while(NetServer::net_evbase) {
#ifdef WIN32
Sleep(200);
......@@ -59,7 +59,7 @@ void Game::MainServerLoop(int bDuel_mode, int lflist) {
#endif
}
}
#ifndef YGOPRO_SERVER_MODE
#else
bool Game::Initialize() {
srand(time(0));
LoadConfig();
......
......@@ -87,7 +87,7 @@ class Game {
public:
bool Initialize();
#ifdef YGOPRO_SERVER_MODE
void MainServerLoop(int bDuel_mode, int lflist);
void MainServerLoop(int mode, int lflist);
void LoadExpansionDB();
#else
void MainLoop();
......
......@@ -13,53 +13,41 @@ char NetServer::net_server_read[0x2000];
char NetServer::net_server_write[0x2000];
unsigned short NetServer::last_sent = 0;
void NetServer::Initduel(int bDuel_mode, int lflist)
#ifdef YGOPRO_SERVER_MODE
void NetServer::InitDuel(int mode, int lflist)
{
CTOS_CreateGame* pkt = new CTOS_CreateGame;
pkt->info.mode=MODE_SINGLE;
if(bDuel_mode == MODE_SINGLE) {
duel_mode = new SingleDuel(false);
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, SingleDuel::SingleTimer, duel_mode);
} else if(bDuel_mode == MODE_MATCH) {
duel_mode = new SingleDuel(true);
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, SingleDuel::SingleTimer, duel_mode);
} else if(bDuel_mode == MODE_TAG) {
duel_mode = new TagDuel();
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, TagDuel::TagTimer, duel_mode);
}
if(pkt->info.rule > 3)
pkt->info.rule = 0;
if(pkt->info.mode > 2)
pkt->info.mode = 0;
unsigned int hash = 0;
if(mode == MODE_SINGLE) {
duel_mode = new SingleDuel(false);
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, SingleDuel::SingleTimer, duel_mode);
} else if(mode == MODE_MATCH) {
duel_mode = new SingleDuel(true);
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, SingleDuel::SingleTimer, duel_mode);
} else if(mode == MODE_TAG) {
duel_mode = new TagDuel();
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, TagDuel::TagTimer, duel_mode);
}
pkt->info.lflist = deckManager._lfList[lflist].hash;
CTOS_CreateGame* pkt = new CTOS_CreateGame;
for(auto lfit = deckManager._lfList.begin(); lfit != deckManager._lfList.end(); ++lfit) {
if(pkt->info.lflist == lfit->hash) {
hash = pkt->info.lflist;
break;
}
}
pkt->info.mode = mode;
if(!hash)
pkt->info.lflist = deckManager._lfList[0].hash;
if(lflist == -1)
pkt->info.lflist = 0;
duel_mode->host_info = pkt->info;
BufferIO::CopyWStr(pkt->name, duel_mode->name, 20);
BufferIO::CopyWStr(pkt->pass, duel_mode->pass, 20);
// duel_mode->JoinGame(dp, 0, true);
// StartBroadcast();
if(lflist == -1)
pkt->info.lflist = 0;
else if(lflist >= deckManager._lfList.size())
pkt->info.lflist = deckManager._lfList[0].hash;
else
pkt->info.lflist = deckManager._lfList[lflist].hash;
duel_mode->host_info = pkt->info;
BufferIO::CopyWStr(pkt->name, duel_mode->name, 20);
BufferIO::CopyWStr(pkt->pass, duel_mode->pass, 20);
}
unsigned short NetServer::StartServer(unsigned short port) {
#else
bool NetServer::StartServer(unsigned short port) {
#endif //YGOPRO_SERVER_MODE
if(net_evbase)
return false;
net_evbase = event_base_new();
......
......@@ -14,7 +14,9 @@ class NetServer {
private:
static std::unordered_map<bufferevent*, DuelPlayer> users;
static unsigned short server_port;
#ifndef YGOPRO_SERVER_MODE
static event_base* net_evbase;
#endif //YGOPRO_SERVER_MODE
static event* broadcast_ev;
static evconnlistener* listener;
static DuelMode* duel_mode;
......@@ -23,9 +25,13 @@ private:
static unsigned short last_sent;
public:
#ifdef YGOPRO_SERVER_MODE
static event_base* net_evbase;
static void Initduel(int duel_mode, int lflist);
static void InitDuel(int mode, int lflist);
static unsigned short StartServer(unsigned short port);
#else
static bool StartServer(unsigned short port);
#endif //YGOPRO_SERVER_MODE
static bool StartBroadcast();
static void StopServer();
static void StopBroadcast();
......
Subproject commit 0db546f8d051f478f410cb3d53161153ddb355bb
Subproject commit 4291281e2cfd31b76354d04a283641c045532133
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment