Commit 7bab7fd2 authored by mercury233's avatar mercury233

Merge branch 'fh' into patch-deck-category

parents d690f3db 5009c68e
...@@ -28,7 +28,7 @@ endif () ...@@ -28,7 +28,7 @@ endif ()
target_link_libraries (ygopro ocgcore clzma) target_link_libraries (ygopro ocgcore clzma)
if (MSVC) if (MSVC)
target_link_libraries (ygopro irrlicht freetype sqlite3 event lua) target_link_libraries (ygopro irrlicht freetype sqlite3 event)
include_directories ( "../irrlicht/include" "../freetype/include" "../event/include" "../sqlite3" ) include_directories ( "../irrlicht/include" "../freetype/include" "../event/include" "../sqlite3" )
else () else ()
target_link_libraries (ygopro target_link_libraries (ygopro
...@@ -36,7 +36,6 @@ else () ...@@ -36,7 +36,6 @@ else ()
${FREETYPE_LIBRARIES} ${FREETYPE_LIBRARIES}
${SQLITE_LIBRARIES} ${SQLITE_LIBRARIES}
${LIBEVENT_LIBRARIES} ${LIBEVENT_LIBRARIES}
${LUA_LIBRARIES}
${OPENGL_gl_LIBRARY} ${OPENGL_gl_LIBRARY}
) )
include_directories ( include_directories (
......
...@@ -457,28 +457,26 @@ void Game::DrawMisc() { ...@@ -457,28 +457,26 @@ void Game::DrawMisc() {
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.chains.size() > 1) { 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), 0.2421875f * (i / 5));
matManager.vChainNum[1].TCoords = vector2df(0.19375f * (i % 5 + 1), 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), 0.2421875f * (i / 5 + 1)); matManager.vChainNum[3].TCoords = vector2df(0.19375f * (i % 5 + 1), 0.2421875f * (i / 5 + 1));
matManager.vChainNum[3].TCoords = vector2df(0.19375f * (i % 5 + 1), 0.2421875f * (i / 5 + 1)); driver->setMaterial(matManager.mTRTexture);
driver->setMaterial(matManager.mTRTexture); driver->setTransform(irr::video::ETS_WORLD, it);
driver->setTransform(irr::video::ETS_WORLD, it); driver->drawVertexPrimitiveList(matManager.vChainNum, 4, matManager.iRectangle, 2);
driver->drawVertexPrimitiveList(matManager.vChainNum, 4, matManager.iRectangle, 2);
}
} }
//finish button //finish button
if(btnCancelOrFinish->isVisible() && dField.select_ready) if(btnCancelOrFinish->isVisible() && dField.select_ready)
......
...@@ -409,6 +409,19 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -409,6 +409,19 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
break; break;
} }
case STOC_DECK_COUNT: {
mainGame->gMutex.lock();
int deckc = BufferIO::ReadInt16(pdata);
int extrac = BufferIO::ReadInt16(pdata);
int sidec = BufferIO::ReadInt16(pdata);
mainGame->dField.Initial(0, deckc, extrac);
deckc = BufferIO::ReadInt16(pdata);
extrac = BufferIO::ReadInt16(pdata);
sidec = BufferIO::ReadInt16(pdata);
mainGame->dField.Initial(1, deckc, extrac);
mainGame->gMutex.unlock();
break;
}
case STOC_JOIN_GAME: { case STOC_JOIN_GAME: {
STOC_JoinGame* pkt = (STOC_JoinGame*)pdata; STOC_JoinGame* pkt = (STOC_JoinGame*)pdata;
std::wstring str; std::wstring str;
...@@ -1166,6 +1179,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1166,6 +1179,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->WaitFrameSignal(40); mainGame->WaitFrameSignal(40);
mainGame->showcard = 0; mainGame->showcard = 0;
mainGame->gMutex.lock(); mainGame->gMutex.lock();
mainGame->dField.Clear();
int playertype = BufferIO::ReadInt8(pbuf); int playertype = BufferIO::ReadInt8(pbuf);
mainGame->dInfo.isFirst = (playertype & 0xf) ? false : true; mainGame->dInfo.isFirst = (playertype & 0xf) ? false : true;
if(playertype & 0xf0) if(playertype & 0xf0)
...@@ -2894,15 +2908,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2894,15 +2908,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int ct = BufferIO::ReadInt8(pbuf); int ct = BufferIO::ReadInt8(pbuf);
if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping) if(mainGame->dInfo.isReplay && mainGame->dInfo.isReplaySkiping)
return true; return true;
if (mainGame->dField.chains.size() > 1) { if(mainGame->dField.last_chain)
if (mainGame->dField.last_chain) mainGame->WaitFrameSignal(11);
mainGame->WaitFrameSignal(11); for(int i = 0; i < 5; ++i) {
for(int i = 0; i < 5; ++i) { mainGame->dField.chains[ct - 1].solved = false;
mainGame->dField.chains[ct - 1].solved = false; mainGame->WaitFrameSignal(3);
mainGame->WaitFrameSignal(3); mainGame->dField.chains[ct - 1].solved = true;
mainGame->dField.chains[ct - 1].solved = true; mainGame->WaitFrameSignal(3);
mainGame->WaitFrameSignal(3);
}
} }
mainGame->dField.last_chain = false; mainGame->dField.last_chain = false;
return true; return true;
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include "netserver.h" #include "netserver.h"
#include "single_mode.h" #include "single_mode.h"
const unsigned short PRO_VERSION = 0x1350; const unsigned short PRO_VERSION = 0x1351;
namespace ygo { namespace ygo {
...@@ -981,15 +981,15 @@ void Game::LoadExpansions() { ...@@ -981,15 +981,15 @@ void Game::LoadExpansions() {
myswprintf(fpath, L"./expansions/%ls", name); myswprintf(fpath, L"./expansions/%ls", name);
dataManager.LoadDB(fpath); dataManager.LoadDB(fpath);
} }
if(!isdir && wcsrchr(name, '.') && !mywcsncasecmp(wcsrchr(name, '.'), L".zip", 4)) { if(!isdir && wcsrchr(name, '.') && (!mywcsncasecmp(wcsrchr(name, '.'), L".zip", 4) || !mywcsncasecmp(wcsrchr(name, '.'), L".ypk", 4))) {
wchar_t fpath[1024]; wchar_t fpath[1024];
myswprintf(fpath, L"./expansions/%ls", name); myswprintf(fpath, L"./expansions/%ls", name);
#ifdef _WIN32 #ifdef _WIN32
dataManager.FileSystem->addFileArchive(fpath, true, false); dataManager.FileSystem->addFileArchive(fpath, true, false, EFAT_ZIP);
#else #else
char upath[1024]; char upath[1024];
BufferIO::EncodeUTF8(fpath, upath); BufferIO::EncodeUTF8(fpath, upath);
dataManager.FileSystem->addFileArchive(upath, true, false); dataManager.FileSystem->addFileArchive(upath, true, false, EFAT_ZIP);
#endif #endif
} }
}); });
......
...@@ -185,6 +185,7 @@ public: ...@@ -185,6 +185,7 @@ public:
#define STOC_TP_RESULT 0x6 #define STOC_TP_RESULT 0x6
#define STOC_CHANGE_SIDE 0x7 #define STOC_CHANGE_SIDE 0x7
#define STOC_WAITING_SIDE 0x8 #define STOC_WAITING_SIDE 0x8
#define STOC_DECK_COUNT 0x9
#define STOC_CREATE_GAME 0x11 #define STOC_CREATE_GAME 0x11
#define STOC_JOIN_GAME 0x12 #define STOC_JOIN_GAME 0x12
#define STOC_TYPE_CHANGE 0x13 #define STOC_TYPE_CHANGE 0x13
......
...@@ -328,6 +328,20 @@ void SingleDuel::StartDuel(DuelPlayer* dp) { ...@@ -328,6 +328,20 @@ void SingleDuel::StartDuel(DuelPlayer* dp) {
(*oit)->state = CTOS_LEAVE_GAME; (*oit)->state = CTOS_LEAVE_GAME;
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
} }
char deckbuff[12];
char* pbuf = deckbuff;
BufferIO::WriteInt16(pbuf, pdeck[0].main.size());
BufferIO::WriteInt16(pbuf, pdeck[0].extra.size());
BufferIO::WriteInt16(pbuf, pdeck[0].side.size());
BufferIO::WriteInt16(pbuf, pdeck[1].main.size());
BufferIO::WriteInt16(pbuf, pdeck[1].extra.size());
BufferIO::WriteInt16(pbuf, pdeck[1].side.size());
NetServer::SendBufferToPlayer(players[0], STOC_DECK_COUNT, deckbuff, 12);
char tempbuff[6];
memcpy(tempbuff, deckbuff, 6);
memcpy(deckbuff, deckbuff + 6, 6);
memcpy(deckbuff + 6, tempbuff, 6);
NetServer::SendBufferToPlayer(players[1], STOC_DECK_COUNT, deckbuff, 12);
NetServer::SendPacketToPlayer(players[0], STOC_SELECT_HAND); NetServer::SendPacketToPlayer(players[0], STOC_SELECT_HAND);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
hand_result[0] = 0; hand_result[0] = 0;
......
...@@ -285,6 +285,22 @@ void TagDuel::StartDuel(DuelPlayer* dp) { ...@@ -285,6 +285,22 @@ void TagDuel::StartDuel(DuelPlayer* dp) {
(*oit)->state = CTOS_LEAVE_GAME; (*oit)->state = CTOS_LEAVE_GAME;
NetServer::ReSendToPlayer(*oit); NetServer::ReSendToPlayer(*oit);
} }
char deckbuff[12];
char* pbuf = deckbuff;
BufferIO::WriteInt16(pbuf, pdeck[0].main.size());
BufferIO::WriteInt16(pbuf, pdeck[0].extra.size());
BufferIO::WriteInt16(pbuf, pdeck[0].side.size());
BufferIO::WriteInt16(pbuf, pdeck[2].main.size());
BufferIO::WriteInt16(pbuf, pdeck[2].extra.size());
BufferIO::WriteInt16(pbuf, pdeck[2].side.size());
NetServer::SendBufferToPlayer(players[0], STOC_DECK_COUNT, deckbuff, 12);
NetServer::ReSendToPlayer(players[1]);
char tempbuff[6];
memcpy(tempbuff, deckbuff, 6);
memcpy(deckbuff, deckbuff + 6, 6);
memcpy(deckbuff + 6, tempbuff, 6);
NetServer::SendBufferToPlayer(players[2], STOC_DECK_COUNT, deckbuff, 12);
NetServer::ReSendToPlayer(players[3]);
NetServer::SendPacketToPlayer(players[0], STOC_SELECT_HAND); NetServer::SendPacketToPlayer(players[0], STOC_SELECT_HAND);
NetServer::ReSendToPlayer(players[2]); NetServer::ReSendToPlayer(players[2]);
hand_result[0] = 0; hand_result[0] = 0;
......
Subproject commit e80d151ae5d9efba5cee6e2360e3679e1789d429 Subproject commit 4d2e3603745b8e92ab0248c9ff49174d0cbb4f5a
Subproject commit b820812a1ffb14eeb0022b2336c0c8c93d856d5c Subproject commit 216c4754fb203fe2f598fee02ace05e54f7cea55
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