Commit fb658cf7 authored by fallenstardust's avatar fallenstardust

update & fix hiding elements

add setting for drawing single chain
parent e1f22518
...@@ -1107,6 +1107,8 @@ void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) { ...@@ -1107,6 +1107,8 @@ void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) {
fadingList.push_back(fu); fadingList.push_back(fu);
} }
void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) { void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) {
if(!win->isVisible() && !set_action)
return;
FadingUnit fu; FadingUnit fu;
fu.fadingSize = win->getRelativePosition(); fu.fadingSize = win->getRelativePosition();
for(auto fit = fadingList.begin(); fit != fadingList.end(); ++fit) for(auto fit = fadingList.begin(); fit != fadingList.end(); ++fit)
......
...@@ -372,24 +372,17 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -372,24 +372,17 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->dField.Clear(); mainGame->dField.Clear();
mainGame->is_building = true; mainGame->is_building = true;
mainGame->is_siding = true; mainGame->is_siding = true;
mainGame->CloseGameWindow();
mainGame->wChat->setVisible(false); mainGame->wChat->setVisible(false);
mainGame->wPhase->setVisible(false);
mainGame->wDeckEdit->setVisible(false); mainGame->wDeckEdit->setVisible(false);
mainGame->wFilter->setVisible(false); mainGame->wFilter->setVisible(false);
mainGame->wSort->setVisible(false); mainGame->wSort->setVisible(false);
mainGame->stTip->setVisible(false); if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false);
mainGame->btnSideOK->setVisible(true); mainGame->btnSideOK->setVisible(true);
mainGame->btnSideShuffle->setVisible(true); mainGame->btnSideShuffle->setVisible(true);
mainGame->btnSideSort->setVisible(true); mainGame->btnSideSort->setVisible(true);
mainGame->btnSideReload->setVisible(true); mainGame->btnSideReload->setVisible(true);
if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false);
mainGame->btnSpectatorSwap->setVisible(false);
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->btnCancelOrFinish->setVisible(false);
mainGame->btnShuffle->setVisible(false);
mainGame->deckBuilder.result_string[0] = L'0'; mainGame->deckBuilder.result_string[0] = L'0';
mainGame->deckBuilder.result_string[1] = 0; mainGame->deckBuilder.result_string[1] = 0;
mainGame->deckBuilder.results.clear(); mainGame->deckBuilder.results.clear();
...@@ -494,12 +487,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -494,12 +487,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->RefreshCategoryDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect); mainGame->RefreshCategoryDeck(mainGame->cbCategorySelect, mainGame->cbDeckSelect);
mainGame->cbCategorySelect->setEnabled(true); mainGame->cbCategorySelect->setEnabled(true);
mainGame->cbDeckSelect->setEnabled(true); mainGame->cbDeckSelect->setEnabled(true);
if(mainGame->wCreateHost->isVisible()) mainGame->HideElement(mainGame->wCreateHost);
mainGame->HideElement(mainGame->wCreateHost); mainGame->HideElement(mainGame->wLanWindow);
else if(mainGame->wLanWindow->isVisible()) mainGame->HideElement(mainGame->wSinglePlay);
mainGame->HideElement(mainGame->wLanWindow);
else if(mainGame->wSinglePlay->isVisible())
mainGame->HideElement(mainGame->wSinglePlay);
mainGame->ShowElement(mainGame->wHostPrepare); mainGame->ShowElement(mainGame->wHostPrepare);
if(!mainGame->chkIgnore1->isChecked()) if(!mainGame->chkIgnore1->isChecked())
mainGame->wChat->setVisible(true); mainGame->wChat->setVisible(true);
...@@ -658,12 +648,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -658,12 +648,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
if(mainGame->dInfo.player_type < 7) if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false); mainGame->btnLeaveGame->setVisible(false);
mainGame->btnSpectatorSwap->setVisible(false); mainGame->CloseGameButtons();
mainGame->btnChainIgnore->setVisible(false);
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->btnCancelOrFinish->setVisible(false);
mainGame->wSurrender->setVisible(false);
mainGame->stMessage->setText(dataManager.GetSysString(1500)); mainGame->stMessage->setText(dataManager.GetSysString(1500));
mainGame->PopupElement(mainGame->wMessage); mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
...@@ -698,14 +683,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -698,14 +683,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
case STOC_REPLAY: { case STOC_REPLAY: {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->wPhase->setVisible(false); mainGame->wPhase->setVisible(false);
mainGame->wSurrender->setVisible(false);
if(mainGame->dInfo.player_type < 7) if(mainGame->dInfo.player_type < 7)
mainGame->btnLeaveGame->setVisible(false); mainGame->btnLeaveGame->setVisible(false);
mainGame->btnChainIgnore->setVisible(false); mainGame->CloseGameButtons();
mainGame->btnChainAlways->setVisible(false);
mainGame->btnChainWhenAvail->setVisible(false);
mainGame->btnCancelOrFinish->setVisible(false);
mainGame->btnShuffle->setVisible(false);
char* prep = pdata; char* prep = pdata;
Replay new_replay; Replay new_replay;
memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader)); memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader));
...@@ -1723,9 +1703,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1723,9 +1703,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int selecting_player = BufferIO::ReadInt8(pbuf); int selecting_player = BufferIO::ReadInt8(pbuf);
mainGame->dField.select_min = BufferIO::ReadInt8(pbuf); mainGame->dField.select_min = BufferIO::ReadInt8(pbuf);
mainGame->dField.selectable_field = ~BufferIO::ReadInt32(pbuf); mainGame->dField.selectable_field = ~BufferIO::ReadInt32(pbuf);
mainGame->dField.selected_field = 0;
if(selecting_player == mainGame->LocalPlayer(1)) if(selecting_player == mainGame->LocalPlayer(1))
mainGame->dField.selectable_field = (mainGame->dField.selectable_field >> 16) | (mainGame->dField.selectable_field << 16); mainGame->dField.selectable_field = (mainGame->dField.selectable_field >> 16) | (mainGame->dField.selectable_field << 16);
mainGame->dField.selected_field = 0;
unsigned char respbuf[64]; unsigned char respbuf[64];
int pzone = 0; int pzone = 0;
if (mainGame->dInfo.curMsg == MSG_SELECT_PLACE) { if (mainGame->dInfo.curMsg == MSG_SELECT_PLACE) {
...@@ -2401,8 +2381,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2401,8 +2381,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->btnLeaveGame->setText(dataManager.GetSysString(1351)); mainGame->btnLeaveGame->setText(dataManager.GetSysString(1351));
mainGame->btnLeaveGame->setVisible(true); mainGame->btnLeaveGame->setVisible(true);
} }
if(mainGame->wSurrender->isVisible()) mainGame->HideElement(mainGame->wSurrender);
mainGame->HideElement(mainGame->wSurrender);
if(!mainGame->dInfo.isReplay && mainGame->dInfo.player_type < 7) { if(!mainGame->dInfo.isReplay && mainGame->dInfo.player_type < 7) {
if(mainGame->gameConf.control_mode == 0) { if(mainGame->gameConf.control_mode == 0) {
mainGame->btnChainIgnore->setVisible(true); mainGame->btnChainIgnore->setVisible(true);
...@@ -2921,16 +2900,16 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2921,16 +2900,16 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int ct = BufferIO::ReadInt8(pbuf); int ct = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
return true; return true;
if(mainGame->dField.last_chain) if(mainGame->dField.chains.size() > 1 || mainGame->gameConf.draw_single_chain) {
mainGame->WaitFrameSignal(11); if (mainGame->dField.last_chain)
if(mainGame->dField.chains.size() > 1 || mainGame->gameConf.draw_single_chain) { mainGame->WaitFrameSignal(11);
for (int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
mainGame->dField.chains[ct - 1].solved = false; mainGame->dField.chains[ct - 1].solved = false;
mainGame->WaitFrameSignal(3); mainGame->WaitFrameSignal(3);
mainGame->dField.chains[ct - 1].solved = true; mainGame->dField.chains[ct - 1].solved = true;
mainGame->WaitFrameSignal(3); mainGame->WaitFrameSignal(3);
} }
} }
mainGame->dField.last_chain = false; mainGame->dField.last_chain = false;
return true; return true;
} }
......
...@@ -134,13 +134,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -134,13 +134,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->dInfo.isStarted = false; mainGame->dInfo.isStarted = false;
mainGame->dInfo.isFinished = false; mainGame->dInfo.isFinished = false;
mainGame->device->setEventReceiver(&mainGame->menuHandler); mainGame->device->setEventReceiver(&mainGame->menuHandler);
mainGame->stTip->setVisible(false); mainGame->CloseDuelWindow();
mainGame->wCardImg->setVisible(false);
mainGame->wInfos->setVisible(false);
mainGame->wPhase->setVisible(false);
mainGame->btnLeaveGame->setVisible(false);
mainGame->btnSpectatorSwap->setVisible(false);
mainGame->wChat->setVisible(false);
mainGame->btnCreateHost->setEnabled(true); mainGame->btnCreateHost->setEnabled(true);
mainGame->btnJoinHost->setEnabled(true); mainGame->btnJoinHost->setEnabled(true);
mainGame->btnJoinCancel->setEnabled(true); mainGame->btnJoinCancel->setEnabled(true);
...@@ -309,9 +303,9 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -309,9 +303,9 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_OPTION_0: case BUTTON_OPTION_0:
case BUTTON_OPTION_1: case BUTTON_OPTION_1:
case BUTTON_OPTION_2: case BUTTON_OPTION_2:
case BUTTON_OPTION_3: case BUTTON_OPTION_3:
case BUTTON_OPTION_4: { case BUTTON_OPTION_4: {
mainGame->soundManager->PlaySoundEffect(SoundManager::SFX::BUTTON); mainGame->soundManager->PlaySoundEffect(SoundManager::SFX::BUTTON);
int step = mainGame->scrOption->isVisible() ? mainGame->scrOption->getPos() : 0; int step = mainGame->scrOption->isVisible() ? mainGame->scrOption->getPos() : 0;
...@@ -1465,8 +1459,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1465,8 +1459,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->chain_when_avail = false; mainGame->chain_when_avail = false;
UpdateChainButtons(); UpdateChainButtons();
} }
if(mainGame->wSurrender->isVisible()) mainGame->HideElement(mainGame->wSurrender);
mainGame->HideElement(mainGame->wSurrender);
mainGame->wCmdMenu->setVisible(false); mainGame->wCmdMenu->setVisible(false);
if(mainGame->fadingList.size()) if(mainGame->fadingList.size())
break; break;
...@@ -1842,12 +1835,12 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -1842,12 +1835,12 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
mainGame->gameConf.quick_animation = mainGame->chkQuickAnimation->isChecked() ? 1 : 0; mainGame->gameConf.quick_animation = mainGame->chkQuickAnimation->isChecked() ? 1 : 0;
return true; return true;
break; break;
} }
case CHECKBOX_DRAW_SINGLE_CHAIN: { case CHECKBOX_DRAW_SINGLE_CHAIN: {
mainGame->gameConf.draw_single_chain = mainGame->chkDrawSingleChain->isChecked() ? 1 : 0; mainGame->gameConf.draw_single_chain = mainGame->chkDrawSingleChain->isChecked() ? 1 : 0;
return true; return true;
break; break;
} }
case CHECKBOX_PREFER_EXPANSION: { case CHECKBOX_PREFER_EXPANSION: {
mainGame->gameConf.prefer_expansion_script = mainGame->chkPreferExpansionScript->isChecked() ? 1 : 0; mainGame->gameConf.prefer_expansion_script = mainGame->chkPreferExpansionScript->isChecked() ? 1 : 0;
return true; return true;
......
...@@ -1717,7 +1717,17 @@ void Game::ClearTextures() { ...@@ -1717,7 +1717,17 @@ void Game::ClearTextures() {
} }
imageManager.ClearTexture(); imageManager.ClearTexture();
} }
void Game::CloseDuelWindow() { void Game::CloseGameButtons() {
btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false);
btnCancelOrFinish->setVisible(false);
btnSpectatorSwap->setVisible(false);
btnShuffle->setVisible(false);
wSurrender->setVisible(false);
}
void Game::CloseGameWindow() {
CloseGameButtons();
for(auto wit = fadingList.begin(); wit != fadingList.end(); ++wit) { for(auto wit = fadingList.begin(); wit != fadingList.end(); ++wit) {
if(wit->isFadein) if(wit->isFadein)
wit->autoFadeoutFrame = 1; wit->autoFadeoutFrame = 1;
...@@ -1727,34 +1737,32 @@ void Game::CloseDuelWindow() { ...@@ -1727,34 +1737,32 @@ void Game::CloseDuelWindow() {
wANCard->setVisible(false); wANCard->setVisible(false);
wANNumber->setVisible(false); wANNumber->setVisible(false);
wANRace->setVisible(false); wANRace->setVisible(false);
wCardImg->setVisible(false);
wCardSelect->setVisible(false); wCardSelect->setVisible(false);
wCardDisplay->setVisible(false); wCardDisplay->setVisible(false);
wCmdMenu->setVisible(false); wCmdMenu->setVisible(false);
wFTSelect->setVisible(false); wFTSelect->setVisible(false);
wHand->setVisible(false); wHand->setVisible(false);
wInfos->setVisible(false);
wMessage->setVisible(false); wMessage->setVisible(false);
wOptions->setVisible(false); wOptions->setVisible(false);
wPhase->setVisible(false); wPhase->setVisible(false);
wPosSelect->setVisible(false); wPosSelect->setVisible(false);
wQuery->setVisible(false); wQuery->setVisible(false);
wSurrender->setVisible(false);
wReplayControl->setVisible(false); wReplayControl->setVisible(false);
wReplaySave->setVisible(false); wReplaySave->setVisible(false);
stHintMsg->setVisible(false); stHintMsg->setVisible(false);
stTip->setVisible(false);
}
void Game::CloseDuelWindow() {
CloseGameWindow();
wCardImg->setVisible(false);
wInfos->setVisible(false);
wChat->setVisible(false);
btnSideOK->setVisible(false); btnSideOK->setVisible(false);
btnSideShuffle->setVisible(false); btnSideShuffle->setVisible(false);
btnSideSort->setVisible(false); btnSideSort->setVisible(false);
btnSideReload->setVisible(false); btnSideReload->setVisible(false);
btnLeaveGame->setVisible(false); btnLeaveGame->setVisible(false);
btnSpectatorSwap->setVisible(false); btnSpectatorSwap->setVisible(false);
btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false);
btnCancelOrFinish->setVisible(false);
btnShuffle->setVisible(false);
wChat->setVisible(false);
lstLog->clear(); lstLog->clear();
logParam.clear(); logParam.clear();
lstHostList->clear(); lstHostList->clear();
......
...@@ -166,6 +166,8 @@ public: ...@@ -166,6 +166,8 @@ public:
void ErrorLog(const char* msgbuf); void ErrorLog(const char* msgbuf);
void initUtils(); void initUtils();
void ClearTextures(); void ClearTextures();
void CloseGameButtons();
void CloseGameWindow();
void CloseDuelWindow(); void CloseDuelWindow();
int LocalPlayer(int player); int LocalPlayer(int player);
......
...@@ -230,8 +230,7 @@ void ReplayMode::EndDuel() { ...@@ -230,8 +230,7 @@ void ReplayMode::EndDuel() {
mainGame->actionSignal.Reset(); mainGame->actionSignal.Reset();
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->stMessage->setText(dataManager.GetSysString(1501)); mainGame->stMessage->setText(dataManager.GetSysString(1501));
if(mainGame->wCardSelect->isVisible()) mainGame->HideElement(mainGame->wCardSelect);
mainGame->HideElement(mainGame->wCardSelect);
mainGame->PopupElement(mainGame->wMessage); mainGame->PopupElement(mainGame->wMessage);
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
mainGame->actionSignal.Wait(); mainGame->actionSignal.Wait();
......
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