Commit c68aad12 authored by edo9300's avatar edo9300

Added speed duel mode and updated fields

parent 6b8529ee
...@@ -67,6 +67,7 @@ void Game::DrawBackGround() { ...@@ -67,6 +67,7 @@ void Game::DrawBackGround() {
driver->setTransform(irr::video::ETS_WORLD, irr::core::IdentityMatrix); driver->setTransform(irr::video::ETS_WORLD, irr::core::IdentityMatrix);
bool drawField = false; bool drawField = false;
int rule = (dInfo.duel_rule >= 4) ? 1 : 0; int rule = (dInfo.duel_rule >= 4) ? 1 : 0;
int speed = (dInfo.speed) ? 1 : 0;
bool ExtraLink = false; bool ExtraLink = false;
if(mainGame->gameConf.draw_field_spell) { if(mainGame->gameConf.draw_field_spell) {
int fieldcode1 = -1; int fieldcode1 = -1;
...@@ -82,14 +83,14 @@ void Game::DrawBackGround() { ...@@ -82,14 +83,14 @@ void Game::DrawBackGround() {
drawField = true; drawField = true;
matManager.mTexture.setTexture(0, texture); matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell1, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vFieldSpell1[speed], 4, matManager.iRectangle, 2);
} }
texture = imageManager.GetTextureField(fieldcode2); texture = imageManager.GetTextureField(fieldcode2);
if(texture) { if(texture) {
drawField = true; drawField = true;
matManager.mTexture.setTexture(0, texture); matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell2, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vFieldSpell2[speed], 4, matManager.iRectangle, 2);
} }
} else if(fieldcode > 0) { } else if(fieldcode > 0) {
ITexture* texture = imageManager.GetTextureField(fieldcode); ITexture* texture = imageManager.GetTextureField(fieldcode);
...@@ -97,11 +98,11 @@ void Game::DrawBackGround() { ...@@ -97,11 +98,11 @@ void Game::DrawBackGround() {
drawField = true; drawField = true;
matManager.mTexture.setTexture(0, texture); matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vFieldSpell[speed], 4, matManager.iRectangle, 2);
} }
} }
} }
matManager.mTexture.setTexture(0, drawField ? imageManager.tFieldTransparent[rule] : imageManager.tField[rule]); matManager.mTexture.setTexture(0, drawField ? imageManager.tFieldTransparent[speed][rule] : imageManager.tField[speed][rule]);
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vField, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vField, 4, matManager.iRectangle, 2);
driver->setMaterial(matManager.mBackLine); driver->setMaterial(matManager.mBackLine);
...@@ -116,7 +117,7 @@ void Game::DrawBackGround() { ...@@ -116,7 +117,7 @@ void Game::DrawBackGround() {
filter = 0x100; filter = 0x100;
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (dField.selectable_field & filter) if (dField.selectable_field & filter)
DrawSelectionLine(matManager.vFieldSzone[0][i][rule], !(dField.selected_field & filter), 2, cv); DrawSelectionLine(matManager.vFieldSzone[0][i][rule][speed], !(dField.selected_field & filter), 2, cv);
} }
filter = 0x10000; filter = 0x10000;
for (int i = 0; i < 7; ++i, filter <<= 1) { for (int i = 0; i < 7; ++i, filter <<= 1) {
...@@ -126,7 +127,7 @@ void Game::DrawBackGround() { ...@@ -126,7 +127,7 @@ void Game::DrawBackGround() {
filter = 0x1000000; filter = 0x1000000;
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (dField.selectable_field & filter) if (dField.selectable_field & filter)
DrawSelectionLine(matManager.vFieldSzone[1][i][rule], !(dField.selected_field & filter), 2, cv); DrawSelectionLine(matManager.vFieldSzone[1][i][rule][speed], !(dField.selected_field & filter), 2, cv);
} }
} }
//disabled field //disabled field
...@@ -142,8 +143,8 @@ void Game::DrawBackGround() { ...@@ -142,8 +143,8 @@ void Game::DrawBackGround() {
filter = 0x100; filter = 0x100;
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (dField.disabled_field & filter) { if (dField.disabled_field & filter) {
driver->draw3DLine(matManager.vFieldSzone[0][i][rule][0].Pos, matManager.vFieldSzone[0][i][rule][3].Pos, 0xffffffff); driver->draw3DLine(matManager.vFieldSzone[0][i][rule][speed][0].Pos, matManager.vFieldSzone[0][i][rule][speed][3].Pos, 0xffffffff);
driver->draw3DLine(matManager.vFieldSzone[0][i][rule][1].Pos, matManager.vFieldSzone[0][i][rule][2].Pos, 0xffffffff); driver->draw3DLine(matManager.vFieldSzone[0][i][rule][speed][1].Pos, matManager.vFieldSzone[0][i][rule][speed][2].Pos, 0xffffffff);
} }
} }
filter = 0x10000; filter = 0x10000;
...@@ -156,8 +157,8 @@ void Game::DrawBackGround() { ...@@ -156,8 +157,8 @@ void Game::DrawBackGround() {
filter = 0x1000000; filter = 0x1000000;
for (int i = 0; i < 8; ++i, filter <<= 1) { for (int i = 0; i < 8; ++i, filter <<= 1) {
if (dField.disabled_field & filter) { if (dField.disabled_field & filter) {
driver->draw3DLine(matManager.vFieldSzone[1][i][rule][0].Pos, matManager.vFieldSzone[1][i][rule][3].Pos, 0xffffffff); driver->draw3DLine(matManager.vFieldSzone[1][i][rule][speed][0].Pos, matManager.vFieldSzone[1][i][rule][speed][3].Pos, 0xffffffff);
driver->draw3DLine(matManager.vFieldSzone[1][i][rule][1].Pos, matManager.vFieldSzone[1][i][rule][2].Pos, 0xffffffff); driver->draw3DLine(matManager.vFieldSzone[1][i][rule][speed][1].Pos, matManager.vFieldSzone[1][i][rule][speed][2].Pos, 0xffffffff);
} }
} }
} }
...@@ -184,18 +185,18 @@ void Game::DrawBackGround() { ...@@ -184,18 +185,18 @@ void Game::DrawBackGround() {
S3DVertex *vertex = 0; S3DVertex *vertex = 0;
ClientCard* pcard = 0; ClientCard* pcard = 0;
if (dField.hovered_location == LOCATION_DECK) if (dField.hovered_location == LOCATION_DECK)
vertex = matManager.vFieldDeck[dField.hovered_controler]; vertex = matManager.vFieldDeck[dField.hovered_controler][speed];
else if (dField.hovered_location == LOCATION_MZONE) { else if (dField.hovered_location == LOCATION_MZONE) {
vertex = matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence]; vertex = matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence];
pcard = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence]; pcard = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence];
} else if (dField.hovered_location == LOCATION_SZONE) } else if (dField.hovered_location == LOCATION_SZONE)
vertex = matManager.vFieldSzone[dField.hovered_controler][dField.hovered_sequence][rule]; vertex = matManager.vFieldSzone[dField.hovered_controler][dField.hovered_sequence][rule][speed];
else if (dField.hovered_location == LOCATION_GRAVE) else if (dField.hovered_location == LOCATION_GRAVE)
vertex = matManager.vFieldGrave[dField.hovered_controler][rule]; vertex = matManager.vFieldGrave[dField.hovered_controler][rule][speed];
else if (dField.hovered_location == LOCATION_REMOVED) else if (dField.hovered_location == LOCATION_REMOVED)
vertex = matManager.vFieldRemove[dField.hovered_controler][rule]; vertex = matManager.vFieldRemove[dField.hovered_controler][rule][speed];
else if (dField.hovered_location == LOCATION_EXTRA) else if (dField.hovered_location == LOCATION_EXTRA)
vertex = matManager.vFieldExtra[dField.hovered_controler]; vertex = matManager.vFieldExtra[dField.hovered_controler][speed];
selFieldAlpha += selFieldDAlpha; selFieldAlpha += selFieldDAlpha;
if (selFieldAlpha <= 5) { if (selFieldAlpha <= 5) {
selFieldAlpha = 5; selFieldAlpha = 5;
...@@ -218,12 +219,12 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) { ...@@ -218,12 +219,12 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) {
int mark = pcard->link_marker; int mark = pcard->link_marker;
ClientCard* pcard2; ClientCard* pcard2;
if (dField.hovered_sequence < 5) { if (dField.hovered_sequence < 5) {
if (mark & LINK_MARKER_LEFT && dField.hovered_sequence > 0) { if (mark & LINK_MARKER_LEFT && dField.hovered_sequence > (0 + dInfo.speed)) {
pcard2 = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence - 1]; pcard2 = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence - 1];
CheckMutual(pcard2, LINK_MARKER_RIGHT); CheckMutual(pcard2, LINK_MARKER_RIGHT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence - 1], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence - 1], 4, matManager.iRectangle, 2);
} }
if (mark & LINK_MARKER_RIGHT && dField.hovered_sequence < 4) { if (mark & LINK_MARKER_RIGHT && dField.hovered_sequence < (4 - dInfo.speed)) {
pcard2 = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence + 1]; pcard2 = mainGame->dField.mzone[dField.hovered_controler][dField.hovered_sequence + 1];
CheckMutual(pcard2, LINK_MARKER_LEFT); CheckMutual(pcard2, LINK_MARKER_LEFT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence + 1], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][dField.hovered_sequence + 1], 4, matManager.iRectangle, 2);
...@@ -258,7 +259,7 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) { ...@@ -258,7 +259,7 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) {
} }
} else { } else {
int swap = (dField.hovered_sequence == 5) ? 0 : 2; int swap = (dField.hovered_sequence == 5) ? 0 : 2;
if (mark & LINK_MARKER_BOTTOM_LEFT) { if (mark & LINK_MARKER_BOTTOM_LEFT && !(dInfo.speed && swap == 0)) {
pcard2 = mainGame->dField.mzone[dField.hovered_controler][0 + swap]; pcard2 = mainGame->dField.mzone[dField.hovered_controler][0 + swap];
CheckMutual(pcard2, LINK_MARKER_TOP_RIGHT); CheckMutual(pcard2, LINK_MARKER_TOP_RIGHT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][0 + swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][0 + swap], 4, matManager.iRectangle, 2);
...@@ -268,12 +269,12 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) { ...@@ -268,12 +269,12 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) {
CheckMutual(pcard2, LINK_MARKER_TOP); CheckMutual(pcard2, LINK_MARKER_TOP);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][1 + swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][1 + swap], 4, matManager.iRectangle, 2);
} }
if (mark & LINK_MARKER_BOTTOM_RIGHT) { if (mark & LINK_MARKER_BOTTOM_RIGHT && !(dInfo.speed && swap == 2)) {
pcard2 = mainGame->dField.mzone[dField.hovered_controler][2 + swap]; pcard2 = mainGame->dField.mzone[dField.hovered_controler][2 + swap];
CheckMutual(pcard2, LINK_MARKER_TOP_LEFT); CheckMutual(pcard2, LINK_MARKER_TOP_LEFT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][2 + swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[dField.hovered_controler][2 + swap], 4, matManager.iRectangle, 2);
} }
if (mark & LINK_MARKER_TOP_LEFT) { if (mark & LINK_MARKER_TOP_LEFT && !(dInfo.speed && swap == 0)) {
pcard2 = mainGame->dField.mzone[1 - dField.hovered_controler][4 - swap]; pcard2 = mainGame->dField.mzone[1 - dField.hovered_controler][4 - swap];
CheckMutual(pcard2, LINK_MARKER_TOP_LEFT); CheckMutual(pcard2, LINK_MARKER_TOP_LEFT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][4 - swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][4 - swap], 4, matManager.iRectangle, 2);
...@@ -283,7 +284,7 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) { ...@@ -283,7 +284,7 @@ void Game::DrawLinkedZones(ClientCard* pcard, bool ExtraLink) {
CheckMutual(pcard2, LINK_MARKER_TOP); CheckMutual(pcard2, LINK_MARKER_TOP);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][3 - swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][3 - swap], 4, matManager.iRectangle, 2);
} }
if (mark & LINK_MARKER_TOP_RIGHT) { if (mark & LINK_MARKER_TOP_RIGHT && !(dInfo.speed && swap == 2)) {
pcard2 = mainGame->dField.mzone[1 - dField.hovered_controler][2 - swap]; pcard2 = mainGame->dField.mzone[1 - dField.hovered_controler][2 - swap];
CheckMutual(pcard2, LINK_MARKER_TOP_RIGHT); CheckMutual(pcard2, LINK_MARKER_TOP_RIGHT);
driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][2 - swap], 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(&matManager.vFieldMzone[1 - dField.hovered_controler][2 - swap], 4, matManager.iRectangle, 2);
...@@ -398,52 +399,53 @@ void Game::DrawCard(ClientCard* pcard) { ...@@ -398,52 +399,53 @@ void Game::DrawCard(ClientCard* pcard) {
void Game::DrawMisc() { void Game::DrawMisc() {
static irr::core::vector3df act_rot(0, 0, 0); static irr::core::vector3df act_rot(0, 0, 0);
int rule = (dInfo.duel_rule >= 4) ? 1 : 0; int rule = (dInfo.duel_rule >= 4) ? 1 : 0;
int speed = (dInfo.speed) ? 1 : 0;
irr::core::matrix4 im, ic, it; irr::core::matrix4 im, ic, it;
act_rot.Z += 0.02f; act_rot.Z += 0.02f;
im.setRotationRadians(act_rot); im.setRotationRadians(act_rot);
matManager.mTexture.setTexture(0, imageManager.tAct); matManager.mTexture.setTexture(0, imageManager.tAct);
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
if(dField.deck_act) { if(dField.deck_act) {
im.setTranslation(vector3df((matManager.vFieldDeck[0][0].Pos.X + matManager.vFieldDeck[0][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldDeck[0][speed][0].Pos.X + matManager.vFieldDeck[0][speed][1].Pos.X) / 2,
(matManager.vFieldDeck[0][0].Pos.Y + matManager.vFieldDeck[0][2].Pos.Y) / 2, dField.deck[0].size() * 0.01f + 0.02f)); (matManager.vFieldDeck[0][speed][0].Pos.Y + matManager.vFieldDeck[0][speed][2].Pos.Y) / 2, dField.deck[0].size() * 0.01f + 0.02f));
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.grave_act) { if(dField.grave_act) {
im.setTranslation(vector3df((matManager.vFieldGrave[0][rule][0].Pos.X + matManager.vFieldGrave[0][rule][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldGrave[0][rule][speed][0].Pos.X + matManager.vFieldGrave[0][rule][speed][1].Pos.X) / 2,
(matManager.vFieldGrave[0][rule][0].Pos.Y + matManager.vFieldGrave[0][rule][2].Pos.Y) / 2, dField.grave[0].size() * 0.01f + 0.02f)); (matManager.vFieldGrave[0][rule][speed][0].Pos.Y + matManager.vFieldGrave[0][rule][speed][2].Pos.Y) / 2, dField.grave[0].size() * 0.01f + 0.02f));
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.remove_act) { if(dField.remove_act) {
im.setTranslation(vector3df((matManager.vFieldRemove[0][rule][0].Pos.X + matManager.vFieldRemove[0][rule][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldRemove[0][rule][speed][0].Pos.X + matManager.vFieldRemove[0][rule][speed][1].Pos.X) / 2,
(matManager.vFieldRemove[0][rule][0].Pos.Y + matManager.vFieldRemove[0][rule][2].Pos.Y) / 2, dField.remove[0].size() * 0.01f + 0.02f)); (matManager.vFieldRemove[0][rule][speed][0].Pos.Y + matManager.vFieldRemove[0][rule][speed][2].Pos.Y) / 2, dField.remove[0].size() * 0.01f + 0.02f));
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.extra_act) { if(dField.extra_act) {
im.setTranslation(vector3df((matManager.vFieldExtra[0][0].Pos.X + matManager.vFieldExtra[0][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldExtra[0][speed][0].Pos.X + matManager.vFieldExtra[0][speed][1].Pos.X) / 2,
(matManager.vFieldExtra[0][0].Pos.Y + matManager.vFieldExtra[0][2].Pos.Y) / 2, dField.extra[0].size() * 0.01f + 0.02f)); (matManager.vFieldExtra[0][speed][0].Pos.Y + matManager.vFieldExtra[0][speed][2].Pos.Y) / 2, dField.extra[0].size() * 0.01f + 0.02f));
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.pzone_act[0]) { if(dField.pzone_act[0]) {
int seq = dInfo.duel_rule >= 4 ? 0 : 6; int seq = dInfo.duel_rule >= 4 ? (speed) ? 1 : 0 : 6;
im.setTranslation(vector3df((matManager.vFieldSzone[0][seq][rule][0].Pos.X + matManager.vFieldSzone[0][seq][rule][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldSzone[0][seq][rule][speed][0].Pos.X + matManager.vFieldSzone[0][seq][rule][speed][1].Pos.X) / 2,
(matManager.vFieldSzone[0][seq][rule][0].Pos.Y + matManager.vFieldSzone[0][seq][rule][2].Pos.Y) / 2, 0.03f)); (matManager.vFieldSzone[0][seq][rule][speed][0].Pos.Y + matManager.vFieldSzone[0][seq][rule][speed][2].Pos.Y) / 2, 0.03f));
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.pzone_act[1]) { if(dField.pzone_act[1]) {
int seq = dInfo.duel_rule >= 4 ? 0 : 6; int seq = dInfo.duel_rule >= 4 ? (speed) ? 1 : 0 : 6;
im.setTranslation(vector3df((matManager.vFieldSzone[1][seq][rule][0].Pos.X + matManager.vFieldSzone[1][seq][rule][1].Pos.X) / 2, im.setTranslation(vector3df((matManager.vFieldSzone[1][seq][rule][speed][0].Pos.X + matManager.vFieldSzone[1][seq][rule][speed][1].Pos.X) / 2,
(matManager.vFieldSzone[1][seq][rule][0].Pos.Y + matManager.vFieldSzone[1][seq][rule][2].Pos.Y) / 2, 0.03f)); (matManager.vFieldSzone[1][seq][rule][speed][0].Pos.Y + matManager.vFieldSzone[1][seq][rule][speed][2].Pos.Y) / 2, 0.03f));
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) { if(dField.conti_act) {
im.setTranslation(vector3df((matManager.vFieldContiAct[0].X + matManager.vFieldContiAct[1].X) / 2, im.setTranslation(vector3df((matManager.vFieldContiAct[speed][0].X + matManager.vFieldContiAct[speed][1].X) / 2,
(matManager.vFieldContiAct[0].Y + matManager.vFieldContiAct[2].Y) / 2, 0.03f)); (matManager.vFieldContiAct[speed][0].Y + matManager.vFieldContiAct[speed][2].Y) / 2, 0.03f));
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);
} }
...@@ -555,6 +557,29 @@ void Game::DrawMisc() { ...@@ -555,6 +557,29 @@ void Game::DrawMisc() {
if(pcard && (pcard->position & POS_FACEUP)) if(pcard && (pcard->position & POS_FACEUP))
DrawStatus(pcard, 593, 291, 555, 338); DrawStatus(pcard, 593, 291, 555, 338);
if(dInfo.duel_rule < 4) { if(dInfo.duel_rule < 4) {
if(dInfo.speed) {
pcard = dField.szone[0][6];
if(pcard) {
adFont->draw(pcard->lscstring, mainGame->Resize(510, 394, 522, 414), 0xff000000, true, false, 0);
adFont->draw(pcard->lscstring, mainGame->Resize(511, 395, 523, 415), 0xffffffff, true, false, 0);
}
pcard = dField.szone[0][7];
if(pcard) {
adFont->draw(pcard->rscstring, mainGame->Resize(795, 394, 827, 414), 0xff000000, true, false, 0);
adFont->draw(pcard->rscstring, mainGame->Resize(796, 395, 828, 415), 0xffffffff, true, false, 0);
}
pcard = dField.szone[1][6];
if(pcard) {
adFont->draw(pcard->lscstring, mainGame->Resize(772, 245, 804, 265), 0xff000000, true, false, 0);
adFont->draw(pcard->lscstring, mainGame->Resize(773, 246, 805, 266), 0xffffffff, true, false, 0);
}
pcard = dField.szone[1][7];
if(pcard) {
adFont->draw(pcard->rscstring, mainGame->Resize(530, 245, 562, 265), 0xff000000, true, false, 0);
adFont->draw(pcard->rscstring, mainGame->Resize(531, 246, 563, 266), 0xffffffff, true, false, 0);
}
}
else {
pcard = dField.szone[0][6]; pcard = dField.szone[0][6];
if(pcard) { if(pcard) {
adFont->draw(pcard->lscstring, mainGame->Resize(426, 394, 438, 414), 0xff000000, true, false, 0); adFont->draw(pcard->lscstring, mainGame->Resize(426, 394, 438, 414), 0xff000000, true, false, 0);
...@@ -575,7 +600,31 @@ void Game::DrawMisc() { ...@@ -575,7 +600,31 @@ void Game::DrawMisc() {
adFont->draw(pcard->rscstring, mainGame->Resize(463, 245, 495, 265), 0xff000000, true, false, 0); adFont->draw(pcard->rscstring, mainGame->Resize(463, 245, 495, 265), 0xff000000, true, false, 0);
adFont->draw(pcard->rscstring, mainGame->Resize(464, 246, 496, 266), 0xffffffff, true, false, 0); adFont->draw(pcard->rscstring, mainGame->Resize(464, 246, 496, 266), 0xffffffff, true, false, 0);
} }
}
} else { } else {
if(dInfo.speed) {
pcard = dField.szone[0][1];
if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) {
adFont->draw(pcard->lscstring, mainGame->Resize(454+88, 430, 466+88, 450), 0xff000000, true, false, 0);
adFont->draw(pcard->lscstring, mainGame->Resize(455+88, 431, 467+88, 451), 0xffffffff, true, false, 0);
}
pcard = dField.szone[0][3];
if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) {
adFont->draw(pcard->rscstring, mainGame->Resize(850-88, 430, 882-88, 450), 0xff000000, true, false, 0);
adFont->draw(pcard->rscstring, mainGame->Resize(851-88, 431, 883-88, 451), 0xffffffff, true, false, 0);
}
pcard = dField.szone[1][1];
if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) {
adFont->draw(pcard->lscstring, mainGame->Resize(806-69, 222, 838- 69, 242), 0xff000000, true, false, 0);
adFont->draw(pcard->lscstring, mainGame->Resize(807- 69, 223, 839- 69, 243), 0xffffffff, true, false, 0);
}
pcard = dField.szone[1][3];
if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) {
adFont->draw(pcard->rscstring, mainGame->Resize(498+ 67, 222, 530+ 67, 242), 0xff000000, true, false, 0);
adFont->draw(pcard->rscstring, mainGame->Resize(499+ 67, 223, 531+ 67, 243), 0xffffffff, true, false, 0);
}
}
else {
pcard = dField.szone[0][0]; pcard = dField.szone[0][0];
if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) { if(pcard && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) {
adFont->draw(pcard->lscstring, mainGame->Resize(454, 430, 466, 450), 0xff000000, true, false, 0); adFont->draw(pcard->lscstring, mainGame->Resize(454, 430, 466, 450), 0xff000000, true, false, 0);
...@@ -597,6 +646,70 @@ void Game::DrawMisc() { ...@@ -597,6 +646,70 @@ void Game::DrawMisc() {
adFont->draw(pcard->rscstring, mainGame->Resize(499, 223, 531, 243), 0xffffffff, true, false, 0); adFont->draw(pcard->rscstring, mainGame->Resize(499, 223, 531, 243), 0xffffffff, true, false, 0);
} }
} }
}
if(dInfo.speed) {
if(dField.extra[0].size()) {
int offset = (dField.extra[0].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width;
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), mainGame->Resize(415 + offset, 562, 466, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), mainGame->Resize(415 + offset, 563, 468, 553), 0xffffff00, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[0], true), mainGame->Resize(435, 562, 486, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[0], true), mainGame->Resize(435, 563, 488, 553), 0xffffff00, true, false, 0);
}
if(dField.deck[0].size()) {
numFont->draw(dataManager.GetNumString(dField.deck[0].size()), mainGame->Resize(808, 562, 922, 552), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.deck[0].size()), mainGame->Resize(809, 563, 924, 553), 0xffffff00, true, false, 0);
}
if (rule == 0) {
if (dField.grave[0].size()) {
numFont->draw(dataManager.GetNumString(dField.grave[0].size()), mainGame->Resize(757, 375, 904, 380), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.grave[0].size()), mainGame->Resize(757, 376, 906, 381), 0xffffff00, true, false, 0);
}
if (dField.remove[0].size()) {
numFont->draw(dataManager.GetNumString(dField.remove[0].size()), mainGame->Resize(932, 375, 874, 380), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.remove[0].size()), mainGame->Resize(932, 376, 876, 381), 0xffffff00, true, false, 0);
}
} else {
if (dField.grave[0].size()) {
numFont->draw(dataManager.GetNumString(dField.grave[0].size()), mainGame->Resize(778, 456, 910, 461), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.grave[0].size()), mainGame->Resize(778, 457, 912, 462), 0xffffff00, true, false, 0);
}
if (dField.remove[0].size()) {
numFont->draw(dataManager.GetNumString(dField.remove[0].size()), mainGame->Resize(757, 375, 904, 380), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.remove[0].size()), mainGame->Resize(757, 376, 906, 381), 0xffffff00, true, false, 0);
}
}
if(dField.extra[1].size()) {
int offset = (dField.extra[1].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width;
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), mainGame->Resize(746 + offset, 207, 836, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra[1].size()), mainGame->Resize(746 + offset, 208, 838, 233), 0xffffff00, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[1], true), mainGame->Resize(766, 207, 856, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.extra_p_count[1], true), mainGame->Resize(766, 208, 858, 233), 0xffffff00, true, false, 0);
}
if(dField.deck[1].size()) {
numFont->draw(dataManager.GetNumString(dField.deck[1].size()), mainGame->Resize(528, 207, 544, 232), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.deck[1].size()), mainGame->Resize(528, 208, 546, 233), 0xffffff00, true, false, 0);
}
if (rule == 0) {
if (dField.grave[1].size()) {
numFont->draw(dataManager.GetNumString(dField.grave[1].size()), mainGame->Resize(492, 310, 534, 281), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.grave[1].size()), mainGame->Resize(492, 311, 536, 282), 0xffffff00, true, false, 0);
}
if (dField.remove[1].size()) {
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(374, 310, 517, 340), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(374, 311, 519, 341), 0xffffff00, true, false, 0);
}
} else {
if (dField.grave[1].size()) {
numFont->draw(dataManager.GetNumString(dField.grave[1].size()), mainGame->Resize(523, 249, 530, 299), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.grave[1].size()), mainGame->Resize(523, 250, 532, 300), 0xffffff00, true, false, 0);
}
if (dField.remove[1].size()) {
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(492, 310, 534, 281), 0xff000000, true, false, 0);
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(492, 311, 536, 282), 0xffffff00, true, false, 0);
}
}
}
else {
if(dField.extra[0].size()) { if(dField.extra[0].size()) {
int offset = (dField.extra[0].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width; int offset = (dField.extra[0].size() >= 10) ? 0 : mainGame->textFont->getDimension(dataManager.GetNumString(1)).Width;
numFont->draw(dataManager.GetNumString(dField.extra[0].size()), mainGame->Resize(320 + offset, 562, 371, 552), 0xff000000, true, false, 0); numFont->draw(dataManager.GetNumString(dField.extra[0].size()), mainGame->Resize(320 + offset, 562, 371, 552), 0xff000000, true, false, 0);
...@@ -657,6 +770,7 @@ void Game::DrawMisc() { ...@@ -657,6 +770,7 @@ void Game::DrawMisc() {
numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(420, 311, 464, 282), 0xffffff00, true, false, 0); numFont->draw(dataManager.GetNumString(dField.remove[1].size()), mainGame->Resize(420, 311, 464, 282), 0xffffff00, true, false, 0);
} }
} }
}
} }
void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) { void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
if(pcard->type & TYPE_LINK) { if(pcard->type & TYPE_LINK) {
......
...@@ -139,7 +139,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) { ...@@ -139,7 +139,7 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg.info.master = mainGame->chkRules[13]->isChecked() ? 2 : 0; cscg.info.master = mainGame->chkRules[13]->isChecked() ? 2 : 0;
cscg.info.rule_count = 0; cscg.info.rule_count = 0;
for (int i = 0; i < 14; ++i) { for (int i = 0; i < 14; ++i) {
if (mainGame->chkRules[i]->isChecked() && i != 11) { if (mainGame->chkRules[i]->isChecked() && i != 3 && i != 11) {
cscg.info.rule_count++; cscg.info.rule_count++;
} }
} }
...@@ -497,6 +497,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -497,6 +497,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->wChat->setVisible(true); mainGame->wChat->setVisible(true);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
mainGame->dInfo.duel_rule = pkt->info.duel_rule; mainGame->dInfo.duel_rule = pkt->info.duel_rule;
mainGame->dInfo.speed = (pkt->info.speed == 2) ? 1 : 0;
watching = 0; watching = 0;
connect_state |= 0x4; connect_state |= 0x4;
break; break;
...@@ -605,7 +606,29 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -605,7 +606,29 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->wChat->setVisible(true); mainGame->wChat->setVisible(true);
mainGame->device->setEventReceiver(&mainGame->dField); mainGame->device->setEventReceiver(&mainGame->dField);
// reset master rule 4 phase button position // reset master rule 4 phase button position
if (mainGame->dInfo.duel_rule >= 4) { mainGame->wPhase->setRelativePosition(mainGame->Resize(480, 310, 855, 330));
if(mainGame->dInfo.speed) {
if(mainGame->dInfo.duel_rule >= 4) {
mainGame->wPhase->setRelativePosition(mainGame->Resize(480, 290, 855, 350));
mainGame->btnShuffle->setRelativePosition(mainGame->Resize(0, 40, 50, 60));
mainGame->btnDP->setRelativePosition(mainGame->Resize(0, 40, 50, 60));
mainGame->btnSP->setRelativePosition(mainGame->Resize(0, 40, 50, 60));
mainGame->btnM1->setRelativePosition(mainGame->Resize(160, 20, 210, 40));
mainGame->btnBP->setRelativePosition(mainGame->Resize(160, 20, 210, 40));
mainGame->btnM2->setRelativePosition(mainGame->Resize(160, 20, 210, 40));
mainGame->btnEP->setRelativePosition(mainGame->Resize(310, 0, 360, 20));
} else {
mainGame->btnShuffle->setRelativePosition(mainGame->Resize(65, 0, 115, 20));
mainGame->btnDP->setRelativePosition(mainGame->Resize(65, 0, 115, 20));
mainGame->btnSP->setRelativePosition(mainGame->Resize(65, 0, 115, 20));
mainGame->btnM1->setRelativePosition(mainGame->Resize(130, 0, 180, 20));
mainGame->btnBP->setRelativePosition(mainGame->Resize(195, 0, 245, 20));
mainGame->btnM2->setRelativePosition(mainGame->Resize(260, 0, 310, 20));
mainGame->btnEP->setRelativePosition(mainGame->Resize(260, 0, 310, 20));
}
} else {
mainGame->btnDP->setRelativePosition(mainGame->Resize(0, 0, 50, 20));
if(mainGame->dInfo.duel_rule >= 4) {
mainGame->btnSP->setRelativePosition(mainGame->Resize(0, 0, 50, 20)); mainGame->btnSP->setRelativePosition(mainGame->Resize(0, 0, 50, 20));
mainGame->btnM1->setRelativePosition(mainGame->Resize(160, 0, 210, 20)); mainGame->btnM1->setRelativePosition(mainGame->Resize(160, 0, 210, 20));
mainGame->btnBP->setRelativePosition(mainGame->Resize(160, 0, 210, 20)); mainGame->btnBP->setRelativePosition(mainGame->Resize(160, 0, 210, 20));
...@@ -616,6 +639,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -616,6 +639,9 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnBP->setRelativePosition(mainGame->Resize(195, 0, 245, 20)); mainGame->btnBP->setRelativePosition(mainGame->Resize(195, 0, 245, 20));
mainGame->btnM2->setRelativePosition(mainGame->Resize(260, 0, 310, 20)); mainGame->btnM2->setRelativePosition(mainGame->Resize(260, 0, 310, 20));
} }
mainGame->btnEP->setRelativePosition(mainGame->Resize(320, 0, 370, 20));
mainGame->btnShuffle->setRelativePosition(mainGame->Resize(0, 0, 50, 20));
}
if(!mainGame->dInfo.isTag) { if(!mainGame->dInfo.isTag) {
if(selftype > 1) { if(selftype > 1) {
mainGame->dInfo.player_type = 7; mainGame->dInfo.player_type = 7;
...@@ -1187,7 +1213,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1187,7 +1213,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
else if (pcard->location == LOCATION_EXTRA) else if (pcard->location == LOCATION_EXTRA)
mainGame->dField.extra_act = true; mainGame->dField.extra_act = true;
else { else {
int seq = mainGame->dInfo.duel_rule >= 4 ? 0 : 6; int seq = mainGame->dInfo.duel_rule >= 4 ? (mainGame->dInfo.speed) ? 1 : 0 : 6;
if (pcard->location == LOCATION_SZONE && pcard->sequence == seq && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget) if (pcard->location == LOCATION_SZONE && pcard->sequence == seq && (pcard->type & TYPE_PENDULUM) && !pcard->equipTarget)
mainGame->dField.pzone_act[pcard->controler] = true; mainGame->dField.pzone_act[pcard->controler] = true;
} }
...@@ -3500,7 +3526,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3500,7 +3526,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_RELOAD_FIELD: { case MSG_RELOAD_FIELD: {
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->dField.Clear(); mainGame->dField.Clear();
mainGame->dInfo.duel_rule = BufferIO::ReadInt8(pbuf); int rule = BufferIO::ReadInt8(pbuf);
mainGame->dInfo.duel_rule = rule & 0xf;
mainGame->dInfo.speed = (rule >> 4) ? 1 : 0;
int val = 0; int val = 0;
for(int i = 0; i < 2; ++i) { for(int i = 0; i < 2; ++i) {
int p = mainGame->LocalPlayer(i); int p = mainGame->LocalPlayer(i);
......
...@@ -2100,16 +2100,21 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -2100,16 +2100,21 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
void ClientField::GetHoverField(int x, int y) { void ClientField::GetHoverField(int x, int y) {
irr::core::recti sfRect(430, 504, 875, 600); irr::core::recti sfRect(430, 504, 875, 600);
irr::core::recti ofRect(531, 135, 800, 191); irr::core::recti ofRect(531, 135, 800, 191);
if(mainGame->dInfo.speed) {
sfRect = recti(509, 504, 796, 600);
ofRect = recti(531+ 46, 135, 800- 46, 191);
}
irr::core::position2di pos(x, y); irr::core::position2di pos(x, y);
int rule = (mainGame->dInfo.duel_rule >= 4) ? 1 : 0; int rule = (mainGame->dInfo.duel_rule >= 4) ? 1 : 0;
int speed = (mainGame->dInfo.speed) ? 1 : 0;
if(sfRect.isPointInside(pos)) { if(sfRect.isPointInside(pos)) {
int hc = hand[0].size(); int hc = hand[0].size();
int cardSize = 66; int cardSize = 66;
int cardSpace = 10; int cardSpace = 10;
if(hc == 0) if(hc == 0)
hovered_location = 0; hovered_location = 0;
else if(hc < 7) { else if(hc < 7 - speed * 2) {
int left = sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - hc) / 2; int left = sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - speed * 2 - hc) / 2;
if(x < left) if(x < left)
hovered_location = 0; hovered_location = 0;
else { else {
...@@ -2124,10 +2129,10 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2124,10 +2129,10 @@ void ClientField::GetHoverField(int x, int y) {
} else { } else {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_HAND; hovered_location = LOCATION_HAND;
if(x >= sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * 5) if(x >= sfRect.UpperLeftCorner.X + (cardSize + cardSpace) * (5 - speed * 2))
hovered_sequence = hc - 1; hovered_sequence = hc - 1;
else else
hovered_sequence = (x - sfRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * 5); hovered_sequence = (x - sfRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * (5 - speed * 2));
} }
} else if(ofRect.isPointInside(pos)) { } else if(ofRect.isPointInside(pos)) {
int hc = hand[1].size(); int hc = hand[1].size();
...@@ -2135,8 +2140,8 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2135,8 +2140,8 @@ void ClientField::GetHoverField(int x, int y) {
int cardSpace = 7; int cardSpace = 7;
if(hc == 0) if(hc == 0)
hovered_location = 0; hovered_location = 0;
else if(hc < 7) { else if(hc < 7 - speed * 2) {
int left = ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - hc) / 2; int left = ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * (6 - speed * 2 - hc) / 2;
if(x < left) if(x < left)
hovered_location = 0; hovered_location = 0;
else { else {
...@@ -2151,10 +2156,10 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2151,10 +2156,10 @@ void ClientField::GetHoverField(int x, int y) {
} else { } else {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_HAND; hovered_location = LOCATION_HAND;
if(x >= ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * 5) if(x >= ofRect.UpperLeftCorner.X + (cardSize + cardSpace) * (5 - speed * 2))
hovered_sequence = 0; hovered_sequence = 0;
else else
hovered_sequence = hc - 1 - (x - ofRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * 5); hovered_sequence = hc - 1 - (x - ofRect.UpperLeftCorner.X) * (hc - 1) / ((cardSize + cardSpace) * (5 - speed * 2));
} }
} else { } else {
double screenx = x / 1024.0 * 1.35 - 0.90; double screenx = x / 1024.0 * 1.35 - 0.90;
...@@ -2164,83 +2169,83 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2164,83 +2169,83 @@ void ClientField::GetHoverField(int x, int y) {
double boardx = 4.2 + 7.8 * screenx / vlen / cos(angle); double boardx = 4.2 + 7.8 * screenx / vlen / cos(angle);
double boardy = 8.0 - 7.8 * tan(angle); double boardy = 8.0 - 7.8 * tan(angle);
hovered_location = 0; hovered_location = 0;
if(boardx >= matManager.vFieldExtra[0][0].Pos.X && boardx <= matManager.vFieldExtra[0][1].Pos.X) { if(boardx >= matManager.vFieldExtra[0][speed][0].Pos.X && boardx <= matManager.vFieldExtra[0][speed][1].Pos.X) {
if(boardy >= matManager.vFieldExtra[0][0].Pos.Y && boardy <= matManager.vFieldExtra[0][2].Pos.Y) { if(boardy >= matManager.vFieldExtra[0][speed][0].Pos.Y && boardy <= matManager.vFieldExtra[0][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_EXTRA; hovered_location = LOCATION_EXTRA;
} else if(boardy >= matManager.vFieldSzone[0][5][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][5][rule][2].Pos.Y) {//field } else if(boardy >= matManager.vFieldSzone[0][5][rule][speed][0].Pos.Y && boardy <= matManager.vFieldSzone[0][5][rule][speed][2].Pos.Y) {//field
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 5; hovered_sequence = 5;
} else if(boardy >= matManager.vFieldSzone[0][6][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][6][rule][2].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[0][6][rule][speed][0].Pos.Y && boardy <= matManager.vFieldSzone[0][6][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 6; hovered_sequence = 6;
} else if(rule == 1 && boardy >= matManager.vFieldRemove[1][rule][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][0].Pos.Y) { } else if(rule == 1 && boardy >= matManager.vFieldRemove[1][rule][speed][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} else if(rule == 0 && boardy >= matManager.vFieldSzone[1][7][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][rule][0].Pos.Y) { } else if(rule == 0 && boardy >= matManager.vFieldSzone[1][7][rule][speed][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 7; hovered_sequence = 7;
} else if(boardy >= matManager.vFieldGrave[1][rule][2].Pos.Y && boardy <= matManager.vFieldGrave[1][rule][0].Pos.Y) { } else if(boardy >= matManager.vFieldGrave[1][rule][speed][2].Pos.Y && boardy <= matManager.vFieldGrave[1][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_GRAVE; hovered_location = LOCATION_GRAVE;
} else if(boardy >= matManager.vFieldDeck[1][2].Pos.Y && boardy <= matManager.vFieldDeck[1][0].Pos.Y) { } else if(boardy >= matManager.vFieldDeck[1][speed][2].Pos.Y && boardy <= matManager.vFieldDeck[1][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_DECK; hovered_location = LOCATION_DECK;
} }
} else if(rule == 0 && boardx >= matManager.vFieldRemove[1][rule][1].Pos.X && boardx <= matManager.vFieldRemove[1][rule][0].Pos.X) { } else if(rule == 0 && boardx >= matManager.vFieldRemove[1][rule][speed][1].Pos.X && boardx <= matManager.vFieldRemove[1][rule][speed][0].Pos.X) {
if(boardy >= matManager.vFieldRemove[1][rule][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][0].Pos.Y) { if(boardy >= matManager.vFieldRemove[1][rule][speed][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} else if(boardy >= matManager.vFieldContiAct[0].Y && boardy <= matManager.vFieldContiAct[2].Y) { } else if(boardy >= matManager.vFieldContiAct[speed][0].Y && boardy <= matManager.vFieldContiAct[speed][2].Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = POSITION_HINT; hovered_location = POSITION_HINT;
} }
} else if(rule == 1 && boardx >= matManager.vFieldSzone[1][7][rule][1].Pos.X && boardx <= matManager.vFieldSzone[1][7][rule][2].Pos.X) { } else if(rule == 1 && boardx >= matManager.vFieldSzone[1][7][rule][speed][1].Pos.X && boardx <= matManager.vFieldSzone[1][7][rule][speed][2].Pos.X) {
if(boardy >= matManager.vFieldSzone[1][7][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][rule][0].Pos.Y) { if(boardy >= matManager.vFieldSzone[1][7][rule][speed][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 7; hovered_sequence = 7;
} else if(boardy >= matManager.vFieldContiAct[0].Y && boardy <= matManager.vFieldContiAct[2].Y) { } else if(boardy >= matManager.vFieldContiAct[speed][0].Y && boardy <= matManager.vFieldContiAct[speed][2].Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = POSITION_HINT; hovered_location = POSITION_HINT;
} }
} else if(boardx >= matManager.vFieldDeck[0][0].Pos.X && boardx <= matManager.vFieldDeck[0][1].Pos.X) { } else if(boardx >= matManager.vFieldDeck[0][speed][0].Pos.X && boardx <= matManager.vFieldDeck[0][speed][1].Pos.X) {
if(boardy >= matManager.vFieldDeck[0][0].Pos.Y && boardy <= matManager.vFieldDeck[0][2].Pos.Y) { if(boardy >= matManager.vFieldDeck[0][speed][0].Pos.Y && boardy <= matManager.vFieldDeck[0][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_DECK; hovered_location = LOCATION_DECK;
} else if(boardy >= matManager.vFieldGrave[0][rule][0].Pos.Y && boardy <= matManager.vFieldGrave[0][rule][2].Pos.Y) { } else if(boardy >= matManager.vFieldGrave[0][rule][speed][0].Pos.Y && boardy <= matManager.vFieldGrave[0][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_GRAVE; hovered_location = LOCATION_GRAVE;
} else if(boardy >= matManager.vFieldSzone[1][6][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][6][rule][0].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[1][6][rule][speed][2].Pos.Y && boardy <= matManager.vFieldSzone[1][6][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 6; hovered_sequence = 6;
} else if(rule == 0 && boardy >= matManager.vFieldSzone[0][7][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][2].Pos.Y) { } else if(rule == 0 && boardy >= matManager.vFieldSzone[0][7][rule][speed][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 7; hovered_sequence = 7;
} else if(rule == 1 && boardy >= matManager.vFieldRemove[0][rule][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][2].Pos.Y) { } else if(rule == 1 && boardy >= matManager.vFieldRemove[0][rule][speed][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} else if(boardy >= matManager.vFieldSzone[1][5][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][5][rule][0].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[1][5][rule][speed][2].Pos.Y && boardy <= matManager.vFieldSzone[1][5][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 5; hovered_sequence = 5;
} else if(boardy >= matManager.vFieldExtra[1][2].Pos.Y && boardy <= matManager.vFieldExtra[1][0].Pos.Y) { } else if(boardy >= matManager.vFieldExtra[1][speed][2].Pos.Y && boardy <= matManager.vFieldExtra[1][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_EXTRA; hovered_location = LOCATION_EXTRA;
} }
} else if(rule == 1 && boardx >= matManager.vFieldSzone[0][7][rule][0].Pos.X && boardx <= matManager.vFieldSzone[0][7][rule][1].Pos.X) { } else if(rule == 1 && boardx >= matManager.vFieldSzone[0][7][rule][speed][0].Pos.X && boardx <= matManager.vFieldSzone[0][7][rule][speed][1].Pos.X) {
if(boardy >= matManager.vFieldSzone[0][7][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][2].Pos.Y) { if(boardy >= matManager.vFieldSzone[0][7][rule][speed][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 7; hovered_sequence = 7;
} }
} else if(rule == 0 && boardx >= matManager.vFieldRemove[0][rule][0].Pos.X && boardx <= matManager.vFieldRemove[0][rule][1].Pos.X) { } else if(rule == 0 && boardx >= matManager.vFieldRemove[0][rule][speed][0].Pos.X && boardx <= matManager.vFieldRemove[0][rule][speed][1].Pos.X) {
if(boardy >= matManager.vFieldRemove[0][rule][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][2].Pos.Y) { if(boardy >= matManager.vFieldRemove[0][rule][speed][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} }
...@@ -2248,7 +2253,9 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2248,7 +2253,9 @@ void ClientField::GetHoverField(int x, int y) {
int sequence = (boardx - matManager.vFieldMzone[0][0][0].Pos.X) / (matManager.vFieldMzone[0][0][1].Pos.X - matManager.vFieldMzone[0][0][0].Pos.X); int sequence = (boardx - matManager.vFieldMzone[0][0][0].Pos.X) / (matManager.vFieldMzone[0][0][1].Pos.X - matManager.vFieldMzone[0][0][0].Pos.X);
if(sequence > 4) if(sequence > 4)
sequence = 4; sequence = 4;
if(boardy > matManager.vFieldSzone[0][0][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][0][rule][2].Pos.Y) { if(mainGame->dInfo.speed && (sequence == 0 || sequence== 4))
hovered_location = 0;
else if(boardy > matManager.vFieldSzone[0][0][rule][speed][0].Pos.Y && boardy <= matManager.vFieldSzone[0][0][rule][speed][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = sequence; hovered_sequence = sequence;
...@@ -2282,7 +2289,7 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2282,7 +2289,7 @@ void ClientField::GetHoverField(int x, int y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_MZONE; hovered_location = LOCATION_MZONE;
hovered_sequence = 4 - sequence; hovered_sequence = 4 - sequence;
} else if(boardy >= matManager.vFieldSzone[1][0][rule][2].Pos.Y && boardy < matManager.vFieldSzone[1][0][rule][0].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[1][0][rule][speed][2].Pos.Y && boardy < matManager.vFieldSzone[1][0][rule][speed][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 4 - sequence; hovered_sequence = 4 - sequence;
......
...@@ -1458,8 +1458,28 @@ void Game::OnResize() ...@@ -1458,8 +1458,28 @@ void Game::OnResize()
btnReplayExit->setRelativePosition(Resize(5, 105, 85, 125)); btnReplayExit->setRelativePosition(Resize(5, 105, 85, 125));
wPhase->setRelativePosition(Resize(480, 310, 855, 330)); wPhase->setRelativePosition(Resize(480, 310, 855, 330));
if(dInfo.speed) {
if(dInfo.duel_rule >= 4) {
wPhase->setRelativePosition(Resize(480, 290, 855, 350));
btnShuffle->setRelativePosition(Resize(0, 40, 50, 60));
btnDP->setRelativePosition(Resize(0, 40, 50, 60));
btnSP->setRelativePosition(Resize(0, 40, 50, 60));
btnM1->setRelativePosition(Resize(160, 20, 210, 40));
btnBP->setRelativePosition(Resize(160, 20, 210, 40));
btnM2->setRelativePosition(Resize(160, 20, 210, 40));
btnEP->setRelativePosition(Resize(310, 0, 360, 20));
} else {
btnShuffle->setRelativePosition(Resize(65, 0, 115, 20));
btnDP->setRelativePosition(Resize(65, 0, 115, 20));
btnSP->setRelativePosition(Resize(65, 0, 115, 20));
btnM1->setRelativePosition(Resize(130, 0, 180, 20));
btnBP->setRelativePosition(Resize(195, 0, 245, 20));
btnM2->setRelativePosition(Resize(260, 0, 310, 20));
btnEP->setRelativePosition(Resize(260, 0, 310, 20));
}
} else {
btnDP->setRelativePosition(Resize(0, 0, 50, 20)); btnDP->setRelativePosition(Resize(0, 0, 50, 20));
if (dInfo.duel_rule >= 4) { if(dInfo.duel_rule >= 4) {
btnSP->setRelativePosition(Resize(0, 0, 50, 20)); btnSP->setRelativePosition(Resize(0, 0, 50, 20));
btnM1->setRelativePosition(Resize(160, 0, 210, 20)); btnM1->setRelativePosition(Resize(160, 0, 210, 20));
btnBP->setRelativePosition(Resize(160, 0, 210, 20)); btnBP->setRelativePosition(Resize(160, 0, 210, 20));
...@@ -1472,6 +1492,7 @@ void Game::OnResize() ...@@ -1472,6 +1492,7 @@ void Game::OnResize()
} }
btnEP->setRelativePosition(Resize(320, 0, 370, 20)); btnEP->setRelativePosition(Resize(320, 0, 370, 20));
btnShuffle->setRelativePosition(Resize(0, 0, 50, 20)); btnShuffle->setRelativePosition(Resize(0, 0, 50, 20));
}
btnSpectatorSwap->setRelativePosition(Resize(205, 100, 295, 135)); btnSpectatorSwap->setRelativePosition(Resize(205, 100, 295, 135));
btnChainAlways->setRelativePosition(Resize(205, 140, 295, 175)); btnChainAlways->setRelativePosition(Resize(205, 140, 295, 175));
btnChainIgnore->setRelativePosition(Resize(205, 100, 295, 135)); btnChainIgnore->setRelativePosition(Resize(205, 100, 295, 135));
......
...@@ -55,6 +55,7 @@ struct DuelInfo { ...@@ -55,6 +55,7 @@ struct DuelInfo {
int lp[2]; int lp[2];
int startlp; int startlp;
int duel_rule; int duel_rule;
int speed = false;
int turn; int turn;
short curMsg; short curMsg;
wchar_t hostname[20]; wchar_t hostname[20];
......
...@@ -32,10 +32,14 @@ bool ImageManager::Initial() { ...@@ -32,10 +32,14 @@ bool ImageManager::Initial() {
tBackGround_deck = driver->getTexture("textures/bg_deck.jpg"); tBackGround_deck = driver->getTexture("textures/bg_deck.jpg");
if(!tBackGround_deck) if(!tBackGround_deck)
tBackGround_deck = tBackGround; tBackGround_deck = tBackGround;
tField[0] = driver->getTexture("textures/field2.png"); tField[0][0] = driver->getTexture("textures/field2.png");
tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png"); tFieldTransparent[0][0] = driver->getTexture("textures/field-transparent2.png");
tField[1] = driver->getTexture("textures/field3.png"); tField[0][1] = driver->getTexture("textures/field3.png");
tFieldTransparent[1] = driver->getTexture("textures/field-transparent3.png"); tFieldTransparent[0][1] = driver->getTexture("textures/field-transparent3.png");
tField[1][0] = driver->getTexture("textures/fieldSP2.png");
tFieldTransparent[1][0] = driver->getTexture("textures/field-transparentSP2.png");
tField[1][1] = driver->getTexture("textures/fieldSP3.png");
tFieldTransparent[1][1] = driver->getTexture("textures/field-transparentSP3.png");
return true; return true;
} }
void ImageManager::SetDevice(irr::IrrlichtDevice* dev) { void ImageManager::SetDevice(irr::IrrlichtDevice* dev) {
......
...@@ -40,8 +40,8 @@ public: ...@@ -40,8 +40,8 @@ public:
irr::video::ITexture* tBackGround; irr::video::ITexture* tBackGround;
irr::video::ITexture* tBackGround_menu; irr::video::ITexture* tBackGround_menu;
irr::video::ITexture* tBackGround_deck; irr::video::ITexture* tBackGround_deck;
irr::video::ITexture* tField[2]; irr::video::ITexture* tField[2][2];
irr::video::ITexture* tFieldTransparent[2]; irr::video::ITexture* tFieldTransparent[2][2];
}; };
extern ImageManager imageManager; extern ImageManager imageManager;
......
...@@ -21,9 +21,12 @@ Materials::Materials() { ...@@ -21,9 +21,12 @@ Materials::Materials() {
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);
SetS3DVertex(vFieldSpell, 1.2f, -3.2f, 6.7f, 3.2f, 0, 1, 0, 0, 1, 1); SetS3DVertex(vFieldSpell[0], 1.2f, -3.2f, 6.7f, 3.2f, 0, 1, 0, 0, 1, 1);
SetS3DVertex(vFieldSpell1, 1.2f, 0.8f, 6.7f, 3.2f, 0, 1, 0, 0.2f, 1, 0.63636f); SetS3DVertex(vFieldSpell[1], 2.3f, -3.2f, 5.6f, 3.2f, 0, 1, 0, 0, 1, 1);
SetS3DVertex(vFieldSpell2, 1.2f, -3.2f, 6.7f, -0.8f, 0, 1, 1, 0.63636f, 0, 0.2f); SetS3DVertex(vFieldSpell1[0], 1.2f, 0.8f, 6.7f, 3.2f, 0, 1, 0, 0.2f, 1, 0.63636f);
SetS3DVertex(vFieldSpell1[1], 2.3f, 0.8f, 5.6f, 3.2f, 0, 1, 0, 0.2f, 1, 0.63636f);
SetS3DVertex(vFieldSpell2[0], 1.2f, -3.2f, 6.7f, -0.8f, 0, 1, 1, 0.63636f, 0, 0.2f);
SetS3DVertex(vFieldSpell2[1], 2.3f, -3.2f, 5.6f, -0.8f, 0, 1, 1, 0.63636f, 0, 0.2f);
/* /*
//background grids //background grids
...@@ -182,65 +185,108 @@ Materials::Materials() { ...@@ -182,65 +185,108 @@ Materials::Materials() {
iRectangle[4] = 1; iRectangle[4] = 1;
iRectangle[5] = 3; iRectangle[5] = 3;
SetS3DVertex(vFieldDeck[0], 6.9f, 2.7f, 7.7f, 3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldDeck[0][0], 6.9f, 2.7f, 7.7f, 3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldDeck[0][1], 5.8f, 2.7f, 6.6f, 3.9f, 0, 1, 0, 0, 0, 0);
//grave //grave
SetS3DVertex(vFieldGrave[0][0], 6.9f, 0.1f, 7.7f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldGrave[0][0][0], 6.9f, 0.1f, 7.7f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[0][1], 6.9f, 1.4f, 7.7f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldGrave[0][1][0], 6.9f, 1.4f, 7.7f, 2.6f, 0, 1, 0, 0, 0, 0);
//speed duel grave
SetS3DVertex(vFieldGrave[0][0][1], 5.8f, 0.1f, 6.6f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[0][1][1], 5.8f, 1.4f, 6.6f, 2.6f, 0, 1, 0, 0, 0, 0);
//extra //extra
SetS3DVertex(vFieldExtra[0], 0.2f, 2.7f, 1.0f, 3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldExtra[0][0], 0.2f, 2.7f, 1.0f, 3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldExtra[0][1], 1.3f, 2.7f, 2.1f, 3.9f, 0, 1, 0, 0, 0, 0);
//remove //remove
SetS3DVertex(vFieldRemove[0][0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[0][0][0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[0][1], 6.9f, 0.1f, 7.7f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[0][1][0], 6.9f, 0.1f, 7.7f, 1.3f, 0, 1, 0, 0, 0, 0);
//speed duel remove
SetS3DVertex(vFieldRemove[0][0][1], 6.8f, 0.1f, 7.6f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[0][1][1], 5.8f, 0.1f, 6.6f, 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][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); 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][0], 1.2f + i * 1.1f, 2.0f, 2.3f + i * 1.1f, 3.2f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][i][0][0], 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], 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][0], 1.2f + i * 1.1f, 2.0f, 2.3f + i * 1.1f, 3.2f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][i][0][1], 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][1], 1.2f + i * 1.1f, 2.0f, 2.3f + i * 1.1f, 3.2f, 0, 1, 0, 0, 0, 0);
} }
//field //field
SetS3DVertex(vFieldSzone[0][5][0], 0.2f, 0.1f, 1.0f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][5][0][0], 0.2f, 0.1f, 1.0f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][5][1], 0.2f, 1.4f, 1.0f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][5][1][0], 0.2f, 1.4f, 1.0f, 2.6f, 0, 1, 0, 0, 0, 0);
//field speed duel
SetS3DVertex(vFieldSzone[0][5][0][1], 1.3f, 0.1f, 2.1f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][5][1][1], 1.3f, 1.4f, 2.1f, 2.6f, 0, 1, 0, 0, 0, 0);
//LScale //LScale
SetS3DVertex(vFieldSzone[0][6][0], 0.2f, 1.4f, 1.0f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][6][0][0], 0.2f, 1.4f, 1.0f, 2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][6][1], 0.2f, 0.1f, 1.0f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][6][1][0], 0.2f, 0.1f, 1.0f, 1.3f, 0, 1, 0, 0, 0, 0);
//LScale speed duel
SetS3DVertex(vFieldSzone[0][6][0][1], 1.3f, 1.4f, 2.1f, 2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][6][1][1], 1.3f, 0.1f, 2.1f, 1.3f, 0, 1, 0, 0, 0, 0);
//RScale //RScale
SetS3DVertex(vFieldSzone[0][7][0], 6.9f, 1.4f, 7.7f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][7][0][0], 6.9f, 1.4f, 7.7f, 2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][7][1], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][7][1][0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0);
//RScale speed duel
SetS3DVertex(vFieldSzone[0][7][0][1], 5.8f, 1.4f, 6.6f, 2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[0][7][1][1], 6.8f, 0.1f, 7.6f, 1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldDeck[1], 1.0f, -2.7f, 0.2f, -3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldDeck[1][0], 1.0f, -2.7f, 0.2f, -3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldDeck[1][1], 2.1f, -2.7f, 1.3f, -3.9f, 0, 1, 0, 0, 0, 0);
//grave //grave
SetS3DVertex(vFieldGrave[1][0], 1.0f, -0.1f, 0.2f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldGrave[1][0][0], 1.0f, -0.1f, 0.2f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[1][1], 1.0f, -1.4f, 0.2f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldGrave[1][1][0], 1.0f, -1.4f, 0.2f, -2.6f, 0, 1, 0, 0, 0, 0);
//speed duel grave
SetS3DVertex(vFieldGrave[1][0][1], 2.1f, -0.1f, 1.3f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[1][1][1], 2.1f, -1.4f, 1.3f, -2.6f, 0, 1, 0, 0, 0, 0);
//extra //extra
SetS3DVertex(vFieldExtra[1], 7.7f, -2.7f, 6.9f, -3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldExtra[1][0], 7.7f, -2.7f, 6.9f, -3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldExtra[1][1], 6.6f, -2.7f, 5.8f, -3.9f, 0, 1, 0, 0, 0, 0);
//remove //remove
SetS3DVertex(vFieldRemove[1][0], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[1][0][0], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[1][1], 1.0f, -0.1f, 0.2f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldRemove[1][1][0], 1.0f, -0.1f, 0.2f, -1.3f, 0, 1, 0, 0, 0, 0);
//speed duel remove
SetS3DVertex(vFieldRemove[1][0][1], 1.1f, -0.1f, 0.3f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[1][1][1], 2.1f, -0.1f, 1.3f, -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][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); 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][0], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][i][0][0], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][i][1], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][i][1][0], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][i][0][1], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][i][1][1], 6.7f - i * 1.1f, -2.0f, 5.6f - i * 1.1f, -3.2f, 0, 1, 0, 0, 0, 0);
} }
//field //field
SetS3DVertex(vFieldSzone[1][5][0], 7.7f, -0.1f, 6.9f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][5][0][0], 7.7f, -0.1f, 6.9f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][5][1], 7.7f, -1.4f, 6.9f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][5][1][0], 7.7f, -1.4f, 6.9f, -2.6f, 0, 1, 0, 0, 0, 0);
//field speed duel
SetS3DVertex(vFieldSzone[1][5][0][1], 6.6f, -0.1f, 5.8f, -1.3f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][5][1][1], 6.6f, -1.4f, 5.8f, -2.6f, 0, 1, 0, 0, 0, 0);
//LScale //LScale
SetS3DVertex(vFieldSzone[1][6][0], 7.7f, -1.4f, 6.9f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][6][0][0], 7.7f, -1.4f, 6.9f, -2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][6][1], 7.7f, -0.1f, 6.9f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][6][1][0], 7.7f, -0.1f, 6.9f, -1.3f, 0, 1, 0, 0, 0, 0);
//LScale speed duel
SetS3DVertex(vFieldSzone[1][6][0][1], 6.6f, -1.4f, 5.8f, -2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][6][1][1], 6.6f, -0.1f, 5.8f, -1.3f, 0, 1, 0, 0, 0, 0);
//RScale //RScale
SetS3DVertex(vFieldSzone[1][7][0], 1.0f, -1.4f, 0.2f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][7][0][0], 1.0f, -1.4f, 0.2f, -2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][7][1], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][7][1][0], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0);
//RScale speed duel
SetS3DVertex(vFieldSzone[1][7][0][1], 2.1f, -1.4f, 1.3f, -2.6f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldSzone[1][7][1][1], 1.1f, -0.1f, 0.3f, -1.3f, 0, 1, 0, 0, 0, 0);
//conti_act //conti_act
vFieldContiAct[0] = vector3df(-0.8f, 0.1f, 0.0f); vFieldContiAct[0][0] = vector3df(-0.8f, 0.1f, 0.0f);
vFieldContiAct[1] = vector3df(0.0f, 0.1f, 0.0f); vFieldContiAct[0][1] = vector3df(0.0f, 0.1f, 0.0f);
vFieldContiAct[2] = vector3df(-0.8f, 1.3f, 0.0f); vFieldContiAct[0][2] = vector3df(-0.8f, 1.3f, 0.0f);
vFieldContiAct[3] = vector3df(0.0f, 1.3f, 0.0f); vFieldContiAct[0][3] = vector3df(0.0f, 1.3f, 0.0f);
//conti_act speed
vFieldContiAct[1][0] = vector3df(0.3f, 0.1f, 0.0f);
vFieldContiAct[1][1] = vector3df(1.1f, 0.1f, 0.0f);
vFieldContiAct[1][2] = vector3df(0.3f, 1.3f, 0.0f);
vFieldContiAct[1][3] = vector3df(1.1f, 1.3f, 0.0f);
for(int i = 0; i < 40; ++i) for(int i = 0; i < 40; ++i)
......
...@@ -16,17 +16,17 @@ public: ...@@ -16,17 +16,17 @@ public:
S3DVertex vChainNum[4]; S3DVertex vChainNum[4];
S3DVertex vActivate[4]; S3DVertex vActivate[4];
S3DVertex vField[4]; S3DVertex vField[4];
S3DVertex vFieldSpell[4]; S3DVertex vFieldSpell[2][4];
S3DVertex vFieldSpell1[4]; S3DVertex vFieldSpell1[2][4];
S3DVertex vFieldSpell2[4]; S3DVertex vFieldSpell2[2][4];
//S3DVertex vBackLine[76]; //S3DVertex vBackLine[76];
S3DVertex vFieldDeck[2][4]; S3DVertex vFieldDeck[2][2][4];
S3DVertex vFieldGrave[2][2][4]; S3DVertex vFieldGrave[2][2][2][4];
S3DVertex vFieldExtra[2][4]; S3DVertex vFieldExtra[2][2][4];
S3DVertex vFieldRemove[2][2][4]; S3DVertex vFieldRemove[2][2][2][4];
S3DVertex vFieldMzone[2][7][4]; S3DVertex vFieldMzone[2][7][4];
S3DVertex vFieldSzone[2][8][2][4]; S3DVertex vFieldSzone[2][8][2][2][4];
irr::core::vector3df vFieldContiAct[4]; irr::core::vector3df vFieldContiAct[2][4];
S3DVertex vArrow[40]; S3DVertex vArrow[40];
SColor c2d[4]; SColor c2d[4];
u16 iRectangle[6]; u16 iRectangle[6];
......
textures/field-transparent2.png

1.95 KB | W: | H:

textures/field-transparent2.png

137 KB | W: | H:

textures/field-transparent2.png
textures/field-transparent2.png
textures/field-transparent2.png
textures/field-transparent2.png
  • 2-up
  • Swipe
  • Onion skin
textures/field-transparent3.png

15.9 KB | W: | H:

textures/field-transparent3.png

57.6 KB | W: | H:

textures/field-transparent3.png
textures/field-transparent3.png
textures/field-transparent3.png
textures/field-transparent3.png
  • 2-up
  • Swipe
  • Onion skin
textures/field2.png

3.99 KB | W: | H:

textures/field2.png

292 KB | W: | H:

textures/field2.png
textures/field2.png
textures/field2.png
textures/field2.png
  • 2-up
  • Swipe
  • Onion skin
textures/field3.png

18.4 KB | W: | H:

textures/field3.png

154 KB | W: | H:

textures/field3.png
textures/field3.png
textures/field3.png
textures/field3.png
  • 2-up
  • Swipe
  • Onion skin
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