Commit ab550a4b authored by VanillaSalt's avatar VanillaSalt

fix

parent 673e09d5
...@@ -406,6 +406,60 @@ void ClientField::ShowSelectCard(bool buttonok) { ...@@ -406,6 +406,60 @@ void ClientField::ShowSelectCard(bool buttonok) {
else mainGame->btnSelectOK->setVisible(false); else mainGame->btnSelectOK->setVisible(false);
mainGame->PopupElement(mainGame->wCardSelect); mainGame->PopupElement(mainGame->wCardSelect);
} }
void ClientField::ShowChainCard() {
if(selectable_cards.size() <= 5) {
int startpos = 30 + 125 * (5 - selectable_cards.size()) / 2;
for(size_t i = 0; i < selectable_cards.size(); ++i) {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer);
mainGame->stCardPos[i]->setVisible(true);;
if(selectable_cards[i]->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
mainGame->stCardPos[i]->setRelativePosition(rect<s32>(startpos + 10 + i * 125, 30, startpos + 109 + i * 125, 50));
}
for(int i = selectable_cards.size(); i < 5; ++i) {
mainGame->btnCardSelect[i]->setVisible(false);
mainGame->stCardPos[i]->setVisible(false);
}
mainGame->scrCardList->setPos(0);
mainGame->scrCardList->setVisible(false);
} else {
for(int i = 0; i < 5; ++i) {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer);
mainGame->stCardPos[i]->setVisible(true);
if(selectable_cards[i]->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
mainGame->stCardPos[i]->setRelativePosition(rect<s32>(40 + i * 125, 30, 139 + i * 125, 50));
}
mainGame->scrCardList->setVisible(true);
mainGame->scrCardList->setMin(0);
mainGame->scrCardList->setMax((selectable_cards.size() - 5) * 10 + 9);
mainGame->scrCardList->setPos(0);
}
if(!chain_forced)
mainGame->btnSelectOK->setVisible(true);
else mainGame->btnSelectOK->setVisible(false);
mainGame->PopupElement(mainGame->wCardSelect);
}
void ClientField::ReplaySwap() { void ClientField::ReplaySwap() {
std::swap(deck[0], deck[1]); std::swap(deck[0], deck[1]);
std::swap(hand[0], hand[1]); std::swap(hand[0], hand[1]);
......
...@@ -82,6 +82,7 @@ public: ...@@ -82,6 +82,7 @@ public:
void ClearSelect(); void ClearSelect();
void ClearChainSelect(); void ClearChainSelect();
void ShowSelectCard(bool buttonok = false); void ShowSelectCard(bool buttonok = false);
void ShowChainCard();
void ReplaySwap(); void ReplaySwap();
void RefreshAllCards(); void RefreshAllCards();
......
...@@ -1152,6 +1152,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1152,6 +1152,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
/*int hint1 = */BufferIO::ReadInt32(pbuf); /*int hint1 = */BufferIO::ReadInt32(pbuf);
int c, l, s, ss, desc; int c, l, s, ss, desc;
ClientCard* pcard; ClientCard* pcard;
bool panelmode = false;
mainGame->dField.chain_forced = (forced != 0); mainGame->dField.chain_forced = (forced != 0);
mainGame->dField.activatable_cards.clear(); mainGame->dField.activatable_cards.clear();
mainGame->dField.activatable_descs.clear(); mainGame->dField.activatable_descs.clear();
...@@ -1168,10 +1169,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1168,10 +1169,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->is_selectable = true; pcard->is_selectable = true;
pcard->is_selected = false; pcard->is_selected = false;
pcard->cmdFlag |= COMMAND_ACTIVATE; pcard->cmdFlag |= COMMAND_ACTIVATE;
if (pcard->location == LOCATION_GRAVE) if(l == LOCATION_GRAVE)
mainGame->dField.grave_act = true; mainGame->dField.grave_act = true;
if (pcard->location == LOCATION_REMOVED) if(l == LOCATION_REMOVED)
mainGame->dField.remove_act = true; mainGame->dField.remove_act = true;
if(l & 0xc1)
panelmode = true;
} }
if(!forced && (mainGame->ignore_chain || ((count == 0 || specount == 0) && !mainGame->always_chain))) { if(!forced && (mainGame->ignore_chain || ((count == 0 || specount == 0) && !mainGame->always_chain))) {
SetResponseI(-1); SetResponseI(-1);
...@@ -1191,13 +1194,22 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1191,13 +1194,22 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->stHintMsg->setText(dataManager.GetSysString(550)); mainGame->stHintMsg->setText(dataManager.GetSysString(550));
mainGame->stHintMsg->setVisible(true); mainGame->stHintMsg->setVisible(true);
if(!forced) { if(panelmode) {
if(count == 0) mainGame->dField.list_command = COMMAND_ACTIVATE;
myswprintf(textBuffer, L"%ls\n%ls", dataManager.GetSysString(201), dataManager.GetSysString(202)); mainGame->dField.selectable_cards = mainGame->dField.activatable_cards;
else std::sort(mainGame->dField.selectable_cards.begin(), mainGame->dField.selectable_cards.end());
myswprintf(textBuffer, L"%ls\n%ls", event_string, dataManager.GetSysString(203)); auto eit = std::unique(mainGame->dField.selectable_cards.begin(), mainGame->dField.selectable_cards.end());
mainGame->SetStaticText(mainGame->stQMessage, 310, mainGame->textFont, (wchar_t*)textBuffer); mainGame->dField.selectable_cards.erase(eit, mainGame->dField.selectable_cards.end());
mainGame->PopupElement(mainGame->wQuery); mainGame->dField.ShowChainCard();
} else {
if(!forced) {
if(count == 0)
myswprintf(textBuffer, L"%ls\n%ls", dataManager.GetSysString(201), dataManager.GetSysString(202));
else
myswprintf(textBuffer, L"%ls\n%ls", event_string, dataManager.GetSysString(203));
mainGame->SetStaticText(mainGame->stQMessage, 310, mainGame->textFont, (wchar_t*)textBuffer);
mainGame->PopupElement(mainGame->wQuery);
}
} }
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
return false; return false;
......
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