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