Commit f4ace22c authored by mercury233's avatar mercury233 Committed by GitHub

Merge pull request #1974 from edo9300/Double-field

Added support for both mr4 and mr3 field
parents 89f298a5 79ed1214
...@@ -715,6 +715,7 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir ...@@ -715,6 +715,7 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
t->X = 0; t->X = 0;
t->Y = 0; t->Y = 0;
t->Z = 0; t->Z = 0;
int rule = (mainGame->dInfo.duel_rule >= 3) ? 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][0].Pos.X + matManager.vFieldDeck[controler][1].Pos.X) / 2;
...@@ -741,20 +742,20 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir ...@@ -741,20 +742,20 @@ void ClientField::GetChainLocation(int controler, int location, int sequence, ir
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
t->X = (matManager.vFieldSzone[controler][sequence][0].Pos.X + matManager.vFieldSzone[controler][sequence][1].Pos.X) / 2; 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][0].Pos.Y + matManager.vFieldSzone[controler][sequence][2].Pos.Y) / 2; t->Y = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][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][0].Pos.X + matManager.vFieldGrave[controler][1].Pos.X) / 2; t->X = (matManager.vFieldGrave[controler][rule][0].Pos.X + matManager.vFieldGrave[controler][rule][1].Pos.X) / 2;
t->Y = (matManager.vFieldGrave[controler][0].Pos.Y + matManager.vFieldGrave[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldGrave[controler][rule][0].Pos.Y + matManager.vFieldGrave[controler][rule][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][0].Pos.X + matManager.vFieldRemove[controler][1].Pos.X) / 2; t->X = (matManager.vFieldRemove[controler][rule][0].Pos.X + matManager.vFieldRemove[controler][rule][1].Pos.X) / 2;
t->Y = (matManager.vFieldRemove[controler][0].Pos.Y + matManager.vFieldRemove[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldRemove[controler][rule][0].Pos.Y + matManager.vFieldRemove[controler][rule][2].Pos.Y) / 2;
t->Z = remove[controler].size() * 0.01f + 0.03f; t->Z = remove[controler].size() * 0.01f + 0.03f;
break; break;
} }
...@@ -770,6 +771,7 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -770,6 +771,7 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
int controler = pcard->controler; int controler = pcard->controler;
int sequence = pcard->sequence; int sequence = pcard->sequence;
int location = pcard->location; int location = pcard->location;
int rule = (mainGame->dInfo.duel_rule >= 3) ? 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][0].Pos.X + matManager.vFieldDeck[controler][1].Pos.X) / 2;
...@@ -882,8 +884,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -882,8 +884,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][0].Pos.X + matManager.vFieldSzone[controler][sequence][1].Pos.X) / 2; 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][0].Pos.Y + matManager.vFieldSzone[controler][sequence][2].Pos.Y) / 2; t->Y = (matManager.vFieldSzone[controler][sequence][rule][0].Pos.Y + matManager.vFieldSzone[controler][sequence][rule][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;
...@@ -901,8 +903,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -901,8 +903,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
t->X = (matManager.vFieldGrave[controler][0].Pos.X + matManager.vFieldGrave[controler][1].Pos.X) / 2; t->X = (matManager.vFieldGrave[controler][rule][0].Pos.X + matManager.vFieldGrave[controler][rule][1].Pos.X) / 2;
t->Y = (matManager.vFieldGrave[controler][0].Pos.Y + matManager.vFieldGrave[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldGrave[controler][rule][0].Pos.Y + matManager.vFieldGrave[controler][rule][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;
...@@ -916,8 +918,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir ...@@ -916,8 +918,8 @@ void ClientField::GetCardLocation(ClientCard* pcard, irr::core::vector3df* t, ir
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
t->X = (matManager.vFieldRemove[controler][0].Pos.X + matManager.vFieldRemove[controler][1].Pos.X) / 2; t->X = (matManager.vFieldRemove[controler][rule][0].Pos.X + matManager.vFieldRemove[controler][rule][1].Pos.X) / 2;
t->Y = (matManager.vFieldRemove[controler][0].Pos.Y + matManager.vFieldRemove[controler][2].Pos.Y) / 2; t->Y = (matManager.vFieldRemove[controler][rule][0].Pos.Y + matManager.vFieldRemove[controler][rule][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) {
......
This diff is collapsed.
...@@ -381,6 +381,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -381,6 +381,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->ShowElement(mainGame->wHostPrepare); mainGame->ShowElement(mainGame->wHostPrepare);
mainGame->wChat->setVisible(true); mainGame->wChat->setVisible(true);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
mainGame->dInfo.duel_rule = pkt->info.duel_rule;
connect_state |= 0x4; connect_state |= 0x4;
break; break;
} }
...@@ -3175,6 +3176,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3175,6 +3176,7 @@ 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 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);
......
...@@ -2002,6 +2002,7 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2002,6 +2002,7 @@ 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);
irr::core::position2di pos(x, y); irr::core::position2di pos(x, y);
int rule = (mainGame->dInfo.duel_rule >= 3) ? 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;
...@@ -2068,49 +2069,64 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2068,49 +2069,64 @@ void ClientField::GetHoverField(int x, int y) {
if(boardy >= matManager.vFieldExtra[0][0].Pos.Y && boardy <= matManager.vFieldExtra[0][2].Pos.Y) { if(boardy >= matManager.vFieldExtra[0][0].Pos.Y && boardy <= matManager.vFieldExtra[0][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_EXTRA; hovered_location = LOCATION_EXTRA;
} else if(boardy >= matManager.vFieldSzone[0][5][0].Pos.Y && boardy <= matManager.vFieldSzone[0][5][2].Pos.Y) {//field } else if(boardy >= matManager.vFieldSzone[0][5][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][5][rule][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][0].Pos.Y && boardy <= matManager.vFieldSzone[0][6][2].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[0][6][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][6][rule][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(boardy >= matManager.vFieldSzone[1][7][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][0].Pos.Y) { } else if(rule==1 && boardy >= matManager.vFieldRemove[1][rule][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][0].Pos.Y) {
hovered_controler = 1;
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) {
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][2].Pos.Y && boardy <= matManager.vFieldGrave[1][0].Pos.Y) { } else if(boardy >= matManager.vFieldGrave[1][rule][2].Pos.Y && boardy <= matManager.vFieldGrave[1][rule][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][2].Pos.Y && boardy <= matManager.vFieldDeck[1][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_DECK; hovered_location = LOCATION_DECK;
} }
} else if(boardx >= matManager.vFieldRemove[1][1].Pos.X && boardx <= matManager.vFieldRemove[1][0].Pos.X) { } else if(rule==0 && boardx >= matManager.vFieldRemove[1][rule][1].Pos.X && boardx <= matManager.vFieldRemove[1][rule][0].Pos.X) {
if(boardy >= matManager.vFieldRemove[1][2].Pos.Y && boardy <= matManager.vFieldRemove[1][0].Pos.Y) { if(boardy >= matManager.vFieldRemove[1][rule][2].Pos.Y && boardy <= matManager.vFieldRemove[1][rule][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[0].Y && boardy <= matManager.vFieldContiAct[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) {
if(boardy >= matManager.vFieldSzone[1][7][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][7][rule][0].Pos.Y) {
hovered_controler = 1;
hovered_location = LOCATION_SZONE;
hovered_sequence = 7;
} else if(boardy >= matManager.vFieldContiAct[0].Y && boardy <= matManager.vFieldContiAct[2].Y) {
hovered_controler = 0;
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][0].Pos.X && boardx <= matManager.vFieldDeck[0][1].Pos.X) {
if(boardy >= matManager.vFieldDeck[0][0].Pos.Y && boardy <= matManager.vFieldDeck[0][2].Pos.Y) { if(boardy >= matManager.vFieldDeck[0][0].Pos.Y && boardy <= matManager.vFieldDeck[0][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_DECK; hovered_location = LOCATION_DECK;
} else if(boardy >= matManager.vFieldGrave[0][0].Pos.Y && boardy <= matManager.vFieldGrave[0][2].Pos.Y) { } else if(boardy >= matManager.vFieldGrave[0][rule][0].Pos.Y && boardy <= matManager.vFieldGrave[0][rule][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_GRAVE; hovered_location = LOCATION_GRAVE;
} else if(boardy >= matManager.vFieldSzone[1][6][2].Pos.Y && boardy <= matManager.vFieldSzone[1][6][0].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[1][6][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][6][rule][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(boardy >= matManager.vFieldSzone[0][7][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][2].Pos.Y) { } else if(rule==0 && boardy >= matManager.vFieldSzone[0][7][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][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(boardy >= matManager.vFieldSzone[1][5][2].Pos.Y && boardy <= matManager.vFieldSzone[1][5][0].Pos.Y) { } else if(rule==1 && boardy >= matManager.vFieldRemove[0][rule][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][2].Pos.Y) {
hovered_controler = 0;
hovered_location = LOCATION_REMOVED;
} else if(boardy >= matManager.vFieldSzone[1][5][rule][2].Pos.Y && boardy <= matManager.vFieldSzone[1][5][rule][0].Pos.Y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = 5; hovered_sequence = 5;
...@@ -2118,8 +2134,14 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2118,8 +2134,14 @@ void ClientField::GetHoverField(int x, int y) {
hovered_controler = 1; hovered_controler = 1;
hovered_location = LOCATION_EXTRA; hovered_location = LOCATION_EXTRA;
} }
} else if(boardx >= matManager.vFieldRemove[0][0].Pos.X && boardx <= matManager.vFieldRemove[0][1].Pos.X) { } else if(rule==0 && boardx >= matManager.vFieldSzone[0][7][rule][0].Pos.X && boardx <= matManager.vFieldSzone[0][7][rule][1].Pos.X) {
if(boardy >= matManager.vFieldRemove[0][0].Pos.Y && boardy <= matManager.vFieldRemove[0][2].Pos.Y) { if(boardy >= matManager.vFieldSzone[0][7][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][7][rule][2].Pos.Y) {
hovered_controler = 0;
hovered_location = LOCATION_SZONE;
hovered_sequence = 7;
}
} else if(rule==0 && boardx >= matManager.vFieldRemove[0][rule][0].Pos.X && boardx <= matManager.vFieldRemove[0][rule][1].Pos.X) {
if(boardy >= matManager.vFieldRemove[0][rule][0].Pos.Y && boardy <= matManager.vFieldRemove[0][rule][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_REMOVED; hovered_location = LOCATION_REMOVED;
} }
...@@ -2127,7 +2149,7 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2127,7 +2149,7 @@ 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][0].Pos.Y && boardy <= matManager.vFieldSzone[0][0][2].Pos.Y) { if(boardy > matManager.vFieldSzone[0][0][rule][0].Pos.Y && boardy <= matManager.vFieldSzone[0][0][rule][2].Pos.Y) {
hovered_controler = 0; hovered_controler = 0;
hovered_location = LOCATION_SZONE; hovered_location = LOCATION_SZONE;
hovered_sequence = sequence; hovered_sequence = sequence;
...@@ -2161,7 +2183,7 @@ void ClientField::GetHoverField(int x, int y) { ...@@ -2161,7 +2183,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][2].Pos.Y && boardy < matManager.vFieldSzone[1][0][0].Pos.Y) { } else if(boardy >= matManager.vFieldSzone[1][0][rule][2].Pos.Y && boardy < matManager.vFieldSzone[1][0][rule][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;
......
...@@ -48,6 +48,7 @@ struct DuelInfo { ...@@ -48,6 +48,7 @@ struct DuelInfo {
bool is_shuffling; bool is_shuffling;
bool tag_player[2]; bool tag_player[2];
int lp[2]; int lp[2];
int duel_rule;
int turn; int turn;
short curMsg; short curMsg;
wchar_t hostname[20]; wchar_t hostname[20];
......
...@@ -26,8 +26,10 @@ bool ImageManager::Initial() { ...@@ -26,8 +26,10 @@ bool ImageManager::Initial() {
tBackGround = driver->getTexture("textures/bg.jpg"); tBackGround = driver->getTexture("textures/bg.jpg");
tBackGround_menu = driver->getTexture("textures/bg_menu.jpg"); tBackGround_menu = driver->getTexture("textures/bg_menu.jpg");
tBackGround_deck = driver->getTexture("textures/bg_deck.jpg"); tBackGround_deck = driver->getTexture("textures/bg_deck.jpg");
tField = driver->getTexture("textures/field3.png"); tField[0] = driver->getTexture("textures/field2.png");
tFieldTransparent = driver->getTexture("textures/field-transparent3.png"); tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png");
tField[1] = driver->getTexture("textures/field3.png");
tFieldTransparent[1] = driver->getTexture("textures/field-transparent3.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; irr::video::ITexture* tField[2];
irr::video::ITexture* tFieldTransparent; irr::video::ITexture* tFieldTransparent[2];
}; };
extern ImageManager imageManager; extern ImageManager imageManager;
......
...@@ -183,38 +183,58 @@ Materials::Materials() { ...@@ -183,38 +183,58 @@ Materials::Materials() {
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], 6.9f, 2.7f, 7.7f, 3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[0], 6.9f, 0.1f, 7.7f, 1.3f, 0, 1, 0, 0, 0, 0); //grave
SetS3DVertex(vFieldGrave[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);
//extra
SetS3DVertex(vFieldExtra[0], 0.2f, 2.7f, 1.0f, 3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldExtra[0], 0.2f, 2.7f, 1.0f, 3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[0], 7.9f, 0.1f, 8.7f, 1.3f, 0, 1, 0, 0, 0, 0); //remove
SetS3DVertex(vFieldRemove[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);
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], 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.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);
}
//field //field
SetS3DVertex(vFieldSzone[0][5], 0.2f, 0.1f, 1.0f, 1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][5][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);
//LScale //LScale
SetS3DVertex(vFieldSzone[0][6], 0.2f, 1.4f, 1.0f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][6][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);
//RScale //RScale
SetS3DVertex(vFieldSzone[0][7], 6.9f, 1.4f, 7.7f, 2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[0][7][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(vFieldDeck[1], 1.0f, -2.7f, 0.2f, -3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldDeck[1], 1.0f, -2.7f, 0.2f, -3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldGrave[1], 1.0f, -0.1f, 0.2f, -1.3f, 0, 1, 0, 0, 0, 0); //grave
SetS3DVertex(vFieldGrave[1][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);
//extra
SetS3DVertex(vFieldExtra[1], 7.7f, -2.7f, 6.9f, -3.9f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldExtra[1], 7.7f, -2.7f, 6.9f, -3.9f, 0, 1, 0, 0, 0, 0);
SetS3DVertex(vFieldRemove[1], 0.0f, -0.1f, -0.8f, -1.3f, 0, 1, 0, 0, 0, 0); //remove
SetS3DVertex(vFieldRemove[1][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);
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], 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], 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);
}
//field //field
SetS3DVertex(vFieldSzone[1][5], 7.7f, -0.1f, 6.9f, -1.3f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][5][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);
//LScale //LScale
SetS3DVertex(vFieldSzone[1][6], 7.7f, -1.4f, 6.9f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][6][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);
//RScale //RScale
SetS3DVertex(vFieldSzone[1][7], 1.0f, -1.4f, 0.2f, -2.6f, 0, 1, 0, 0, 0, 0); SetS3DVertex(vFieldSzone[1][7][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);
//conti_act //conti_act
vFieldContiAct[0] = vector3df(-0.8f, 0.1f, 0.0f); vFieldContiAct[0] = vector3df(-0.8f, 0.1f, 0.0f);
......
...@@ -21,11 +21,11 @@ public: ...@@ -21,11 +21,11 @@ public:
S3DVertex vFieldSpell2[4]; S3DVertex vFieldSpell2[4];
//S3DVertex vBackLine[76]; //S3DVertex vBackLine[76];
S3DVertex vFieldDeck[2][4]; S3DVertex vFieldDeck[2][4];
S3DVertex vFieldGrave[2][4]; S3DVertex vFieldGrave[2][2][4];
S3DVertex vFieldExtra[2][4]; S3DVertex vFieldExtra[2][4];
S3DVertex vFieldRemove[2][4]; S3DVertex vFieldRemove[2][2][4];
S3DVertex vFieldMzone[2][7][4]; S3DVertex vFieldMzone[2][7][4];
S3DVertex vFieldSzone[2][8][4]; S3DVertex vFieldSzone[2][8][2][4];
irr::core::vector3df vFieldContiAct[4]; irr::core::vector3df vFieldContiAct[4];
S3DVertex vArrow[40]; S3DVertex vArrow[40];
SColor c2d[4]; SColor c2d[4];
......
...@@ -80,6 +80,8 @@ int ReplayMode::ReplayThread(void* param) { ...@@ -80,6 +80,8 @@ int ReplayMode::ReplayThread(void* param) {
int start_hand = cur_replay.ReadInt32(); int start_hand = cur_replay.ReadInt32();
int draw_count = cur_replay.ReadInt32(); int draw_count = cur_replay.ReadInt32();
int opt = cur_replay.ReadInt32(); int opt = cur_replay.ReadInt32();
int duel_rule = opt >> 16;
mainGame->dInfo.duel_rule = duel_rule - 1;
set_player_info(pduel, 0, start_lp, start_hand, draw_count); set_player_info(pduel, 0, start_lp, start_hand, draw_count);
set_player_info(pduel, 1, start_lp, start_hand, draw_count); set_player_info(pduel, 1, start_lp, start_hand, draw_count);
mainGame->dInfo.lp[0] = start_lp; mainGame->dInfo.lp[0] = start_lp;
......
...@@ -632,6 +632,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -632,6 +632,7 @@ bool SingleMode::SinglePlayAnalyze(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 val = 0; int val = 0;
for(int p = 0; p < 2; ++p) { for(int p = 0; p < 2; ++p) {
mainGame->dInfo.lp[p] = BufferIO::ReadInt32(pbuf); mainGame->dInfo.lp[p] = BufferIO::ReadInt32(pbuf);
......
textures/field-transparent3.png

321 KB | W: | H:

textures/field-transparent3.png

15.9 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/field3.png

323 KB | W: | H:

textures/field3.png

18.4 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