Commit f9ef2974 authored by DailyShana's avatar DailyShana

retry in single mode

parent 1849c130
...@@ -899,8 +899,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -899,8 +899,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
mainGame->actionSignal.Wait(); mainGame->actionSignal.Wait();
select_hint = last_select_hint; select_hint = last_select_hint;
ClientAnalyze(last_successful_msg, last_successful_msg_length); return ClientAnalyze(last_successful_msg, last_successful_msg_length);
break;
} }
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->stMessage->setText(L"Error occurs."); mainGame->stMessage->setText(L"Error occurs.");
...@@ -908,27 +907,29 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -908,27 +907,29 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
mainGame->actionSignal.Wait(); mainGame->actionSignal.Wait();
mainGame->closeDoneSignal.Reset(); if(!mainGame->dInfo.isSingleMode) {
mainGame->closeSignal.Set(); mainGame->closeDoneSignal.Reset();
mainGame->closeDoneSignal.Wait(); mainGame->closeSignal.Set();
mainGame->gMutex.Lock(); mainGame->closeDoneSignal.Wait();
mainGame->dInfo.isStarted = false; mainGame->gMutex.Lock();
mainGame->dInfo.isFinished = false; mainGame->dInfo.isStarted = false;
mainGame->btnCreateHost->setEnabled(true); mainGame->dInfo.isFinished = false;
mainGame->btnJoinHost->setEnabled(true); mainGame->btnCreateHost->setEnabled(true);
mainGame->btnJoinCancel->setEnabled(true); mainGame->btnJoinHost->setEnabled(true);
mainGame->btnStartBot->setEnabled(true); mainGame->btnJoinCancel->setEnabled(true);
mainGame->btnBotCancel->setEnabled(true); mainGame->btnStartBot->setEnabled(true);
mainGame->stTip->setVisible(false); mainGame->btnBotCancel->setEnabled(true);
mainGame->device->setEventReceiver(&mainGame->menuHandler); mainGame->stTip->setVisible(false);
if(bot_mode) mainGame->device->setEventReceiver(&mainGame->menuHandler);
mainGame->ShowElement(mainGame->wSinglePlay); if(bot_mode)
else mainGame->ShowElement(mainGame->wSinglePlay);
mainGame->ShowElement(mainGame->wLanWindow); else
mainGame->gMutex.Unlock(); mainGame->ShowElement(mainGame->wLanWindow);
event_base_loopbreak(client_base); mainGame->gMutex.Unlock();
if(exit_on_return) event_base_loopbreak(client_base);
mainGame->device->closeDevice(); if(exit_on_return)
mainGame->device->closeDevice();
}
return false; return false;
} }
case MSG_HINT: { case MSG_HINT: {
......
...@@ -177,13 +177,11 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -177,13 +177,11 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
mainGame->dInfo.curMsg = BufferIO::ReadUInt8(pbuf); mainGame->dInfo.curMsg = BufferIO::ReadUInt8(pbuf);
switch (mainGame->dInfo.curMsg) { switch (mainGame->dInfo.curMsg) {
case MSG_RETRY: { case MSG_RETRY: {
mainGame->gMutex.Lock(); if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) {
mainGame->stMessage->setText(L"Error occurs."); mainGame->singleSignal.Reset();
mainGame->PopupElement(mainGame->wMessage); mainGame->singleSignal.Wait();
mainGame->gMutex.Unlock(); }
mainGame->actionSignal.Reset(); break;
mainGame->actionSignal.Wait();
return false;
} }
case MSG_HINT: { case MSG_HINT: {
/*int type = */BufferIO::ReadInt8(pbuf); /*int type = */BufferIO::ReadInt8(pbuf);
......
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