Commit 6de51592 authored by edo9300's avatar edo9300

Fix for speed duel

parent 5fde15af
...@@ -691,10 +691,11 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir ...@@ -691,10 +691,11 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
t->Y = 0; t->Y = 0;
t->Z = 0; t->Z = 0;
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;
switch((location & 0x7f)) { switch((location & 0x7f)) {
case LOCATION_DECK: { case LOCATION_DECK: {
t->X = (matManager.vFieldDeck[controler][0].Pos.X + matManager.vFieldDeck[controler][1].Pos.X) / 2; t->X = (matManager.vFieldDeck[controler][speed][0].Pos.X + matManager.vFieldDeck[controler][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldDeck[controler][0].Pos.Y + matManager.vFieldDeck[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldDeck[controler][speed][0].Pos.Y + matManager.vFieldDeck[controler][speed][2].Pos.Y) / 2;
t->Z = deck[controler].size() * 0.01f + 0.03f; t->Z = deck[controler].size() * 0.01f + 0.03f;
break; break;
} }
...@@ -717,26 +718,26 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir ...@@ -717,26 +718,26 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
t->X = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.X + matManager.vFieldSzone[controler][sequence][rule][1].Pos.X) / 2; t->X = (matManager.vFieldSzone[controler][sequence][rule][speed][0].Pos.X + matManager.vFieldSzone[controler][sequence][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldSzone[controler][sequence][rule][speed][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][speed][2].Pos.Y) / 2;
t->Z = 0.03f; t->Z = 0.03f;
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
t->X = (matManager.vFieldGrave[controler][rule][0].Pos.X + matManager.vFieldGrave[controler][rule][1].Pos.X) / 2; t->X = (matManager.vFieldGrave[controler][rule][speed][0].Pos.X + matManager.vFieldGrave[controler][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldGrave[controler][rule][0].Pos.Y + matManager.vFieldGrave[controler][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldGrave[controler][rule][speed][0].Pos.Y + matManager.vFieldGrave[controler][rule][speed][2].Pos.Y) / 2;
t->Z = grave[controler].size() * 0.01f + 0.03f; t->Z = grave[controler].size() * 0.01f + 0.03f;
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
t->X = (matManager.vFieldRemove[controler][rule][0].Pos.X + matManager.vFieldRemove[controler][rule][1].Pos.X) / 2; t->X = (matManager.vFieldRemove[controler][rule][speed][0].Pos.X + matManager.vFieldRemove[controler][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldRemove[controler][rule][0].Pos.Y + matManager.vFieldRemove[controler][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldRemove[controler][rule][speed][0].Pos.Y + matManager.vFieldRemove[controler][rule][speed][2].Pos.Y) / 2;
t->Z = remove[controler].size() * 0.01f + 0.03f; t->Z = remove[controler].size() * 0.01f + 0.03f;
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
t->X = (matManager.vFieldExtra[controler][0].Pos.X + matManager.vFieldExtra[controler][1].Pos.X) / 2; t->X = (matManager.vFieldExtra[controler][speed][0].Pos.X + matManager.vFieldExtra[controler][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldExtra[controler][0].Pos.Y + matManager.vFieldExtra[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldExtra[controler][speed][0].Pos.Y + matManager.vFieldExtra[controler][speed][2].Pos.Y) / 2;
t->Z = extra[controler].size() * 0.01f + 0.03f; t->Z = extra[controler].size() * 0.01f + 0.03f;
break; break;
} }
...@@ -747,10 +748,11 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -747,10 +748,11 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
int sequence = pcard->sequence; int sequence = pcard->sequence;
int location = pcard->location; int location = pcard->location;
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;
switch (location) { switch (location) {
case LOCATION_DECK: { case LOCATION_DECK: {
t->X = (matManager.vFieldDeck[controler][0].Pos.X + matManager.vFieldDeck[controler][1].Pos.X) / 2; t->X = (matManager.vFieldDeck[controler][speed][0].Pos.X + matManager.vFieldDeck[controler][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldDeck[controler][0].Pos.Y + matManager.vFieldDeck[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldDeck[controler][speed][0].Pos.Y + matManager.vFieldDeck[controler][speed][2].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence; t->Z = 0.01f + 0.01f * sequence;
if (controler == 0) { if (controler == 0) {
if(deck_reversed == pcard->is_reversed) { if(deck_reversed == pcard->is_reversed) {
...@@ -779,10 +781,13 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -779,10 +781,13 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
case LOCATION_HAND: { case LOCATION_HAND: {
int count = hand[controler].size(); int count = hand[controler].size();
if (controler == 0) { if (controler == 0) {
if (count <= 6) if (count <= (6 - speed * 2))
t->X = (5.5f - 0.8f * count) / 2 + 1.55f + sequence * 0.8f; t->X = (5.5f - 0.8f * count) / 2 + 1.55f + sequence * 0.8f;
else else
t->X = 1.9f + sequence * 4.0f / (count - 1); if(speed)
t->X = 2.7f + sequence * 2.4f / (count - 1);
else
t->X = 1.9f + sequence * 4.0f / (count - 1);
if (pcard->is_hovered) { if (pcard->is_hovered) {
t->Y = 3.84f; t->Y = 3.84f;
t->Z = 0.656f + 0.001f * sequence; t->Z = 0.656f + 0.001f * sequence;
...@@ -800,10 +805,13 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -800,10 +805,13 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
r->Z = 0; r->Z = 0;
} }
} else { } else {
if (count <= 6) if (count <= (6 - speed * 2))
t->X = 6.25f - (5.5f - 0.8f * count) / 2 - sequence * 0.8f; t->X = 6.25f - (5.5f - 0.8f * count) / 2 - sequence * 0.8f;
else else
t->X = 5.9f - sequence * 4.0f / (count - 1); if(speed)
t->X = 5.1f - sequence * 2.4f / (count - 1);
else
t->X = 5.9f - sequence * 4.0f / (count - 1);
if (pcard->is_hovered) { if (pcard->is_hovered) {
t->Y = -3.56f; t->Y = -3.56f;
t->Z = 0.656f - 0.001f * sequence; t->Z = 0.656f - 0.001f * sequence;
...@@ -859,8 +867,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -859,8 +867,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
t->X = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.X + matManager.vFieldSzone[controler][sequence][rule][1].Pos.X) / 2; t->X = (matManager.vFieldSzone[controler][sequence][rule][speed][0].Pos.X + matManager.vFieldSzone[controler][sequence][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldSzone[controler][sequence][rule][speed][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][speed][2].Pos.Y) / 2;
t->Z = 0.01f; t->Z = 0.01f;
if (controler == 0) { if (controler == 0) {
r->X = 0.0f; r->X = 0.0f;
...@@ -878,8 +886,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -878,8 +886,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
t->X = (matManager.vFieldGrave[controler][rule][0].Pos.X + matManager.vFieldGrave[controler][rule][1].Pos.X) / 2; t->X = (matManager.vFieldGrave[controler][rule][speed][0].Pos.X + matManager.vFieldGrave[controler][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldGrave[controler][rule][0].Pos.Y + matManager.vFieldGrave[controler][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldGrave[controler][rule][speed][0].Pos.Y + matManager.vFieldGrave[controler][rule][speed][2].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence; t->Z = 0.01f + 0.01f * sequence;
if (controler == 0) { if (controler == 0) {
r->X = 0.0f; r->X = 0.0f;
...@@ -893,8 +901,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -893,8 +901,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
t->X = (matManager.vFieldRemove[controler][rule][0].Pos.X + matManager.vFieldRemove[controler][rule][1].Pos.X) / 2; t->X = (matManager.vFieldRemove[controler][rule][speed][0].Pos.X + matManager.vFieldRemove[controler][rule][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldRemove[controler][rule][0].Pos.Y + matManager.vFieldRemove[controler][rule][2].Pos.Y) / 2; t->Y = (matManager.vFieldRemove[controler][rule][speed][0].Pos.Y + matManager.vFieldRemove[controler][rule][speed][2].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence; t->Z = 0.01f + 0.01f * sequence;
if (controler == 0) { if (controler == 0) {
if(pcard->position & POS_FACEUP) { if(pcard->position & POS_FACEUP) {
...@@ -920,8 +928,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -920,8 +928,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
t->X = (matManager.vFieldExtra[controler][0].Pos.X + matManager.vFieldExtra[controler][1].Pos.X) / 2; t->X = (matManager.vFieldExtra[controler][speed][0].Pos.X + matManager.vFieldExtra[controler][speed][1].Pos.X) / 2;
t->Y = (matManager.vFieldExtra[controler][0].Pos.Y + matManager.vFieldExtra[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldExtra[controler][speed][0].Pos.Y + matManager.vFieldExtra[controler][speed][2].Pos.Y) / 2;
t->Z = 0.01f + 0.01f * sequence; t->Z = 0.01f + 0.01f * sequence;
if (controler == 0) { if (controler == 0) {
r->X = 0.0f; r->X = 0.0f;
...@@ -962,16 +970,16 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -962,16 +970,16 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
} }
} else { } else {
if (pcard->overlayTarget->controler == 0) { if (pcard->overlayTarget->controler == 0) {
t->X = (matManager.vFieldSzone[0][oseq][rule][0].Pos.X + matManager.vFieldSzone[0][oseq][rule][1].Pos.X) / 2 - 0.12f + 0.06f * sequence; t->X = (matManager.vFieldSzone[0][oseq][rule][speed][0].Pos.X + matManager.vFieldSzone[0][oseq][rule][speed][1].Pos.X) / 2 - 0.12f + 0.06f * sequence;
t->Y = (matManager.vFieldSzone[0][oseq][rule][0].Pos.Y + matManager.vFieldSzone[0][oseq][rule][2].Pos.Y) / 2 + 0.05f; t->Y = (matManager.vFieldSzone[0][oseq][rule][speed][0].Pos.Y + matManager.vFieldSzone[0][oseq][rule][speed][2].Pos.Y) / 2 + 0.05f;
t->Z = 0.005f + pcard->sequence * 0.0001f; t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f; r->X = 0.0f;
r->Y = 0.0f; r->Y = 0.0f;
r->Z = 0.0f; r->Z = 0.0f;
} }
else { else {
t->X = (matManager.vFieldSzone[1][oseq][rule][0].Pos.X + matManager.vFieldSzone[1][oseq][rule][1].Pos.X) / 2 + 0.12f - 0.06f * sequence; t->X = (matManager.vFieldSzone[1][oseq][rule][speed][0].Pos.X + matManager.vFieldSzone[1][oseq][rule][speed][1].Pos.X) / 2 + 0.12f - 0.06f * sequence;
t->Y = (matManager.vFieldSzone[1][oseq][rule][0].Pos.Y + matManager.vFieldSzone[1][oseq][rule][2].Pos.Y) / 2 - 0.05f; t->Y = (matManager.vFieldSzone[1][oseq][rule][speed][0].Pos.Y + matManager.vFieldSzone[1][oseq][rule][speed][2].Pos.Y) / 2 - 0.05f;
t->Z = 0.005f + pcard->sequence * 0.0001f; t->Z = 0.005f + pcard->sequence * 0.0001f;
r->X = 0.0f; r->X = 0.0f;
r->Y = 0.0f; r->Y = 0.0f;
......
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