Commit 2f78c45d authored by mercury233's avatar mercury233

Merge branch 'master' of https://github.com/Fluorohydride/ygopro into server

parents 506c4637 c4e368c1
......@@ -138,6 +138,7 @@ public:
void UpdateChainButtons();
void ShowCancelOrFinishButton(int buttonOp);
void SetShowMark(ClientCard* pcard, bool enable);
void ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* element, irr::gui::IGUIElement* parent);
void SetResponseSelectedCards() const;
void SetResponseSelectedOption() const;
void CancelOrFinish();
......
......@@ -2714,7 +2714,17 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->showcarddif = 0;
mainGame->showcard = 1;
pcard->is_highlighting = true;
mainGame->WaitFrameSignal(30);
if(pcard->location & 0x30) {
float shift = -0.15f;
if(cc == 1) shift = 0.15f;
pcard->dPos = irr::core::vector3df(shift, 0, 0);
pcard->dRot = irr::core::vector3df(0, 0, 0);
pcard->is_moving = true;
pcard->aniFrame = 5;
mainGame->WaitFrameSignal(30);
mainGame->dField.MoveCard(pcard, 5);
} else
mainGame->WaitFrameSignal(30);
pcard->is_highlighting = false;
mainGame->dField.current_chain.chain_card = pcard;
mainGame->dField.current_chain.code = code;
......@@ -2846,6 +2856,15 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.FadeCard(pcard, 255, 5);
mainGame->WaitFrameSignal(5);
}
} else if(pcard->location & 0x30) {
float shift = -0.15f;
if(c == 1) shift = 0.15f;
pcard->dPos = irr::core::vector3df(shift, 0, 0);
pcard->dRot = irr::core::vector3df(0, 0, 0);
pcard->is_moving = true;
pcard->aniFrame = 5;
mainGame->WaitFrameSignal(30);
mainGame->dField.MoveCard(pcard, 5);
} else
mainGame->WaitFrameSignal(30);
myswprintf(textBuffer, dataManager.GetSysString(1610), dataManager.GetName(pcard->code), dataManager.FormatLocation(l, s), s + 1);
......
......@@ -976,6 +976,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(id >= BUTTON_CARD_0 && id <= BUTTON_CARD_4) {
int pos = mainGame->scrCardList->getPos() / 10;
ClientCard* mcard = selectable_cards[id - BUTTON_CARD_0 + pos];
SetShowMark(mcard, true);
ShowCardInfoInList(mcard, mainGame->btnCardSelect[id - BUTTON_CARD_0], mainGame->wCardSelect);
if(mcard->code) {
mainGame->ShowCardInfo(mcard->code);
} else {
......@@ -985,6 +987,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(id >= BUTTON_DISPLAY_0 && id <= BUTTON_DISPLAY_4) {
int pos = mainGame->scrDisplayList->getPos() / 10;
ClientCard* mcard = display_cards[id - BUTTON_DISPLAY_0 + pos];
SetShowMark(mcard, true);
ShowCardInfoInList(mcard, mainGame->btnCardDisplay[id - BUTTON_DISPLAY_0], mainGame->wCardDisplay);
if(mcard->code) {
mainGame->ShowCardInfo(mcard->code);
} else {
......@@ -993,6 +997,21 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break;
}
case irr::gui::EGET_ELEMENT_LEFT: {
if(id >= BUTTON_CARD_0 && id <= BUTTON_CARD_4) {
int pos = mainGame->scrCardList->getPos() / 10;
ClientCard* mcard = selectable_cards[id - BUTTON_CARD_0 + pos];
SetShowMark(mcard, false);
mainGame->stCardListTip->setVisible(false);
}
if(id >= BUTTON_DISPLAY_0 && id <= BUTTON_DISPLAY_4) {
int pos = mainGame->scrDisplayList->getPos() / 10;
ClientCard* mcard = display_cards[id - BUTTON_DISPLAY_0 + pos];
SetShowMark(mcard, false);
mainGame->stCardListTip->setVisible(false);
}
break;
}
default:
break;
}
......@@ -2202,6 +2221,34 @@ void ClientField::SetShowMark(ClientCard* pcard, bool enable) {
chit->chain_card->is_showchaintarget = enable;
}
}
void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* element, irr::gui::IGUIElement* parent) {
std::wstring str(L"");
if(pcard->code) {
str.append(dataManager.GetName(pcard->code));
}
for(size_t i = 0; i < chains.size(); ++i) {
wchar_t formatBuffer[2048];
auto chit = chains[i];
if(pcard == chit.chain_card) {
myswprintf(formatBuffer, dataManager.GetSysString(216), i + 1);
str.append(L"\n").append(formatBuffer);
}
if(chit.target.find(pcard) != chit.target.end()) {
myswprintf(formatBuffer, dataManager.GetSysString(217), i + 1, dataManager.GetName(chit.chain_card->code));
str.append(L"\n").append(formatBuffer);
}
}
if(str.length() > 0) {
parent->addChild(mainGame->stCardListTip);
irr::core::rect<s32> ePos = element->getRelativePosition();
s32 x = (ePos.UpperLeftCorner.X + ePos.LowerRightCorner.X) / 2;
s32 y = ePos.LowerRightCorner.Y;
mainGame->SetStaticText(mainGame->stCardListTip, 160, mainGame->guiFont, str.c_str());
irr::core::dimension2d<unsigned int> dTip = mainGame->guiFont->getDimension(mainGame->stCardListTip->getText()) + irr::core::dimension2d<unsigned int>(10, 10);
mainGame->stCardListTip->setRelativePosition(recti(x - dTip.Width / 2, y - 10, x + dTip.Width / 2, y - 10 + dTip.Height));
mainGame->stCardListTip->setVisible(true);
}
}
void ClientField::SetResponseSelectedCards() const {
unsigned char respbuf[64];
respbuf[0] = selected_cards.size();
......
......@@ -26,7 +26,7 @@
#include <io.h>
#endif
const unsigned short PRO_VERSION = 0x1345;
const unsigned short PRO_VERSION = 0x1346;
namespace ygo {
......@@ -705,6 +705,11 @@ bool Game::Initialize() {
stTip->setBackgroundColor(0xc0ffffff);
stTip->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
stTip->setVisible(false);
//tip for cards in select / display list
stCardListTip = env->addStaticText(L"", rect<s32>(0, 0, 150, 150), false, true, wCardSelect, -1, true);
stCardListTip->setBackgroundColor(0xc0ffffff);
stCardListTip->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
stCardListTip->setVisible(false);
device->setEventReceiver(&menuHandler);
LoadConfig();
if(!soundManager.Init()) {
......
......@@ -238,6 +238,7 @@ public:
//hint text
irr::gui::IGUIStaticText* stHintMsg;
irr::gui::IGUIStaticText* stTip;
irr::gui::IGUIStaticText* stCardListTip;
//infos
irr::gui::IGUITabControl* wInfos;
irr::gui::IGUIStaticText* stName;
......
Subproject commit c5573de1195a5c2f2cbfb514ddceec50ea8873d4
Subproject commit a7640393c52035d7321da3877622087d24686baf
Subproject commit fcea85880d35772838ec4eb98ad6e579fadfe6f5
Subproject commit 4abdd05e56bfb3a3c369f7f8bed8230f7e10e4c2
......@@ -68,6 +68,8 @@
!system 213 已选择种族:
!system 214 已选择属性:
!system 215 已选择数字:
!system 216 在连锁%d发动
!system 217 被连锁%d的[%ls]选择为对象
!system 500 请选择要解放的卡
!system 501 请选择要丢弃的手卡
!system 502 请选择要破坏的卡
......@@ -544,6 +546,8 @@
!counter 0x48 指示物(连接死亡炮塔)
!counter 0x1049 警逻指示物
!counter 0x4a 运动员指示物
!counter 0x4b 枪管指示物
!counter 0x4c 召唤指示物
#setnames, using tab for comment
!setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス
......@@ -830,6 +834,7 @@
!setname 0xd7 巴斯达·布雷达 バスター・ブレイダー
!setname 0xd8 雾动机龙 ダイナミスト
!setname 0xd9 不知火
!setname 0x10d9 妖刀-不知火 妖刀-不知火
!setname 0xda 龙魔王 竜魔王
!setname 0xdb 幻影 ファントム
!setname 0x10db 幻影骑士团 幻影騎士団
......@@ -917,3 +922,4 @@
!setname 0x120 调皮宝贝 プランキッズ
!setname 0x121 魔妖
!setname 0x122 女武神 Valkyrie
!setname 0x123 蔷薇龙 ローズ・ドラゴン
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