Commit 35a24f1e authored by nanahira's avatar nanahira

Merge branch 'patch-remove-ready-server' of ../versions/ygopro-mc into server-develop

parents 91edae35 398bb2bd
...@@ -437,6 +437,14 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) { ...@@ -437,6 +437,14 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode->ToObserver(dp); duel_mode->ToObserver(dp);
break; break;
} }
#if defined(YGOPRO_SERVER_MODE) && !defined(YGOPRO_SERVER_RECEIVE_READY)
case CTOS_HS_NOTREADY: {
if (!duel_mode || duel_mode->pduel)
return;
duel_mode->PlayerReady(dp, false);
break;
}
#else
case CTOS_HS_READY: case CTOS_HS_READY:
case CTOS_HS_NOTREADY: { case CTOS_HS_NOTREADY: {
if (!duel_mode || duel_mode->pduel) if (!duel_mode || duel_mode->pduel)
...@@ -444,6 +452,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) { ...@@ -444,6 +452,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode->PlayerReady(dp, (CTOS_HS_NOTREADY - pktType) != 0); duel_mode->PlayerReady(dp, (CTOS_HS_NOTREADY - pktType) != 0);
break; break;
} }
#endif
case CTOS_HS_KICK: { case CTOS_HS_KICK: {
if (!duel_mode || duel_mode->pduel) if (!duel_mode || duel_mode->pduel)
return; return;
......
...@@ -39,9 +39,6 @@ end ...@@ -39,9 +39,6 @@ end
if SERVER_PRO2_SUPPORT then if SERVER_PRO2_SUPPORT then
defines { "SERVER_PRO2_SUPPORT" } defines { "SERVER_PRO2_SUPPORT" }
end end
if SERVER_TAG_SURRENDER_CONFIRM then
defines { "SERVER_TAG_SURRENDER_CONFIRM" }
end
else else
project "ygopro" project "ygopro"
kind "WindowedApp" kind "WindowedApp"
......
...@@ -145,6 +145,7 @@ void Replay::SaveReplay(const wchar_t* name) { ...@@ -145,6 +145,7 @@ void Replay::SaveReplay(const wchar_t* name) {
std::fwrite(comp_data, comp_size, 1, rfp); std::fwrite(comp_data, comp_size, 1, rfp);
std::fclose(rfp); std::fclose(rfp);
} }
#ifndef YGOPRO_SERVER_MODE
bool Replay::OpenReplay(const wchar_t* name) { bool Replay::OpenReplay(const wchar_t* name) {
FILE* rfp = mywfopen(name, "rb"); FILE* rfp = mywfopen(name, "rb");
if(!rfp) { if(!rfp) {
...@@ -260,6 +261,7 @@ void Replay::Rewind() { ...@@ -260,6 +261,7 @@ void Replay::Rewind() {
data_position = 0; data_position = 0;
can_read = true; can_read = true;
} }
#endif // YGOPRO_SERVER_MODE
void Replay::Reset() { void Replay::Reset() {
is_recording = false; is_recording = false;
is_replaying = false; is_replaying = false;
...@@ -273,6 +275,7 @@ void Replay::Reset() { ...@@ -273,6 +275,7 @@ void Replay::Reset() {
decks.clear(); decks.clear();
script_name.clear(); script_name.clear();
} }
#ifndef YGOPRO_SERVER_MODE
void Replay::SkipInfo(){ void Replay::SkipInfo(){
if (data_position == 0) if (data_position == 0)
data_position += info_offset; data_position += info_offset;
...@@ -330,5 +333,6 @@ bool Replay::ReadInfo() { ...@@ -330,5 +333,6 @@ bool Replay::ReadInfo() {
} }
return true; return true;
} }
#endif // YGOPRO_SERVER_MODE
} }
...@@ -86,6 +86,9 @@ public: ...@@ -86,6 +86,9 @@ public:
return deck_index; return deck_index;
} }
} }
#ifdef YGOPRO_SERVER_MODE
void Reset();
#else
bool OpenReplay(const wchar_t* name); bool OpenReplay(const wchar_t* name);
bool ReadNextResponse(unsigned char resp[]); bool ReadNextResponse(unsigned char resp[]);
bool ReadName(wchar_t* data); bool ReadName(wchar_t* data);
...@@ -102,6 +105,7 @@ public: ...@@ -102,6 +105,7 @@ public:
void Reset(); void Reset();
void SkipInfo(); void SkipInfo();
bool IsReplaying() const; bool IsReplaying() const;
#endif // YGOPRO_SERVER_MODE
FILE* fp{ nullptr }; FILE* fp{ nullptr };
#ifdef _WIN32 #ifdef _WIN32
...@@ -119,7 +123,9 @@ public: ...@@ -119,7 +123,9 @@ public:
std::string script_name; // 2 bytes, script name (max: 256 bytes) std::string script_name; // 2 bytes, script name (max: 256 bytes)
private: private:
#ifndef YGOPRO_SERVER_MODE
bool ReadInfo(); bool ReadInfo();
#endif
unsigned char* replay_data; unsigned char* replay_data;
size_t replay_size{}; size_t replay_size{};
......
...@@ -408,6 +408,13 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) { ...@@ -408,6 +408,13 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
#endif #endif
valid = false; valid = false;
if (!valid) { if (!valid) {
#if defined(YGOPRO_SERVER_MODE) && !defined(YGOPRO_SERVER_RECEIVE_READY)
if(duel_count == 0) {
STOC_HS_PlayerChange scpc;
scpc.status = (dp->type << 4) | PLAYERCHANGE_NOTREADY;
NetServer::SendPacketToPlayer(dp, STOC_HS_PLAYER_CHANGE, scpc);
}
#endif
STOC_ErrorMsg scem; STOC_ErrorMsg scem;
scem.msg = ERRMSG_DECKERROR; scem.msg = ERRMSG_DECKERROR;
scem.code = 0; scem.code = 0;
...@@ -416,6 +423,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) { ...@@ -416,6 +423,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
} }
if(duel_count == 0) { if(duel_count == 0) {
deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec); deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
#if defined(YGOPRO_SERVER_MODE) && !defined(YGOPRO_SERVER_RECEIVE_READY)
PlayerReady(dp, true);
#endif
} else { } else {
if(DeckManager::LoadSide(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec)) { if(DeckManager::LoadSide(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec)) {
ready[dp->type] = true; ready[dp->type] = true;
......
...@@ -394,6 +394,11 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) { ...@@ -394,6 +394,11 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
#endif #endif
valid = false; valid = false;
if (!valid) { if (!valid) {
#if defined(YGOPRO_SERVER_MODE) && !defined(YGOPRO_SERVER_RECEIVE_READY)
STOC_HS_PlayerChange scpc;
scpc.status = (dp->type << 4) | PLAYERCHANGE_NOTREADY;
NetServer::SendPacketToPlayer(dp, STOC_HS_PLAYER_CHANGE, scpc);
#endif
STOC_ErrorMsg scem; STOC_ErrorMsg scem;
scem.msg = ERRMSG_DECKERROR; scem.msg = ERRMSG_DECKERROR;
scem.code = 0; scem.code = 0;
...@@ -401,6 +406,9 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) { ...@@ -401,6 +406,9 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
return; return;
} }
deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec); deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
#if defined(YGOPRO_SERVER_MODE) && !defined(YGOPRO_SERVER_RECEIVE_READY)
PlayerReady(dp, true);
#endif
} }
void TagDuel::StartDuel(DuelPlayer* dp) { void TagDuel::StartDuel(DuelPlayer* dp) {
if(dp != host_player) if(dp != host_player)
...@@ -728,7 +736,7 @@ void TagDuel::Surrender(DuelPlayer* dp) { ...@@ -728,7 +736,7 @@ void TagDuel::Surrender(DuelPlayer* dp) {
if(dp->type > 3 || !pduel) if(dp->type > 3 || !pduel)
return; return;
uint32_t player = dp->type; uint32_t player = dp->type;
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_TAG_SURRENDER_CONFIRM) #if !defined(YGOPRO_SERVER_MODE) || defined(YGOPRO_SERVER_TAG_SURRENDER_CONFIRM)
if(surrender[player]) if(surrender[player])
return; return;
static const uint32_t teammatemap[] = { 1, 0, 3, 2 }; static const uint32_t teammatemap[] = { 1, 0, 3, 2 };
......
...@@ -29,9 +29,12 @@ IRRKLANG_PRO_BUILD_IKPMP3 = false ...@@ -29,9 +29,12 @@ IRRKLANG_PRO_BUILD_IKPMP3 = false
SERVER_MODE = true SERVER_MODE = true
SERVER_ZIP_SUPPORT = false SERVER_ZIP_SUPPORT = false
SERVER_PRO2_SUPPORT = false SERVER_PRO2_SUPPORT = false
<<<<<<< HEAD
SERVER_PRO3_SUPPORT = false SERVER_PRO3_SUPPORT = false
SERVER_TAG_SURRENDER_CONFIRM = false SERVER_TAG_SURRENDER_CONFIRM = false
USE_IRRKLANG = false USE_IRRKLANG = false
=======
>>>>>>> 398bb2bd44567c62089ea2ebba9b1effce34da3b
-- Read settings from command line or environment variables -- Read settings from command line or environment variables
...@@ -97,17 +100,26 @@ newoption { trigger = "mac-intel", category = "YGOPro", description = "Compile f ...@@ -97,17 +100,26 @@ newoption { trigger = "mac-intel", category = "YGOPro", description = "Compile f
newoption { trigger = "server-mode", category = "YGOPro - server", description = "" } newoption { trigger = "server-mode", category = "YGOPro - server", description = "" }
newoption { trigger = "server-zip-support", category = "YGOPro - server", description = "" } newoption { trigger = "server-zip-support", category = "YGOPro - server", description = "" }
newoption { trigger = "server-pro2-support", category = "YGOPro - server", description = "" } newoption { trigger = "server-pro2-support", category = "YGOPro - server", description = "" }
<<<<<<< HEAD
newoption { trigger = "server-pro3-support", category = "YGOPro - server", description = "" } newoption { trigger = "server-pro3-support", category = "YGOPro - server", description = "" }
newoption { trigger = "server-tag-surrender-confirm", category = "YGOPro - server", description = "" } newoption { trigger = "server-tag-surrender-confirm", category = "YGOPro - server", description = "" }
=======
>>>>>>> 398bb2bd44567c62089ea2ebba9b1effce34da3b
boolOptions = { boolOptions = {
"compat-mycard", "compat-mycard",
"no-lua-safe", "no-lua-safe",
<<<<<<< HEAD
"message-debug", "message-debug",
"no-side-check", "no-side-check",
"enable-debug-func", "enable-debug-func",
"log-lua-memory-size", "log-lua-memory-size",
"log-in-chat", "log-in-chat",
=======
"no-side-check",
"server-tag-surrender-confirm",
"server-receive-ready",
>>>>>>> 398bb2bd44567c62089ea2ebba9b1effce34da3b
} }
for _, boolOption in ipairs(boolOptions) do for _, boolOption in ipairs(boolOptions) do
...@@ -170,9 +182,6 @@ if GetParam("server-pro3-support") then ...@@ -170,9 +182,6 @@ if GetParam("server-pro3-support") then
SERVER_ZIP_SUPPORT = true SERVER_ZIP_SUPPORT = true
SERVER_TAG_SURRENDER_CONFIRM = true SERVER_TAG_SURRENDER_CONFIRM = true
end end
if GetParam("server-tag-surrender-confirm") then
SERVER_TAG_SURRENDER_CONFIRM = true
end
if GetParam("build-lua") then if GetParam("build-lua") then
BUILD_LUA = true BUILD_LUA = true
......
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