Commit 97b1e996 authored by VanillaSalt's avatar VanillaSalt

extra monster zone

parent aed821db
...@@ -28,11 +28,10 @@ ClientField::ClientField() { ...@@ -28,11 +28,10 @@ ClientField::ClientField() {
deck_reversed = false; deck_reversed = false;
conti_selecting = 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) mzone[p].resize(7, 0);
mzone[p].push_back(0); szone[p].resize(8, 0);
for(int i = 0; i < 8; ++i)
szone[p].push_back(0);
} }
usable_exmzone = 0;
} }
void ClientField::Clear() { void ClientField::Clear() {
for(int i = 0; i < 2; ++i) { for(int i = 0; i < 2; ++i) {
...@@ -67,6 +66,7 @@ void ClientField::Clear() { ...@@ -67,6 +66,7 @@ void ClientField::Clear() {
overlay_cards.clear(); overlay_cards.clear();
extra_p_count[0] = 0; extra_p_count[0] = 0;
extra_p_count[1] = 0; extra_p_count[1] = 0;
usable_exmzone = 0;
chains.clear(); chains.clear();
activatable_cards.clear(); activatable_cards.clear();
summonable_cards.clear(); summonable_cards.clear();
...@@ -183,6 +183,8 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -183,6 +183,8 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
} }
case LOCATION_MZONE: { case LOCATION_MZONE: {
mzone[controler][sequence] = pcard; mzone[controler][sequence] = pcard;
if (!usable_exmzone && sequence >= 5)
usable_exmzone = sequence;
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
......
...@@ -41,6 +41,7 @@ public: ...@@ -41,6 +41,7 @@ public:
std::vector<int> select_options; std::vector<int> select_options;
std::vector<ChainInfo> chains; std::vector<ChainInfo> chains;
int extra_p_count[2]; int extra_p_count[2];
int usable_exmzone;
size_t selected_option; size_t selected_option;
ClientCard* attacker; ClientCard* attacker;
......
...@@ -106,7 +106,7 @@ void Game::DrawBackGround() { ...@@ -106,7 +106,7 @@ void Game::DrawBackGround() {
if(dInfo.curMsg == MSG_SELECT_PLACE || dInfo.curMsg == MSG_SELECT_DISFIELD) { if(dInfo.curMsg == MSG_SELECT_PLACE || dInfo.curMsg == MSG_SELECT_DISFIELD) {
float cv[4] = {0.0f, 0.0f, 1.0f, 1.0f}; float cv[4] = {0.0f, 0.0f, 1.0f, 1.0f};
unsigned int filter = 0x1; unsigned int filter = 0x1;
for (int i = 0; i < 5; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
if (dField.selectable_field & filter) if (dField.selectable_field & filter)
DrawSelectionLine(matManager.vFieldMzone[0][i], !(dField.selected_field & filter), 2, cv); DrawSelectionLine(matManager.vFieldMzone[0][i], !(dField.selected_field & filter), 2, cv);
} }
...@@ -116,7 +116,7 @@ void Game::DrawBackGround() { ...@@ -116,7 +116,7 @@ void Game::DrawBackGround() {
DrawSelectionLine(matManager.vFieldSzone[0][i], !(dField.selected_field & filter), 2, cv); DrawSelectionLine(matManager.vFieldSzone[0][i], !(dField.selected_field & filter), 2, cv);
} }
filter = 0x10000; filter = 0x10000;
for (int i = 0; i < 5; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
if (dField.selectable_field & filter) if (dField.selectable_field & filter)
DrawSelectionLine(matManager.vFieldMzone[1][i], !(dField.selected_field & filter), 2, cv); DrawSelectionLine(matManager.vFieldMzone[1][i], !(dField.selected_field & filter), 2, cv);
} }
...@@ -190,22 +190,22 @@ void Game::DrawBackGround() { ...@@ -190,22 +190,22 @@ void Game::DrawBackGround() {
} }
void Game::DrawCards() { void Game::DrawCards() {
for(int p = 0; p < 2; ++p) { for(int p = 0; p < 2; ++p) {
for(int i = 0; i < 5; ++i) for(auto it = dField.mzone[p].begin(); it != dField.mzone[p].end(); ++it)
if(dField.mzone[p][i]) if(*it)
DrawCard(dField.mzone[p][i]); DrawCard(*it);
for(int i = 0; i < 8; ++i) for(auto it = dField.szone[p].begin(); it != dField.szone[p].end(); ++it)
if(dField.szone[p][i]) if(*it)
DrawCard(dField.szone[p][i]); DrawCard(*it);
for(size_t i = 0; i < dField.deck[p].size(); ++i) for(auto it = dField.deck[p].begin(); it != dField.deck[p].end(); ++it)
DrawCard(dField.deck[p][i]); DrawCard(*it);
for(size_t i = 0; i < dField.hand[p].size(); ++i) for(auto it = dField.hand[p].begin(); it != dField.hand[p].end(); ++it)
DrawCard(dField.hand[p][i]); DrawCard(*it);
for(size_t i = 0; i < dField.grave[p].size(); ++i) for(auto it = dField.grave[p].begin(); it != dField.grave[p].end(); ++it)
DrawCard(dField.grave[p][i]); DrawCard(*it);
for(size_t i = 0; i < dField.remove[p].size(); ++i) for(auto it = dField.remove[p].begin(); it != dField.remove[p].end(); ++it)
DrawCard(dField.remove[p][i]); DrawCard(*it);
for(size_t i = 0; i < dField.extra[p].size(); ++i) for(auto it = dField.extra[p].begin(); it != dField.extra[p].end(); ++it)
DrawCard(dField.extra[p][i]); DrawCard(*it);
} }
for(auto cit = dField.overlay_cards.begin(); cit != dField.overlay_cards.end(); ++cit) for(auto cit = dField.overlay_cards.begin(); cit != dField.overlay_cards.end(); ++cit)
DrawCard(*cit); DrawCard(*cit);
...@@ -407,42 +407,26 @@ void Game::DrawMisc() { ...@@ -407,42 +407,26 @@ void Game::DrawMisc() {
ClientCard* pcard; ClientCard* pcard;
for(int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
pcard = dField.mzone[0][i]; pcard = dField.mzone[0][i];
if(pcard && pcard->code != 0) { if(pcard && pcard->code != 0)
int m = 493 + i * 85; DrawStatus(pcard, 493 + i * 85, 416, 473 + i * 80, 356);
adFont->draw(L"/", recti(m - 4, 416, m + 4, 436), 0xff000000, true, false, 0);
adFont->draw(L"/", recti(m - 3, 417, m + 5, 437), 0xffffffff, true, false, 0);
int w = adFont->getDimension(pcard->atkstring).Width;
adFont->draw(pcard->atkstring, recti(m - 5 - w, 416, m - 5, 436), 0xff000000, false, false, 0);
adFont->draw(pcard->atkstring, recti(m - 4 - w, 417, m - 4, 437),
pcard->attack > pcard->base_attack ? 0xffffff00 : pcard->attack < pcard->base_attack ? 0xffff2090 : 0xffffffff , false, false, 0);
w = adFont->getDimension(pcard->defstring).Width;
adFont->draw(pcard->defstring, recti(m + 4, 416, m + 4 + w, 436), 0xff000000, false, false, 0);
adFont->draw(pcard->defstring, recti(m + 5, 417, m + 5 + w, 437),
pcard->defense > pcard->base_defense ? 0xffffff00 : pcard->defense < pcard->base_defense ? 0xffff2090 : 0xffffffff , false, false, 0);
adFont->draw(pcard->lvstring, recti(473 + i * 80, 356, 475 + i * 80, 366), 0xff000000, false, false, 0);
adFont->draw(pcard->lvstring, recti(474 + i * 80, 357, 476 + i * 80, 367),
(pcard->type & TYPE_XYZ) ? 0xffff80ff : (pcard->type & TYPE_TUNER) ? 0xffffff00 : 0xffffffff, false, false, 0);
}
} }
pcard = dField.mzone[0][5];
if(pcard && pcard->code != 0)
DrawStatus(pcard, 589, 338, 563, 291);
pcard = dField.mzone[0][6];
if(pcard && pcard->code != 0)
DrawStatus(pcard, 743, 338, 712, 291);
for(int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
pcard = dField.mzone[1][i]; pcard = dField.mzone[1][i];
if(pcard && (pcard->position & POS_FACEUP)) { if(pcard && (pcard->position & POS_FACEUP))
int m = 803 - i * 68; DrawStatus(pcard, 803 - i * 68, 235, 779 - i * 71, 272);
adFont->draw(L"/", recti(m - 4, 235, m + 4, 255), 0xff000000, true, false, 0);
adFont->draw(L"/", recti(m - 3, 236, m + 5, 256), 0xffffffff, true, false, 0);
int w = adFont->getDimension(pcard->atkstring).Width;
adFont->draw(pcard->atkstring, recti(m - 5 - w, 235, m - 5, 255), 0xff000000, false, false, 0);
adFont->draw(pcard->atkstring, recti(m - 4 - w, 236, m - 4, 256),
pcard->attack > pcard->base_attack ? 0xffffff00 : pcard->attack < pcard->base_attack ? 0xffff2090 : 0xffffffff , false, false, 0);
w = adFont->getDimension(pcard->defstring).Width;
adFont->draw(pcard->defstring, recti(m + 4, 235, m + 4 + w, 255), 0xff000000, false, false, 0);
adFont->draw(pcard->defstring, recti(m + 5, 236, m + 5 + w, 256),
pcard->defense > pcard->base_defense ? 0xffffff00 : pcard->defense < pcard->base_defense ? 0xffff2090 : 0xffffffff , false, false, 0);
adFont->draw(pcard->lvstring, recti(779 - i * 71, 272, 800 - i * 71, 292), 0xff000000, false, false, 0);
adFont->draw(pcard->lvstring, recti(780 - i * 71, 273, 800 - i * 71, 293),
(pcard->type & TYPE_XYZ) ? 0xffff80ff : (pcard->type & TYPE_TUNER) ? 0xffffff00 : 0xffffffff, false, false, 0);
}
} }
pcard = dField.mzone[1][5];
if(pcard && (pcard->position & POS_FACEUP))
DrawStatus(pcard, 743, 338, 712, 291);
pcard = dField.mzone[1][6];
if(pcard && (pcard->position & POS_FACEUP))
DrawStatus(pcard, 589, 338, 563, 291);
pcard = dField.szone[0][6]; pcard = dField.szone[0][6];
if(pcard) { if(pcard) {
adFont->draw(pcard->lscstring, recti(426, 394, 438, 414), 0xff000000, true, false, 0); adFont->draw(pcard->lscstring, recti(426, 394, 438, 414), 0xff000000, true, false, 0);
...@@ -502,6 +486,21 @@ void Game::DrawMisc() { ...@@ -502,6 +486,21 @@ void Game::DrawMisc() {
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), recti(300, 311, 445, 341), 0xffffff00, true, false, 0); numFont->draw(dataManager.GetNumString(dField.remove[1].size()), recti(300, 311, 445, 341), 0xffffff00, true, false, 0);
} }
} }
void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
adFont->draw(L"/", recti(x1 - 4, y1, x1 + 4, y1 + 20), 0xff000000, true, false, 0);
adFont->draw(L"/", recti(x1 - 3, y1 + 1, x1 + 5, y1 + 21), 0xffffffff, true, false, 0);
int w = adFont->getDimension(pcard->atkstring).Width;
adFont->draw(pcard->atkstring, recti(x1 - 5 - w, y1, x1 - 5, y1 + 20), 0xff000000, false, false, 0);
adFont->draw(pcard->atkstring, recti(x1 - 4 - w, y1 + 1, x1 - 4, y1 + 21),
pcard->attack > pcard->base_attack ? 0xffffff00 : pcard->attack < pcard->base_attack ? 0xffff2090 : 0xffffffff , false, false, 0);
w = adFont->getDimension(pcard->defstring).Width;
adFont->draw(pcard->defstring, recti(x1 + 4, y1, x1 + 4 + w, y1 + 20), 0xff000000, false, false, 0);
adFont->draw(pcard->defstring, recti(x1 + 5, y1 + 1, x1 + 5 + w, y1 + 21),
pcard->defense > pcard->base_defense ? 0xffffff00 : pcard->defense < pcard->base_defense ? 0xffff2090 : 0xffffffff , false, false, 0);
adFont->draw(pcard->lvstring, recti(x2, y2, x2 + 2, y2 + 20), 0xff000000, false, false, 0);
adFont->draw(pcard->lvstring, recti(x2 + 1, y2, x2 + 3, y2 + 21),
(pcard->type & TYPE_XYZ) ? 0xffff80ff : (pcard->type & TYPE_TUNER) ? 0xffffff00 : 0xffffffff, false, false, 0);
}
void Game::DrawGUI() { void Game::DrawGUI() {
if(imageLoading.size()) { if(imageLoading.size()) {
std::map<irr::gui::CGUIImageButton*, int>::iterator mit; std::map<irr::gui::CGUIImageButton*, int>::iterator mit;
......
...@@ -1296,40 +1296,42 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1296,40 +1296,42 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->stHintMsg->setVisible(true); mainGame->stHintMsg->setVisible(true);
if (mainGame->dInfo.curMsg == MSG_SELECT_PLACE && mainGame->chkAutoPos->isChecked()) { if (mainGame->dInfo.curMsg == MSG_SELECT_PLACE && mainGame->chkAutoPos->isChecked()) {
unsigned int filter; unsigned int filter;
if (mainGame->dField.selectable_field & 0x1f) { if (mainGame->dField.selectable_field & 0x7f) {
respbuf[0] = mainGame->dInfo.isFirst ? 0 : 1; respbuf[0] = mainGame->LocalPlayer(0);
respbuf[1] = 0x4; respbuf[1] = LOCATION_MZONE;
filter = mainGame->dField.selectable_field & 0x1f; filter = mainGame->dField.selectable_field & 0x7f;
} else if (mainGame->dField.selectable_field & 0x1f00) { } else if (mainGame->dField.selectable_field & 0x1f00) {
respbuf[0] = mainGame->dInfo.isFirst ? 0 : 1; respbuf[0] = mainGame->LocalPlayer(0);
respbuf[1] = 0x8; respbuf[1] = LOCATION_SZONE;
filter = (mainGame->dField.selectable_field >> 8) & 0x1f; filter = (mainGame->dField.selectable_field >> 8) & 0x1f;
} else if (mainGame->dField.selectable_field & 0xc000) { } else if (mainGame->dField.selectable_field & 0xc000) {
respbuf[0] = mainGame->dInfo.isFirst ? 0 : 1; respbuf[0] = mainGame->LocalPlayer(0);
respbuf[1] = 0x8; respbuf[1] = LOCATION_SZONE;
filter = (mainGame->dField.selectable_field >> 14) & 0x3; filter = (mainGame->dField.selectable_field >> 14) & 0x3;
pzone = 1; pzone = 1;
} else if (mainGame->dField.selectable_field & 0x1f0000) { } else if (mainGame->dField.selectable_field & 0x7f0000) {
respbuf[0] = mainGame->dInfo.isFirst ? 1 : 0; respbuf[0] = mainGame->LocalPlayer(1);
respbuf[1] = 0x4; respbuf[1] = LOCATION_MZONE;
filter = (mainGame->dField.selectable_field >> 16) & 0x1f; filter = (mainGame->dField.selectable_field >> 16) & 0x7f;
} else if (mainGame->dField.selectable_field & 0x1f000000) { } else if (mainGame->dField.selectable_field & 0x1f000000) {
respbuf[0] = mainGame->dInfo.isFirst ? 1 : 0; respbuf[0] = mainGame->LocalPlayer(1);
respbuf[1] = 0x8; respbuf[1] = LOCATION_SZONE;
filter = (mainGame->dField.selectable_field >> 24) & 0x1f; filter = (mainGame->dField.selectable_field >> 24) & 0x1f;
} else { } else {
respbuf[0] = mainGame->dInfo.isFirst ? 1 : 0; respbuf[0] = mainGame->LocalPlayer(1);
respbuf[1] = 0x8; respbuf[1] = LOCATION_SZONE;
filter = (mainGame->dField.selectable_field >> 30) & 0x3; filter = (mainGame->dField.selectable_field >> 30) & 0x3;
pzone = 1; pzone = 1;
} }
if(!pzone) { if(!pzone) {
if(mainGame->chkRandomPos->isChecked()) { if(mainGame->chkRandomPos->isChecked()) {
respbuf[2] = rnd.real() * 5; do {
while(!(filter & (1 << respbuf[2]))) respbuf[2] = rnd.real() * 7;
respbuf[2] = rnd.real() * 5; } while(!(filter & (1 << respbuf[2])));
} else { } else {
if (filter & 0x4) respbuf[2] = 2; if (filter & 0x40) respbuf[2] = 6;
else if (filter & 0x20) respbuf[2] = 5;
else if (filter & 0x4) respbuf[2] = 2;
else if (filter & 0x2) respbuf[2] = 1; else if (filter & 0x2) respbuf[2] = 1;
else if (filter & 0x8) respbuf[2] = 3; else if (filter & 0x8) respbuf[2] = 3;
else if (filter & 0x1) respbuf[2] = 0; else if (filter & 0x1) respbuf[2] = 0;
......
...@@ -1346,7 +1346,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1346,7 +1346,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
case MSG_SELECT_PLACE: case MSG_SELECT_PLACE:
case MSG_SELECT_DISFIELD: { case MSG_SELECT_DISFIELD: {
if (!(hovered_location & LOCATION_ONFIELD) || hovered_sequence == 5) if (!(hovered_location & LOCATION_ONFIELD))
break; break;
unsigned int flag = 1 << (hovered_sequence + (hovered_controler << 4) + ((hovered_location == LOCATION_MZONE) ? 0 : 8)); unsigned int flag = 1 << (hovered_sequence + (hovered_controler << 4) + ((hovered_location == LOCATION_MZONE) ? 0 : 8));
if (flag & selectable_field) { if (flag & selectable_field) {
...@@ -1360,10 +1360,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1360,10 +1360,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
unsigned char respbuf[80]; unsigned char respbuf[80];
int filter = 1; int filter = 1;
int p = 0; int p = 0;
for (int i = 0; i < 5; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
if (selected_field & filter) { if (selected_field & filter) {
respbuf[p] = mainGame->LocalPlayer(0); respbuf[p] = mainGame->LocalPlayer(0);
respbuf[p + 1] = 0x4; respbuf[p + 1] = LOCATION_MZONE;
respbuf[p + 2] = i; respbuf[p + 2] = i;
p += 3; p += 3;
} }
...@@ -1372,16 +1372,16 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1372,16 +1372,16 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (selected_field & filter) { if (selected_field & filter) {
respbuf[p] = mainGame->LocalPlayer(0); respbuf[p] = mainGame->LocalPlayer(0);
respbuf[p + 1] = 0x8; respbuf[p + 1] = LOCATION_SZONE;
respbuf[p + 2] = i; respbuf[p + 2] = i;
p += 3; p += 3;
} }
} }
filter = 0x10000; filter = 0x10000;
for (int i = 0; i < 5; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
if (selected_field & filter) { if (selected_field & filter) {
respbuf[p] = mainGame->LocalPlayer(1); respbuf[p] = mainGame->LocalPlayer(1);
respbuf[p + 1] = 0x4; respbuf[p + 1] = LOCATION_MZONE;
respbuf[p + 2] = i; respbuf[p + 2] = i;
p += 3; p += 3;
} }
...@@ -1390,7 +1390,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1390,7 +1390,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (selected_field & filter) { if (selected_field & filter) {
respbuf[p] = mainGame->LocalPlayer(1); respbuf[p] = mainGame->LocalPlayer(1);
respbuf[p + 1] = 0x8; respbuf[p + 1] = LOCATION_SZONE;
respbuf[p + 2] = i; respbuf[p + 2] = i;
p += 3; p += 3;
} }
...@@ -1916,49 +1916,49 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1916,49 +1916,49 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
switch(event.KeyInput.Key) { switch(event.KeyInput.Key) {
case irr::KEY_F1: case irr::KEY_F1:
loc_id = 1004; loc_id = 1004;
for(int32 i = (int32)grave[0].size() - 1; i >= 0 ; --i) for(auto it = grave[0].rbegin(); it != grave[0].rend(); ++it)
display_cards.push_back(grave[0][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F2: case irr::KEY_F2:
loc_id = 1005; loc_id = 1005;
for(int32 i = (int32)remove[0].size() - 1; i >= 0 ; --i) for(auto it = remove[0].rbegin(); it != remove[0].rend(); ++it)
display_cards.push_back(remove[0][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F3: case irr::KEY_F3:
loc_id = 1006; loc_id = 1006;
for(int32 i = (int32)extra[0].size() - 1; i >= 0 ; --i) for(auto it = extra[0].rbegin(); it != extra[0].rend(); ++it)
display_cards.push_back(extra[0][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F4: case irr::KEY_F4:
loc_id = 1007; loc_id = 1007;
for(int32 i = 0; i <= 4 ; ++i) { for(auto it = mzone[0].begin(); it != mzone[0].end(); ++it) {
if(mzone[0][i] && mzone[0][i]->overlayed.size()) { if(*it) {
for(int32 j = 0; j <= (int32)mzone[0][i]->overlayed.size() - 1 ; ++j) for(auto oit = (*it)->overlayed.begin(); oit != (*it)->overlayed.end(); ++oit)
display_cards.push_back(mzone[0][i]->overlayed[j]); display_cards.push_back(*oit);
} }
} }
break; break;
case irr::KEY_F5: case irr::KEY_F5:
loc_id = 1004; loc_id = 1004;
for(int32 i = (int32)grave[1].size() - 1; i >= 0 ; --i) for(auto it = grave[1].rbegin(); it != grave[1].rend(); ++it)
display_cards.push_back(grave[1][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F6: case irr::KEY_F6:
loc_id = 1005; loc_id = 1005;
for(int32 i = (int32)remove[1].size() - 1; i >= 0 ; --i) for(auto it = remove[1].rbegin(); it != remove[1].rend(); ++it)
display_cards.push_back(remove[1][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F7: case irr::KEY_F7:
loc_id = 1006; loc_id = 1006;
for(int32 i = (int32)extra[1].size() - 1; i >= 0 ; --i) for(auto it = extra[1].rbegin(); it != extra[1].rend(); ++it)
display_cards.push_back(extra[1][i]); display_cards.push_back(*it);
break; break;
case irr::KEY_F8: case irr::KEY_F8:
loc_id = 1007; loc_id = 1007;
for(int32 i = 0; i <= 4 ; ++i) { for(auto it = mzone[1].begin(); it != mzone[1].end(); ++it) {
if(mzone[1][i] && mzone[1][i]->overlayed.size()) { if(*it) {
for(int32 j = 0; j <= (int32)mzone[1][i]->overlayed.size() - 1 ; ++j) for(auto oit = (*it)->overlayed.begin(); oit != (*it)->overlayed.end(); ++oit)
display_cards.push_back(mzone[1][i]->overlayed[j]); display_cards.push_back(*oit);
} }
} }
break; break;
...@@ -2128,6 +2128,28 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2128,6 +2128,28 @@ void ClientField::GetHoverField(int x, int y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_MZONE; hovered_location = LOCATION_MZONE;
hovered_sequence = sequence; hovered_sequence = sequence;
} else if(boardy >= matManager.vFieldMzone[0][5][0].Pos.Y && boardy <= matManager.vFieldMzone[0][5][2].Pos.Y) {
if(sequence == 1) {
if(usable_exmzone != 6) {
hovered_controler = 0;
hovered_location = LOCATION_MZONE;
hovered_sequence = 5;
} else {
hovered_controler = 1;
hovered_location = LOCATION_MZONE;
hovered_sequence = 6;
}
} else if(sequence == 3) {
if(usable_exmzone != 5) {
hovered_controler = 0;
hovered_location = LOCATION_MZONE;
hovered_sequence = 6;
} else {
hovered_controler = 1;
hovered_location = LOCATION_MZONE;
hovered_sequence = 5;
}
}
} else if(boardy >= matManager.vFieldMzone[1][0][2].Pos.Y && boardy <= matManager.vFieldMzone[1][0][0].Pos.Y) { } else if(boardy >= matManager.vFieldMzone[1][0][2].Pos.Y && boardy <= matManager.vFieldMzone[1][0][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_MZONE; hovered_location = LOCATION_MZONE;
......
...@@ -91,6 +91,7 @@ public: ...@@ -91,6 +91,7 @@ public:
void DrawCards(); void DrawCards();
void DrawCard(ClientCard* pcard); void DrawCard(ClientCard* pcard);
void DrawMisc(); void DrawMisc();
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawGUI(); void DrawGUI();
void DrawSpec(); void DrawSpec();
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0); void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
......
...@@ -17,7 +17,7 @@ Materials::Materials() { ...@@ -17,7 +17,7 @@ Materials::Materials() {
SetS3DVertex(vCardOutliner, 0.37f, -0.54f, -0.375f, 0.54f, 0, 1, 0, 0, 1, 1); SetS3DVertex(vCardOutliner, 0.37f, -0.54f, -0.375f, 0.54f, 0, 1, 0, 0, 1, 1);
SetS3DVertex(vCardBack, 0.35f, -0.5f, -0.35f, 0.5f, 0, -1, 0, 0, 1, 1); SetS3DVertex(vCardBack, 0.35f, -0.5f, -0.35f, 0.5f, 0, -1, 0, 0, 1, 1);
SetS3DVertex(vSymbol, -0.35f, -0.35f, 0.35f, 0.35f, 0.01f, 1, 0, 0, 1, 1); SetS3DVertex(vSymbol, -0.35f, -0.35f, 0.35f, 0.35f, 0.01f, 1, 0, 0, 1, 1);
SetS3DVertex(vNegate, -0.25f, -0.28f, 0.25f, 0.22f, 0, 1, 0, 0, 1, 1); SetS3DVertex(vNegate, -0.25f, -0.28f, 0.25f, 0.22f, 0.01f, 1, 0, 0, 1, 1);
SetS3DVertex(vChainNum, -0.35f, -0.35f, 0.35f, 0.35f, 0, 1, 0, 0, 0.19375f, 0.2421875f); SetS3DVertex(vChainNum, -0.35f, -0.35f, 0.35f, 0.35f, 0, 1, 0, 0, 0.19375f, 0.2421875f);
SetS3DVertex(vActivate, -0.5f, -0.5f, 0.5f, 0.5f, 0, 1, 0, 0, 1, 1); SetS3DVertex(vActivate, -0.5f, -0.5f, 0.5f, 0.5f, 0, 1, 0, 0, 1, 1);
SetS3DVertex(vField, -1.0f, -4.0f, 9.0f, 4.0f, 0, 1, 0, 0, 1, 1); SetS3DVertex(vField, -1.0f, -4.0f, 9.0f, 4.0f, 0, 1, 0, 0, 1, 1);
...@@ -188,6 +188,8 @@ Materials::Materials() { ...@@ -188,6 +188,8 @@ Materials::Materials() {
SetS3DVertex(vFieldRemove[0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0);
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
SetS3DVertex(vFieldMzone[0][i], 1.2f + i * 1.1f, 0.8f, 2.3f + i * 1.1f, 2.0f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldMzone[0][i], 1.2f + i * 1.1f, 0.8f, 2.3f + i * 1.1f, 2.0f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldMzone[0][5], 2.3f, -0.6f, 3.4f, 0.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldMzone[0][6], 4.5f, -0.6f, 5.6f, 0.6f, 0, 1, 0, 0, 0, 0);
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
SetS3DVertex(vFieldSzone[0][i], 1.2f + i * 1.1f, 2.0f, 2.3f + i * 1.1f, 3.2f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][i], 1.2f + i * 1.1f, 2.0f, 2.3f + i * 1.1f, 3.2f, 0, 1, 0, 0, 0, 0);
//field //field
...@@ -203,6 +205,8 @@ Materials::Materials() { ...@@ -203,6 +205,8 @@ Materials::Materials() {
SetS3DVertex(vFieldRemove[1], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[1], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0);
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
SetS3DVertex(vFieldMzone[1][i], 6.7f - i * 1.1f, -0.8f, 5.6f - i * 1.1f, -2.0f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldMzone[1][i], 6.7f - i * 1.1f, -0.8f, 5.6f - i * 1.1f, -2.0f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldMzone[1][5], 5.6f, 0.6f, 4.5f, -0.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldMzone[1][6], 3.4f, 0.6f, 2.3f, -0.6f, 0, 1, 0, 0, 0, 0);
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
SetS3DVertex(vFieldSzone[1][i], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][i], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0);
//field //field
......
...@@ -24,7 +24,7 @@ public: ...@@ -24,7 +24,7 @@ public:
S3DVertex vFieldGrave[2][4]; S3DVertex vFieldGrave[2][4];
S3DVertex vFieldExtra[2][4]; S3DVertex vFieldExtra[2][4];
S3DVertex vFieldRemove[2][4]; S3DVertex vFieldRemove[2][4];
S3DVertex vFieldMzone[2][5][4]; S3DVertex vFieldMzone[2][7][4];
S3DVertex vFieldSzone[2][8][4]; S3DVertex vFieldSzone[2][8][4];
irr::core::vector3df vFieldContiAct[4]; irr::core::vector3df vFieldContiAct[4];
S3DVertex vArrow[40]; S3DVertex vArrow[40];
......
...@@ -263,7 +263,7 @@ ...@@ -263,7 +263,7 @@
!system 1233 每回合抽卡: !system 1233 每回合抽卡:
!system 1234 主机名称: !system 1234 主机名称:
!system 1235 主机密码: !system 1235 主机密码:
!system 1236 旧规则(先攻抽卡、起动效果优先权等) !system 1236 规则:
!system 1237 每回合时间: !system 1237 每回合时间:
!system 1240 OCG !system 1240 OCG
!system 1241 TCG !system 1241 TCG
...@@ -278,6 +278,10 @@ ...@@ -278,6 +278,10 @@
!system 1253 当前观战人数: !system 1253 当前观战人数:
!system 1254 卡组选择: !system 1254 卡组选择:
!system 1255 准备完毕! !system 1255 准备完毕!
!system 1260 大师规则
!system 1261 大师规则2
!system 1262 大师规则3
!system 1263 大师规则4
!system 1270 卡片信息 !system 1270 卡片信息
!system 1271 消息记录 !system 1271 消息记录
!system 1272 清除记录 !system 1272 清除记录
......
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