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