Commit e18ef4be authored by fallenstardust's avatar fallenstardust

update gframe

parent dd9e6bbf
...@@ -483,7 +483,7 @@ void Game::DrawShadowText(CGUITTFont * font, const core::stringw & text, const c ...@@ -483,7 +483,7 @@ void Game::DrawShadowText(CGUITTFont * font, const core::stringw & text, const c
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;
irr::core::matrix4 im, ic, it; irr::core::matrix4 im, ic, it, ig;
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);
...@@ -528,7 +528,7 @@ void Game::DrawMisc() { ...@@ -528,7 +528,7 @@ void Game::DrawMisc() {
} }
if(dField.conti_act) { if(dField.conti_act) {
irr::core::vector3df pos = vector3df((matManager.vFieldContiAct[0].X + matManager.vFieldContiAct[1].X) / 2, irr::core::vector3df pos = vector3df((matManager.vFieldContiAct[0].X + matManager.vFieldContiAct[1].X) / 2,
(matManager.vFieldContiAct[0].Y + matManager.vFieldContiAct[2].Y) / 2, 0); (matManager.vFieldContiAct[0].Y + matManager.vFieldContiAct[2].Y) / 2, 0);
im.setRotationRadians(irr::core::vector3df(0, 0, 0)); im.setRotationRadians(irr::core::vector3df(0, 0, 0));
for(auto cit = dField.conti_cards.begin(); cit != dField.conti_cards.end(); ++cit) { for(auto cit = dField.conti_cards.begin(); cit != dField.conti_cards.end(); ++cit) {
im.setTranslation(pos); im.setTranslation(pos);
...@@ -544,34 +544,43 @@ void Game::DrawMisc() { ...@@ -544,34 +544,43 @@ void Game::DrawMisc() {
driver->setMaterial(matManager.mTexture); driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vActivate, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vActivate, 4, matManager.iRectangle, 2);
} }
if(dField.chains.size() > 1 || dField.chains.size() == 1 && dField.chains[0].need_distinguish || mainGame->gameConf.draw_single_chain) { if(dField.chains.size() > 1 || mainGame->gameConf.draw_single_chain) {
for (size_t i = 0; i < dField.chains.size(); ++i) { for(size_t i = 0; i < dField.chains.size(); ++i) {
if (dField.chains[i].solved) if(dField.chains[i].solved)
break; break;
matManager.mTRTexture.setTexture(0, imageManager.tChain); matManager.mTRTexture.setTexture(0, imageManager.tChain);
matManager.mTRTexture.AmbientColor = 0xffffff00; matManager.mTRTexture.AmbientColor = 0xffffff00;
ic.setRotationRadians(act_rot); ic.setRotationRadians(act_rot);
ic.setTranslation(dField.chains[i].chain_pos); ic.setTranslation(dField.chains[i].chain_pos);
driver->setMaterial(matManager.mTRTexture); driver->setMaterial(matManager.mTRTexture);
driver->setTransform(irr::video::ETS_WORLD, ic); driver->setTransform(irr::video::ETS_WORLD, ic);
driver->drawVertexPrimitiveList(matManager.vSymbol, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vSymbol, 4, matManager.iRectangle, 2);
it.setScale(0.6f); it.setScale(0.6f);
it.setTranslation(dField.chains[i].chain_pos); it.setTranslation(dField.chains[i].chain_pos);
matManager.mTRTexture.setTexture(0, imageManager.tNumber); matManager.mTRTexture.setTexture(0, imageManager.tNumber);
matManager.vChainNum[0].TCoords = vector2df(0.19375f * (i % 5), 0.2421875f * (i / 5)); matManager.vChainNum[0].TCoords = vector2df(0.19375f * (i % 5), 0.2421875f * (i / 5));
matManager.vChainNum[1].TCoords = vector2df(0.19375f * (i % 5 + 1), matManager.vChainNum[1].TCoords = vector2df(0.19375f * (i % 5 + 1), 0.2421875f * (i / 5));
0.2421875f * (i / 5)); matManager.vChainNum[2].TCoords = vector2df(0.19375f * (i % 5), 0.2421875f * (i / 5 + 1));
matManager.vChainNum[2].TCoords = vector2df(0.19375f * (i % 5), matManager.vChainNum[3].TCoords = vector2df(0.19375f * (i % 5 + 1), 0.2421875f * (i / 5 + 1));
0.2421875f * (i / 5 + 1)); driver->setMaterial(matManager.mTRTexture);
matManager.vChainNum[3].TCoords = vector2df(0.19375f * (i % 5 + 1), driver->setTransform(irr::video::ETS_WORLD, it);
0.2421875f * (i / 5 + 1)); driver->drawVertexPrimitiveList(matManager.vChainNum, 4, matManager.iRectangle, 2);
driver->setMaterial(matManager.mTRTexture); }
driver->setTransform(irr::video::ETS_WORLD, it); }
driver->drawVertexPrimitiveList(matManager.vChainNum, 4, matManager.iRectangle, 2); if(dField.cant_check_grave) {
} matManager.mTexture.setTexture(0, imageManager.tNegated);
} driver->setMaterial(matManager.mTexture);
ig.setTranslation(vector3df((matManager.vFieldGrave[0][rule][0].Pos.X + matManager.vFieldGrave[0][rule][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));
driver->setTransform(irr::video::ETS_WORLD, ig);
driver->drawVertexPrimitiveList(matManager.vNegate, 4, matManager.iRectangle, 2);
ig.setTranslation(vector3df((matManager.vFieldGrave[1][rule][0].Pos.X + matManager.vFieldGrave[1][rule][1].Pos.X) / 2,
(matManager.vFieldGrave[1][rule][0].Pos.Y + matManager.vFieldGrave[1][rule][2].Pos.Y) / 2, dField.grave[1].size() * 0.01f + 0.02f));
driver->setTransform(irr::video::ETS_WORLD, ig);
driver->drawVertexPrimitiveList(matManager.vNegate, 4, matManager.iRectangle, 2);
}
//finish button //finish button
if(btnCancelOrFinish->isVisible()) if(btnCancelOrFinish->isVisible() && dField.select_ready)
DrawSelectionLine(btnCancelOrFinish, 4, 0xff00ff00); DrawSelectionLine(btnCancelOrFinish, 4, 0xff00ff00);
//lp bar //lp bar
//driver->draw2DImage(imageManager.tLPFrame, recti(400 * mainGame->xScale, 10 * mainGame->yScale, 629 * mainGame->xScale, 30 * mainGame->yScale), recti(0, 0, 200, 20), 0, 0, true); //driver->draw2DImage(imageManager.tLPFrame, recti(400 * mainGame->xScale, 10 * mainGame->yScale, 629 * mainGame->xScale, 30 * mainGame->yScale), recti(0, 0, 200, 20), 0, 0, true);
...@@ -1046,7 +1055,7 @@ void Game::DrawSpec() { ...@@ -1046,7 +1055,7 @@ void Game::DrawSpec() {
} else if(showcardp < showcarddif) { } else if(showcardp < showcarddif) {
DrawShadowText(lpcFont, lstr, recti(550 * mainGame->xScale - pos.Width / 2, 270 * mainGame->yScale, 850 * mainGame->xScale, 350 * mainGame->yScale), recti(0, 1 * mainGame->yScale, 2 * mainGame->xScale, 0), 0xffffffff, 0xff000000, true, false); DrawShadowText(lpcFont, lstr, recti(550 * mainGame->xScale - pos.Width / 2, 270 * mainGame->yScale, 850 * mainGame->xScale, 350 * mainGame->yScale), recti(0, 1 * mainGame->yScale, 2 * mainGame->xScale, 0), 0xffffffff, 0xff000000, true, false);
if(dInfo.vic_string && (showcardcode == 1 || showcardcode == 2)) { if(dInfo.vic_string && (showcardcode == 1 || showcardcode == 2)) {
driver->draw2DRectangle(0xa0000000, recti(540 * mainGame->xScale, 320 * mainGame->yScale, 800 * mainGame->xScale, 340 * mainGame->yScale)); driver->draw2DRectangle(0xa0000000, recti(500 * mainGame->xScale, 320 * mainGame->yScale, 840 * mainGame->xScale, 340 * mainGame->yScale));
DrawShadowText(guiFont, dInfo.vic_string, recti(500 * mainGame->xScale, 320 * mainGame->yScale, 840 * mainGame->xScale, 340 * mainGame->yScale), recti(0, 1 * mainGame->yScale, 2 * mainGame->xScale, 0), 0xffffffff, 0xff000000, true, true); DrawShadowText(guiFont, dInfo.vic_string, recti(500 * mainGame->xScale, 320 * mainGame->yScale, 840 * mainGame->xScale, 340 * mainGame->yScale), recti(0, 1 * mainGame->yScale, 2 * mainGame->xScale, 0), 0xffffffff, 0xff000000, true, true);
} }
} else if(showcardp < showcarddif + 10) { } else if(showcardp < showcarddif + 10) {
......
...@@ -2589,6 +2589,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2589,6 +2589,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->SetCode(code); pcard->SetCode(code);
pcard->counters.clear(); pcard->counters.clear();
pcard->ClearTarget(); pcard->ClearTarget();
if(pcard->equipTarget) {
pcard->equipTarget->is_showequip = false;
pcard->equipTarget->equipped.erase(pcard);
pcard->equipTarget = 0;
}
pcard->is_showequip = false;
pcard->is_showtarget = false; pcard->is_showtarget = false;
pcard->is_showchaintarget = false; pcard->is_showchaintarget = false;
ClientCard* olcard = mainGame->dField.GetCard(cc, cl & 0x7f, cs); ClientCard* olcard = mainGame->dField.GetCard(cc, cl & 0x7f, cs);
...@@ -3907,48 +3913,45 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3907,48 +3913,45 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.extra_p_count[p] = val; mainGame->dField.extra_p_count[p] = val;
} }
mainGame->dField.RefreshAllCards(); mainGame->dField.RefreshAllCards();
val = BufferIO::ReadInt8(pbuf); //chains, always 0 in single mode val = BufferIO::ReadInt8(pbuf); //chains
if(!mainGame->dInfo.isSingleMode) { for(int i = 0; i < val; ++i) {
for(int i = 0; i < val; ++i) { unsigned int code = (unsigned int)BufferIO::ReadInt32(pbuf);
unsigned int code = (unsigned int)BufferIO::ReadInt32(pbuf); int pcc = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int pcc = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf)); int pcl = BufferIO::ReadInt8(pbuf);
int pcl = BufferIO::ReadInt8(pbuf); int pcs = BufferIO::ReadInt8(pbuf);
int pcs = BufferIO::ReadInt8(pbuf); int subs = BufferIO::ReadInt8(pbuf);
int subs = BufferIO::ReadInt8(pbuf); int cc = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int cc = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf)); int cl = BufferIO::ReadInt8(pbuf);
int cl = BufferIO::ReadInt8(pbuf); int cs = BufferIO::ReadInt8(pbuf);
int cs = BufferIO::ReadInt8(pbuf); int desc = BufferIO::ReadInt32(pbuf);
int desc = BufferIO::ReadInt32(pbuf); ClientCard* pcard = mainGame->dField.GetCard(pcc, pcl, pcs, subs);
ClientCard* pcard = mainGame->dField.GetCard(pcc, pcl, pcs, subs); mainGame->dField.current_chain.chain_card = pcard;
mainGame->dField.current_chain.chain_card = pcard; mainGame->dField.current_chain.code = code;
mainGame->dField.current_chain.code = code; mainGame->dField.current_chain.desc = desc;
mainGame->dField.current_chain.desc = desc; mainGame->dField.current_chain.controler = cc;
mainGame->dField.current_chain.controler = cc; mainGame->dField.current_chain.location = cl;
mainGame->dField.current_chain.location = cl; mainGame->dField.current_chain.sequence = cs;
mainGame->dField.current_chain.sequence = cs; mainGame->dField.GetChainLocation(cc, cl, cs, &mainGame->dField.current_chain.chain_pos);
mainGame->dField.GetChainLocation(cc, cl, cs, &mainGame->dField.current_chain.chain_pos); mainGame->dField.current_chain.solved = false;
mainGame->dField.current_chain.solved = false; int chc = 0;
mainGame->dField.current_chain.need_distinguish = true; for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) {
int chc = 0; if(cl == 0x10 || cl == 0x20) {
for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) { if(chit->controler == cc && chit->location == cl)
if(cl == 0x10 || cl == 0x20) { chc++;
if(chit->controler == cc && chit->location == cl) } else {
chc++; if(chit->controler == cc && chit->location == cl && chit->sequence == cs)
} else { chc++;
if(chit->controler == cc && chit->location == cl && chit->sequence == cs)
chc++;
}
} }
if(cl == LOCATION_HAND)
mainGame->dField.current_chain.chain_pos.X += 0.35f;
else
mainGame->dField.current_chain.chain_pos.Y += chc * 0.25f;
mainGame->dField.chains.push_back(mainGame->dField.current_chain);
}
if(val) {
myswprintf(event_string, dataManager.GetSysString(1609), dataManager.GetName(mainGame->dField.current_chain.code));
mainGame->dField.last_chain = true;
} }
if(cl == LOCATION_HAND)
mainGame->dField.current_chain.chain_pos.X += 0.35f;
else
mainGame->dField.current_chain.chain_pos.Y += chc * 0.25f;
mainGame->dField.chains.push_back(mainGame->dField.current_chain);
}
if(val) {
myswprintf(event_string, dataManager.GetSysString(1609), dataManager.GetName(mainGame->dField.current_chain.code));
mainGame->dField.last_chain = true;
} }
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
break; break;
......
...@@ -579,7 +579,7 @@ bool Game::Initialize(ANDROID_APP app) { ...@@ -579,7 +579,7 @@ bool Game::Initialize(ANDROID_APP app) {
btnMsgOK = env->addButton(rect<s32>(130 * xScale, 120 * yScale, 260 * xScale, 170 * yScale), wMessage, BUTTON_MSG_OK, dataManager.GetSysString(1211)); btnMsgOK = env->addButton(rect<s32>(130 * xScale, 120 * yScale, 260 * xScale, 170 * yScale), wMessage, BUTTON_MSG_OK, dataManager.GetSysString(1211));
ChangeToIGUIImageButton(btnMsgOK, imageManager.tButton_S, imageManager.tButton_S_pressed); ChangeToIGUIImageButton(btnMsgOK, imageManager.tButton_S, imageManager.tButton_S_pressed);
//system message (370) //system message (370)
wSysMessage = env->addWindow(rect<s32>(470 * xScale, 180 * yScale, 860 * xScale, 360 * yScale), false, dataManager.GetSysString(1216)); wSysMessage = env->addWindow(rect<s32>(315 * xScale, 180 * yScale, 705 * xScale, 360 * yScale), false, dataManager.GetSysString(1216));
wSysMessage->getCloseButton()->setVisible(false); wSysMessage->getCloseButton()->setVisible(false);
wSysMessage->setVisible(false); wSysMessage->setVisible(false);
ChangeToIGUIImageWindow(wSysMessage, bgSysMessage, imageManager.tDialog_L); ChangeToIGUIImageWindow(wSysMessage, bgSysMessage, imageManager.tDialog_L);
...@@ -604,7 +604,7 @@ bool Game::Initialize(ANDROID_APP app) { ...@@ -604,7 +604,7 @@ bool Game::Initialize(ANDROID_APP app) {
stQMessage->setTextAlignment(irr::gui::EGUIA_UPPERLEFT, irr::gui::EGUIA_CENTER); stQMessage->setTextAlignment(irr::gui::EGUIA_UPPERLEFT, irr::gui::EGUIA_CENTER);
btnYes = env->addButton(rect<s32>(60 * xScale, 120 * yScale, 170 * xScale, 170 * yScale), wQuery, BUTTON_YES, dataManager.GetSysString(1213)); btnYes = env->addButton(rect<s32>(60 * xScale, 120 * yScale, 170 * xScale, 170 * yScale), wQuery, BUTTON_YES, dataManager.GetSysString(1213));
ChangeToIGUIImageButton(btnYes, imageManager.tButton_S, imageManager.tButton_S_pressed); ChangeToIGUIImageButton(btnYes, imageManager.tButton_S, imageManager.tButton_S_pressed);
btnNo = env->addButton(rect<s32>(210 * xScale, 120 * yScale, 310 * xScale, 170 * yScale), wQuery, BUTTON_NO, dataManager.GetSysString(1214)); btnNo = env->addButton(rect<s32>(210 * xScale, 120 * yScale, 320 * xScale, 170 * yScale), wQuery, BUTTON_NO, dataManager.GetSysString(1214));
ChangeToIGUIImageButton(btnNo, imageManager.tButton_S, imageManager.tButton_S_pressed); ChangeToIGUIImageButton(btnNo, imageManager.tButton_S, imageManager.tButton_S_pressed);
//surrender yes/no (310) //surrender yes/no (310)
wSurrender = env->addWindow(rect<s32>(470 * xScale, 180 * yScale, 860 * xScale, 360 * yScale), false, dataManager.GetSysString(560)); wSurrender = env->addWindow(rect<s32>(470 * xScale, 180 * yScale, 860 * xScale, 360 * yScale), false, dataManager.GetSysString(560));
......
...@@ -718,7 +718,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -718,7 +718,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
} }
pbuf += 6; pbuf += 6;
} }
pbuf++; count = BufferIO::ReadInt8(pbuf);
pbuf += count * 15;
DuelClient::ClientAnalyze(offset, pbuf - offset); DuelClient::ClientAnalyze(offset, pbuf - offset);
SinglePlayReload(); SinglePlayReload();
mainGame->gMutex.lock(); mainGame->gMutex.lock();
......
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