Commit b35329ad authored by salix5's avatar salix5

ShowSelectCard(), crlf in game.cpp

1. Now the face-up/face-down position of cards in deck is shown by text
color.
2. Effects in POSITION_HINT will not display the location of cards.
parent 4cc3b3bf
...@@ -16,7 +16,7 @@ A script engine for "yu-gi-oh!" and sample gui ...@@ -16,7 +16,7 @@ A script engine for "yu-gi-oh!" and sample gui
* White = your card, Grey = your opponent's card * White = your card, Grey = your opponent's card
####Text: ####Text:
Cards in extra deck or removed: Cards in deck, extra deck and banished zone:
* Black = face-up, Blue = face-down * Black = face-up, Blue = face-down
Xyz materials: Xyz materials:
......
...@@ -19,7 +19,6 @@ ClientCard::ClientCard() { ...@@ -19,7 +19,6 @@ ClientCard::ClientCard() {
is_highlighting = false; is_highlighting = false;
is_disabled = false; is_disabled = false;
is_reversed = false; is_reversed = false;
is_conti = false;
cmdFlag = 0; cmdFlag = 0;
code = 0; code = 0;
chain_code = 0; chain_code = 0;
......
...@@ -63,7 +63,6 @@ public: ...@@ -63,7 +63,6 @@ public:
bool is_showtarget; bool is_showtarget;
bool is_highlighting; bool is_highlighting;
bool is_reversed; bool is_reversed;
bool is_conti;
u32 code; u32 code;
u32 chain_code; u32 chain_code;
u32 alias; u32 alias;
......
...@@ -23,6 +23,7 @@ ClientField::ClientField() { ...@@ -23,6 +23,7 @@ ClientField::ClientField() {
pzone_act[1] = false; pzone_act[1] = false;
conti_act = false; conti_act = false;
deck_reversed = false; deck_reversed = false;
conti_selecting = false;
for(int p = 0; p < 2; ++p) { for(int p = 0; p < 2; ++p) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
mzone[p].push_back(0); mzone[p].push_back(0);
...@@ -354,7 +355,6 @@ void ClientField::ClearChainSelect() { ...@@ -354,7 +355,6 @@ void ClientField::ClearChainSelect() {
(*cit)->chain_code = 0; (*cit)->chain_code = 0;
(*cit)->is_selectable = false; (*cit)->is_selectable = false;
(*cit)->is_selected = false; (*cit)->is_selected = false;
(*cit)->is_conti = false;
} }
conti_cards.clear(); conti_cards.clear();
grave_act = false; grave_act = false;
...@@ -375,9 +375,10 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -375,9 +375,10 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
} }
for(size_t i = 0; i < ct; ++i) { for(size_t i = 0; i < ct; ++i) {
mainGame->stCardPos[i]->enableOverrideColor(false); mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i]->code) if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else if(chain) else if(conti_selecting)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
...@@ -385,8 +386,9 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -385,8 +386,9 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
mainGame->btnCardSelect[i]->setPressed(false); mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true); mainGame->btnCardSelect[i]->setVisible(true);
if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) { if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) {
// text
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
if(chain && selectable_cards[i]->is_conti && !selectable_cards[i]->code) if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string); myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i]->location == LOCATION_OVERLAY) else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
...@@ -396,13 +398,16 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -396,13 +398,16 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence), myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1); selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i]->location == LOCATION_OVERLAY) { // color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
else if(selectable_cards[i]->location == LOCATION_OVERLAY) {
if(selectable_cards[i]->owner != selectable_cards[i]->overlayTarget->controler) if(selectable_cards[i]->owner != selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->overlayTarget->controler) if(selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0); mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) { } else if(selectable_cards[i]->location == LOCATION_DECK || selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) {
if(selectable_cards[i]->position & POS_FACEDOWN) if(selectable_cards[i]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->controler) if(selectable_cards[i]->controler)
......
...@@ -77,6 +77,7 @@ public: ...@@ -77,6 +77,7 @@ public:
ChainInfo current_chain; ChainInfo current_chain;
bool last_chain; bool last_chain;
bool deck_reversed; bool deck_reversed;
bool conti_selecting;
ClientField(); ClientField();
void Clear(); void Clear();
......
...@@ -844,6 +844,7 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) { ...@@ -844,6 +844,7 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) {
if(win == wCardSelect) { if(win == wCardSelect) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
btnCardSelect[i]->setDrawImage(false); btnCardSelect[i]->setDrawImage(false);
dField.conti_selecting = false;
} }
if(win == wCardDisplay) { if(win == wCardDisplay) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
......
...@@ -1217,13 +1217,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1217,13 +1217,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.activatable_descs.push_back(std::make_pair(desc, flag)); mainGame->dField.activatable_descs.push_back(std::make_pair(desc, flag));
pcard->is_selected = false; pcard->is_selected = false;
if(flag == EDESC_OPERATION) { if(flag == EDESC_OPERATION) {
pcard->is_conti = true;
pcard->chain_code = code; pcard->chain_code = code;
mainGame->dField.conti_cards.push_back(pcard); mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.conti_act = true; mainGame->dField.conti_act = true;
conti_exist = true; conti_exist = true;
} else { } else {
pcard->chain_code = code;
pcard->is_selectable = true; pcard->is_selectable = true;
if(flag == EDESC_RESET) if(flag == EDESC_RESET)
pcard->cmdFlag |= COMMAND_RESET; pcard->cmdFlag |= COMMAND_RESET;
......
...@@ -460,7 +460,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -460,7 +460,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
} else { } else {
selectable_cards.clear(); selectable_cards.clear();
bool conti_exist = false; conti_selecting = false;
switch(command_location) { switch(command_location) {
case LOCATION_DECK: { case LOCATION_DECK: {
for(size_t i = 0; i < deck[command_controler].size(); ++i) for(size_t i = 0; i < deck[command_controler].size(); ++i)
...@@ -488,11 +488,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -488,11 +488,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
case POSITION_HINT: { case POSITION_HINT: {
selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end()); selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end());
conti_exist = true; conti_selecting = true;
break; break;
} }
} }
if(!conti_exist) { if(!conti_selecting) {
mainGame->wCardSelect->setText(dataManager.GetSysString(566)); mainGame->wCardSelect->setText(dataManager.GetSysString(566));
list_command = COMMAND_ACTIVATE; list_command = COMMAND_ACTIVATE;
} else { } else {
...@@ -910,11 +910,15 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -910,11 +910,15 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for(int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
// draw selectable_cards[i + pos] in btnCardSelect[i] // draw selectable_cards[i + pos] in btnCardSelect[i]
mainGame->stCardPos[i]->enableOverrideColor(false); mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i + pos]->code) if(selectable_cards[i + pos]->code)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code)); mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code));
else if(conti_selecting)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->chain_code));
else else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225)); mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
// text
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
if(sort_list.size()) { if(sort_list.size()) {
if(sort_list[pos + i] > 0) if(sort_list[pos + i] > 0)
...@@ -922,7 +926,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -922,7 +926,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
else else
myswprintf(formatBuffer, L""); myswprintf(formatBuffer, L"");
} else { } else {
if(selectable_cards[i + pos]->is_conti && !selectable_cards[i + pos]->code) if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string); myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
...@@ -933,17 +937,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -933,17 +937,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selectable_cards[i + pos]->sequence + 1); selectable_cards[i + pos]->sequence + 1);
} }
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
// color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) { if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) {
if(selectable_cards[i + pos]->owner != selectable_cards[i + pos]->overlayTarget->controler) if(selectable_cards[i + pos]->owner != selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
// BackgroundColor: controller of the xyz monster
if(selectable_cards[i + pos]->is_selected) if(selectable_cards[i + pos]->is_selected)
mainGame->stCardPos[i]->setBackgroundColor(0xffffff00); mainGame->stCardPos[i]->setBackgroundColor(0xffffff00);
else if(selectable_cards[i + pos]->overlayTarget->controler) else if(selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0); mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else else
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) { } else if(selectable_cards[i + pos]->location == LOCATION_DECK || selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) {
if(selectable_cards[i + pos]->position & POS_FACEDOWN) if(selectable_cards[i + pos]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i + pos]->is_selected) if(selectable_cards[i + pos]->is_selected)
......
Subproject commit 7f4e96536a73d8d06b1cc6dbfda206d5d65c4aff Subproject commit 6f0ed26cbb46029fc7ea42145440317df49c43ff
Subproject commit 95a86666fa3137bf7b2342e8bb5216de4e17014b Subproject commit 99af5eaa34236235429924d9a9690f32f5c464e5
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