Commit 6f962667 authored by mercury233's avatar mercury233

test

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