Commit b76ddf6c authored by nanahira's avatar nanahira

Merge branch 'master' into server

parents 7b50e73b dc90615b
No preview for this file type
...@@ -998,8 +998,11 @@ void Game::DrawSpec() { ...@@ -998,8 +998,11 @@ void Game::DrawSpec() {
} else if(showcardp < showcarddif) { } else if(showcardp < showcarddif) {
DrawShadowText(lpcFont, lstr, ResizePhaseHint(660, 290, 960, 370, pos.Width), Resize(-1, -1, 0, 0), 0xffffffff); DrawShadowText(lpcFont, lstr, ResizePhaseHint(660, 290, 960, 370, pos.Width), Resize(-1, -1, 0, 0), 0xffffffff);
if(dInfo.vic_string && (showcardcode == 1 || showcardcode == 2)) { if(dInfo.vic_string && (showcardcode == 1 || showcardcode == 2)) {
driver->draw2DRectangle(0xa0000000, Resize(540, 320, 790, 340)); int w = guiFont->getDimension(dInfo.vic_string).Width;
DrawShadowText(guiFont, dInfo.vic_string, Resize(490, 320, 840, 340), Resize(-2, -1, 0, 0), 0xffffffff, 0xff000000, true, true, 0); if(w < 200)
w = 200;
driver->draw2DRectangle(0xa0000000, ResizeWin(640 - w / 2, 320, 690 + w / 2, 340));
DrawShadowText(guiFont, dInfo.vic_string, ResizeWin(640 - w / 2, 320, 690 + w / 2, 340), Resize(-2, -1, 0, 0), 0xffffffff, 0xff000000, true, true, 0);
} }
} else if(showcardp < showcarddif + 10) { } else if(showcardp < showcarddif + 10) {
int alpha = ((showcarddif + 10 - showcardp) * 25) << 24; int alpha = ((showcarddif + 10 - showcardp) * 25) << 24;
......
...@@ -2804,6 +2804,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2804,6 +2804,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);
...@@ -4091,47 +4097,45 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -4091,47 +4097,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;
int chc = 0; for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) {
for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) { if(cl == 0x10 || cl == 0x20) {
if(cl == 0x10 || cl == 0x20) { if(chit->controler == cc && chit->location == cl)
if(chit->controler == cc && chit->location == cl) chc++;
chc++; } else {
} else { if(chit->controler == cc && chit->location == cl && chit->sequence == cs)
if(chit->controler == cc && chit->location == cl && chit->sequence == cs) chc++;
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;
......
...@@ -209,7 +209,7 @@ bool Game::Initialize() { ...@@ -209,7 +209,7 @@ bool Game::Initialize() {
SetWindowsIcon(); SetWindowsIcon();
//main menu //main menu
wchar_t strbuf[256]; wchar_t strbuf[256];
myswprintf(strbuf, L"KoishiPro %X.0%X.%X Hardbase", PRO_VERSION >> 12, (PRO_VERSION >> 4) & 0xff, PRO_VERSION & 0xf); myswprintf(strbuf, L"KoishiPro %X.0%X.%X Desire", PRO_VERSION >> 12, (PRO_VERSION >> 4) & 0xff, PRO_VERSION & 0xf);
wMainMenu = env->addWindow(rect<s32>(370, 200, 650, 415), false, strbuf); wMainMenu = env->addWindow(rect<s32>(370, 200, 650, 415), false, strbuf);
wMainMenu->getCloseButton()->setVisible(false); wMainMenu->getCloseButton()->setVisible(false);
btnLanMode = env->addButton(rect<s32>(10, 30, 270, 60), wMainMenu, BUTTON_LAN_MODE, dataManager.GetSysString(1200)); btnLanMode = env->addButton(rect<s32>(10, 30, 270, 60), wMainMenu, BUTTON_LAN_MODE, dataManager.GetSysString(1200));
......
...@@ -736,7 +736,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -736,7 +736,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();
......
Subproject commit 570ef70a95be7680082df71f04f31bdc94d023c1 Subproject commit 293e533c28e4f1870444f6071643b81e1c28e639
Subproject commit a4c26982d18987f76aaddd8de249b467fe12b02e Subproject commit adeaf7f471ecd2aefd88dc895ed2f1d09dafc3c2
...@@ -534,13 +534,13 @@ ...@@ -534,13 +534,13 @@
!victory 0x4 失去连接 !victory 0x4 失去连接
!victory 0x10 「被封印的艾克佐迪亚」特殊胜利 !victory 0x10 「被封印的艾克佐迪亚」特殊胜利
!victory 0x11 「终焉的倒计时」特殊胜利 !victory 0x11 「终焉的倒计时」特殊胜利
!victory 0x12 「毒蛇神 维诺米纳迦」特殊胜利 !victory 0x12 「毒蛇神 维诺米纳迦」特殊胜利
!victory 0x13 「光之创造神 哈拉克提」特殊胜利 !victory 0x13 「光之创造神 哈拉克提」特殊胜利
!victory 0x14 「究极封印神 艾克佐迪奥斯」特殊胜利 !victory 0x14 「究极封印神 艾克佐迪奥斯」特殊胜利
!victory 0x15 「通灵盘」特殊胜利 !victory 0x15 「通灵盘」特殊胜利
!victory 0x16 「最终一战!」特殊胜利 !victory 0x16 「最终一战!」特殊胜利
!victory 0x17No.88 机关傀儡-命运狮子」特殊胜利 !victory 0x17No.88 机关傀儡-命运狮子」特殊胜利
!victory 0x18 「混沌No.88 机关傀儡-灾厄狮子」特殊胜利 !victory 0x18 「混沌No.88 机关傀儡-灾厄狮子」特殊胜利
!victory 0x19 「头奖壶7」特殊胜利 !victory 0x19 「头奖壶7」特殊胜利
!victory 0x1a 「魂之接力」特殊胜利 !victory 0x1a 「魂之接力」特殊胜利
!victory 0x1b 「鬼计惰天使」特殊胜利 !victory 0x1b 「鬼计惰天使」特殊胜利
...@@ -549,6 +549,7 @@ ...@@ -549,6 +549,7 @@
!victory 0x1e 「飞行象」特殊胜利 !victory 0x1e 「飞行象」特殊胜利
!victory 0x1f 「守护神 艾克佐迪亚」特殊胜利 !victory 0x1f 「守护神 艾克佐迪亚」特殊胜利
!victory 0x20 「真艾克佐迪亚」特殊胜利 !victory 0x20 「真艾克佐迪亚」特殊胜利
!victory 0x21 「混沌虚数No.1000 梦幻虚光神 原数天灵·原数天地」特殊胜利
!victory 0xffff 由于「%ls」获得比赛胜利 !victory 0xffff 由于「%ls」获得比赛胜利
#counters #counters
!counter 0x1 魔力指示物 !counter 0x1 魔力指示物
...@@ -602,7 +603,7 @@ ...@@ -602,7 +603,7 @@
!counter 0x31 希望剑指示物 !counter 0x31 希望剑指示物
!counter 0x32 气球指示物 !counter 0x32 气球指示物
!counter 0x33 妖仙指示物 !counter 0x33 妖仙指示物
!counter 0x34 指示物(BOX !counter 0x34 指示物(纸箱拳击手
!counter 0x35 音响指示物 !counter 0x35 音响指示物
!counter 0x36 娱乐法师指示物 !counter 0x36 娱乐法师指示物
!counter 0x37 坏兽指示物 !counter 0x37 坏兽指示物
......
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