Commit 9e939145 authored by mercury233's avatar mercury233

update

parents 2e237987 59f42223
No preview for this file type
...@@ -1613,6 +1613,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1613,6 +1613,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
l = pcard->location; l = pcard->location;
if (l == LOCATION_HAND) { if (l == LOCATION_HAND) {
mainGame->dField.MoveCard(pcard, 5); mainGame->dField.MoveCard(pcard, 5);
pcard->is_highlighting = true;
} else if (l == LOCATION_MZONE) { } else if (l == LOCATION_MZONE) {
if (pcard->position & POS_FACEUP) if (pcard->position & POS_FACEUP)
continue; continue;
...@@ -1632,9 +1633,14 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1632,9 +1633,14 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->aniFrame = 5; pcard->aniFrame = 5;
} }
} }
if (mainGame->dInfo.isReplay)
mainGame->WaitFrameSignal(30);
else
mainGame->WaitFrameSignal(90); mainGame->WaitFrameSignal(90);
for(size_t i = 0; i < field_confirm.size(); ++i) { for(size_t i = 0; i < field_confirm.size(); ++i) {
mainGame->dField.MoveCard(field_confirm[i], 5); pcard = field_confirm[i];
mainGame->dField.MoveCard(pcard, 5);
pcard->is_highlighting = false;
} }
mainGame->WaitFrameSignal(5); mainGame->WaitFrameSignal(5);
} }
......
...@@ -22,6 +22,7 @@ extern unsigned char draw_count; ...@@ -22,6 +22,7 @@ extern unsigned char draw_count;
bool runasserver = true; bool runasserver = true;
SingleDuel::SingleDuel(bool is_match) { SingleDuel::SingleDuel(bool is_match) {
game_started = false;
match_mode = is_match; match_mode = is_match;
match_kill = 0; match_kill = 0;
for(int i = 0; i < 2; ++i) { for(int i = 0; i < 2; ++i) {
...@@ -196,7 +197,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -196,7 +197,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
} }
if(dp->type == NETPLAYER_TYPE_OBSERVER) { if(dp->type == NETPLAYER_TYPE_OBSERVER) {
observers.erase(dp); observers.erase(dp);
if(!pduel) { if(!game_started) {
STOC_HS_WatchChange scwc; STOC_HS_WatchChange scwc;
scwc.watch_count = observers.size(); scwc.watch_count = observers.size();
if(players[0]) if(players[0])
...@@ -208,7 +209,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -208,7 +209,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
} }
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
if(!pduel && duel_count == 0) { if(!game_started && duel_count == 0) {
STOC_HS_PlayerChange scpc; STOC_HS_PlayerChange scpc;
players[dp->type] = 0; players[dp->type] = 0;
ready[dp->type] = false; ready[dp->type] = false;
...@@ -221,7 +222,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -221,7 +222,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc); NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc);
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
if(!pduel) { if(!game_started) {
if(!ready[0]) if(!ready[0])
NetServer::SendPacketToPlayer(players[0], STOC_DUEL_START); NetServer::SendPacketToPlayer(players[0], STOC_DUEL_START);
if(!ready[1]) if(!ready[1])
...@@ -361,6 +362,7 @@ void SingleDuel::StartDuel(DuelPlayer* dp) { ...@@ -361,6 +362,7 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
return; return;
NetServer::StopListen(); NetServer::StopListen();
//NetServer::StopBroadcast(); //NetServer::StopBroadcast();
game_started = true;
NetServer::SendPacketToPlayer(players[0], STOC_DUEL_START); NetServer::SendPacketToPlayer(players[0], STOC_DUEL_START);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) { for(auto oit = observers.begin(); oit != observers.end(); ++oit) {
......
...@@ -52,6 +52,7 @@ protected: ...@@ -52,6 +52,7 @@ protected:
Replay last_replay; Replay last_replay;
bool match_mode; bool match_mode;
int match_kill; int match_kill;
bool game_started;
unsigned char duel_count; unsigned char duel_count;
unsigned char tp_player; unsigned char tp_player;
unsigned char match_result[3]; unsigned char match_result[3];
......
...@@ -21,6 +21,7 @@ extern unsigned char start_hand; ...@@ -21,6 +21,7 @@ extern unsigned char start_hand;
extern unsigned char draw_count; extern unsigned char draw_count;
TagDuel::TagDuel() { TagDuel::TagDuel() {
game_started = false;
for(int i = 0; i < 4; ++i) { for(int i = 0; i < 4; ++i) {
players[i] = 0; players[i] = 0;
ready[i] = false; ready[i] = false;
...@@ -174,7 +175,7 @@ void TagDuel::LeaveGame(DuelPlayer* dp) { ...@@ -174,7 +175,7 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
} }
if(dp->type == NETPLAYER_TYPE_OBSERVER) { if(dp->type == NETPLAYER_TYPE_OBSERVER) {
observers.erase(dp); observers.erase(dp);
if(!pduel) { if(!game_started) {
STOC_HS_WatchChange scwc; STOC_HS_WatchChange scwc;
scwc.watch_count = observers.size(); scwc.watch_count = observers.size();
for(int i = 0; i < 4; ++i) for(int i = 0; i < 4; ++i)
...@@ -185,7 +186,7 @@ void TagDuel::LeaveGame(DuelPlayer* dp) { ...@@ -185,7 +186,7 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
} }
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
if(!pduel) { if(!game_started) {
STOC_HS_PlayerChange scpc; STOC_HS_PlayerChange scpc;
players[dp->type] = 0; players[dp->type] = 0;
ready[dp->type] = false; ready[dp->type] = false;
...@@ -318,6 +319,7 @@ void TagDuel::StartDuel(DuelPlayer* dp) { ...@@ -318,6 +319,7 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
if(!ready[0] || !ready[1] || !ready[2] || !ready[3]) if(!ready[0] || !ready[1] || !ready[2] || !ready[3])
return; return;
NetServer::StopListen(); NetServer::StopListen();
game_started = true;
//NetServer::StopBroadcast(); //NetServer::StopBroadcast();
for(int i = 0; i < 4; ++i) for(int i = 0; i < 4; ++i)
NetServer::SendPacketToPlayer(players[i], STOC_DUEL_START); NetServer::SendPacketToPlayer(players[i], STOC_DUEL_START);
......
...@@ -51,6 +51,7 @@ protected: ...@@ -51,6 +51,7 @@ protected:
unsigned char hand_result[2]; unsigned char hand_result[2];
unsigned char last_response; unsigned char last_response;
Replay last_replay; Replay last_replay;
bool game_started;
unsigned char turn_count; unsigned char turn_count;
unsigned short time_limit[2]; unsigned short time_limit[2];
unsigned short time_elapsed; unsigned short time_elapsed;
......
Subproject commit 0b4345e70fa2fe3e2bf4518076df907acd4c00d8 Subproject commit ad00a8e3ce4f8015c2ef0e27caae6568682a5334
Subproject commit 223f7b7ae6247430699d4b643a2eeac7cf0681d1 Subproject commit c75936f93ccea5a0739b46f8ccecd23ee4b5abd6
...@@ -762,3 +762,6 @@ ...@@ -762,3 +762,6 @@
!setname 0xe9 磁石战士 磁石の戦士(じしゃくのせんし) !setname 0xe9 磁石战士 磁石の戦士(じしゃくのせんし)
!setname 0xea 水晶机巧 クリストロン !setname 0xea 水晶机巧 クリストロン
!setname 0xeb 化合兽 化合獣 !setname 0xeb 化合兽 化合獣
#!setname 0xec 魔界 魔界
!setname 0x10ec 魔界剧团 魔界劇団
!setname 0x20ec 魔界台本 魔界台本
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