Commit a34a850a authored by DailyShana's avatar DailyShana

continuous act hint

on the left of Field Zone
parent 4ee8fb1d
...@@ -20,6 +20,7 @@ ClientField::ClientField() { ...@@ -20,6 +20,7 @@ ClientField::ClientField() {
extra_act = false; extra_act = false;
pzone_act[0] = false; pzone_act[0] = false;
pzone_act[1] = false; pzone_act[1] = false;
conti_act = false;
deck_reversed = false; deck_reversed = 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)
...@@ -76,6 +77,7 @@ void ClientField::Clear() { ...@@ -76,6 +77,7 @@ void ClientField::Clear() {
extra_act = false; extra_act = false;
pzone_act[0] = false; pzone_act[0] = false;
pzone_act[1] = false; pzone_act[1] = false;
conti_act = false;
deck_reversed = false; deck_reversed = false;
} }
void ClientField::Initial(int player, int deckc, int extrac) { void ClientField::Initial(int player, int deckc, int extrac) {
...@@ -335,6 +337,7 @@ void ClientField::ClearCommandFlag() { ...@@ -335,6 +337,7 @@ void ClientField::ClearCommandFlag() {
remove_act = false; remove_act = false;
pzone_act[0] = false; pzone_act[0] = false;
pzone_act[1] = false; pzone_act[1] = false;
conti_act = false;
} }
void ClientField::ClearSelect() { void ClientField::ClearSelect() {
std::vector<ClientCard*>::iterator cit; std::vector<ClientCard*>::iterator cit;
...@@ -356,6 +359,7 @@ void ClientField::ClearChainSelect() { ...@@ -356,6 +359,7 @@ void ClientField::ClearChainSelect() {
grave_act = false; grave_act = false;
remove_act = false; remove_act = false;
extra_act = false; extra_act = false;
conti_act = false;
} }
// needs to be synchronized with EGET_SCROLL_BAR_CHANGED // needs to be synchronized with EGET_SCROLL_BAR_CHANGED
void ClientField::ShowSelectCard(bool buttonok, bool chain) { void ClientField::ShowSelectCard(bool buttonok, bool chain) {
......
...@@ -71,6 +71,7 @@ public: ...@@ -71,6 +71,7 @@ public:
bool deck_act; bool deck_act;
bool extra_act; bool extra_act;
bool pzone_act[2]; bool pzone_act[2];
bool conti_act;
bool chain_forced; bool chain_forced;
ChainInfo current_chain; ChainInfo current_chain;
bool last_chain; bool last_chain;
......
...@@ -321,6 +321,12 @@ void Game::DrawMisc() { ...@@ -321,6 +321,12 @@ void Game::DrawMisc() {
driver->setTransform(irr::video::ETS_WORLD, im); driver->setTransform(irr::video::ETS_WORLD, im);
driver->drawVertexPrimitiveList(matManager.vActivate, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vActivate, 4, matManager.iRectangle, 2);
} }
if(dField.conti_act) {
im.setTranslation(vector3df(matManager.vFields[136].Pos.X - (matManager.vFields[136].Pos.X - matManager.vFields[137].Pos.X)/2,
matManager.vFields[136].Pos.Y - (matManager.vFields[136].Pos.Y - matManager.vFields[138].Pos.Y)/2, 0.03f));
driver->setTransform(irr::video::ETS_WORLD, im);
driver->drawVertexPrimitiveList(matManager.vActivate, 4, matManager.iRectangle, 2);
}
if(dField.chains.size() > 1) { if(dField.chains.size() > 1) {
for(size_t i = 0; i < dField.chains.size(); ++i) { for(size_t i = 0; i < dField.chains.size(); ++i) {
if(dField.chains[i].solved) if(dField.chains[i].solved)
......
...@@ -1211,7 +1211,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1211,7 +1211,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->is_conti = true; pcard->is_conti = true;
pcard->chain_code = code % 1000000000; pcard->chain_code = code % 1000000000;
mainGame->dField.conti_cards.push_back(pcard); mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.remove_act = true; mainGame->dField.conti_act = true;
} else { } else {
pcard->chain_code = code; pcard->chain_code = code;
pcard->is_selectable = true; pcard->is_selectable = true;
......
...@@ -329,8 +329,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -329,8 +329,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for(size_t i = 0; i < remove[command_controler].size(); ++i) for(size_t i = 0; i < remove[command_controler].size(); ++i)
if(remove[command_controler][i]->cmdFlag & COMMAND_ACTIVATE) if(remove[command_controler][i]->cmdFlag & COMMAND_ACTIVATE)
selectable_cards.push_back(remove[command_controler][i]); selectable_cards.push_back(remove[command_controler][i]);
selectable_cards.reserve(selectable_cards.size() + conti_cards.size());
selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end());
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
...@@ -339,6 +337,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -339,6 +337,10 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selectable_cards.push_back(extra[command_controler][i]); selectable_cards.push_back(extra[command_controler][i]);
break; break;
} }
case POSITION_HINT: {
selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end());
break;
}
} }
mainGame->wCardSelect->setText(dataManager.GetSysString(566)); mainGame->wCardSelect->setText(dataManager.GetSysString(566));
list_command = COMMAND_ACTIVATE; list_command = COMMAND_ACTIVATE;
...@@ -1106,14 +1108,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1106,14 +1108,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
int command_flag = 0; int command_flag = 0;
if(remove[hovered_controler].size() == 0 && conti_cards.size() == 0) if(remove[hovered_controler].size() == 0)
break; break;
for(size_t i = 0; i < remove[hovered_controler].size(); ++i) for(size_t i = 0; i < remove[hovered_controler].size(); ++i)
command_flag |= remove[hovered_controler][i]->cmdFlag; command_flag |= remove[hovered_controler][i]->cmdFlag;
if(conti_cards.size()) command_flag |= COMMAND_LIST;
command_flag |= COMMAND_ACTIVATE;
if(remove[hovered_controler].size())
command_flag |= COMMAND_LIST;
list_command = 1; list_command = 1;
ShowMenu(command_flag, x, y); ShowMenu(command_flag, x, y);
break; break;
...@@ -1129,6 +1128,16 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1129,6 +1128,16 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
ShowMenu(command_flag, x, y); ShowMenu(command_flag, x, y);
break; break;
} }
case POSITION_HINT: {
int command_flag = 0;
if(conti_cards.size() == 0)
break;
if(conti_cards.size())
command_flag |= COMMAND_ACTIVATE;
list_command = 1;
ShowMenu(command_flag, x, y);
break;
}
} }
break; break;
} }
...@@ -1829,6 +1838,9 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -1829,6 +1838,9 @@ void ClientField::GetHoverField(int x, int y) {
if(boardy >= matManager.vFields[82].Pos.Y && boardy <= matManager.vFields[80].Pos.Y) { if(boardy >= matManager.vFields[82].Pos.Y && boardy <= matManager.vFields[80].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} else if(boardy >= matManager.vFields[136].Pos.Y && boardy <= matManager.vFields[138].Pos.Y) {
hovered_controler = 0;
hovered_location = POSITION_HINT;
} }
} else if(boardx >= matManager.vFields[0].Pos.X && boardx <= matManager.vFields[1].Pos.X) { } else if(boardx >= matManager.vFields[0].Pos.X && boardx <= matManager.vFields[1].Pos.X) {
if(boardy >= matManager.vFields[0].Pos.Y && boardy <= matManager.vFields[2].Pos.Y) { if(boardy >= matManager.vFields[0].Pos.Y && boardy <= matManager.vFields[2].Pos.Y) {
......
...@@ -412,6 +412,8 @@ extern Game* mainGame; ...@@ -412,6 +412,8 @@ extern Game* mainGame;
#define COMMAND_ATTACK 0x0040 #define COMMAND_ATTACK 0x0040
#define COMMAND_LIST 0x0080 #define COMMAND_LIST 0x0080
#define POSITION_HINT 0x8000
#define BUTTON_LAN_MODE 100 #define BUTTON_LAN_MODE 100
#define BUTTON_SINGLE_MODE 101 #define BUTTON_SINGLE_MODE 101
#define BUTTON_REPLAY_MODE 102 #define BUTTON_REPLAY_MODE 102
......
...@@ -356,6 +356,11 @@ Materials::Materials() { ...@@ -356,6 +356,11 @@ Materials::Materials() {
vFields[133] = S3DVertex(vector3df(0.2f, -1.4f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0)); vFields[133] = S3DVertex(vector3df(0.2f, -1.4f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFields[134] = S3DVertex(vector3df(1.0f, -2.6f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0)); vFields[134] = S3DVertex(vector3df(1.0f, -2.6f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFields[135] = S3DVertex(vector3df(0.2f, -2.6f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0)); vFields[135] = S3DVertex(vector3df(0.2f, -2.6f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
//conti_act
vFields[136] = S3DVertex(vector3df(-0.8f, 0.1f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFields[137] = S3DVertex(vector3df(0.0f, 0.1f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFields[138] = S3DVertex(vector3df(-0.8f, 1.3f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFields[139] = S3DVertex(vector3df(0.0f, 1.3f, 0.0f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
for(int i = 0; i < 40; ++i) for(int i = 0; i < 40; ++i)
......
...@@ -20,7 +20,7 @@ public: ...@@ -20,7 +20,7 @@ public:
S3DVertex vFieldSpell1[4]; S3DVertex vFieldSpell1[4];
S3DVertex vFieldSpell2[4]; S3DVertex vFieldSpell2[4];
S3DVertex vBackLine[76]; S3DVertex vBackLine[76];
S3DVertex vFields[136]; S3DVertex vFields[140];
S3DVertex vArrow[40]; S3DVertex vArrow[40];
SColor c2d[4]; SColor c2d[4];
u16 iRectangle[6]; u16 iRectangle[6];
......
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