Commit 6e527e9f authored by edo9300's avatar edo9300

Merge remote-tracking branch 'refs/remotes/Fluorohydride/master'

parents 8d1eafea 9293e48d
...@@ -72,10 +72,16 @@ void DeckBuilder::Initialize() { ...@@ -72,10 +72,16 @@ void DeckBuilder::Initialize() {
filterList = deckManager._lfList[0].content; filterList = deckManager._lfList[0].content;
mainGame->cbDBLFList->setSelected(0); mainGame->cbDBLFList->setSelected(0);
ClearSearch(); ClearSearch();
mouse_pos.set(0, 0);
hovered_code = 0;
hovered_pos = 0;
hovered_seq = -1;
is_lastcard = 0;
is_draging = false; is_draging = false;
is_starting_dragging = false;
prev_deck = mainGame->cbDBDecks->getSelected(); prev_deck = mainGame->cbDBDecks->getSelected();
prev_operation = 0; prev_operation = 0;
mainGame->device->setEventReceiver(&mainGame->deckBuilder); mainGame->device->setEventReceiver(this);
} }
void DeckBuilder::Terminate() { void DeckBuilder::Terminate() {
mainGame->is_building = false; mainGame->is_building = false;
...@@ -511,25 +517,20 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -511,25 +517,20 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
if(!check_limit(draging_pointer)) if(!check_limit(draging_pointer))
break; break;
} }
if(hovered_pos == 1) is_starting_dragging = true;
pop_main(hovered_seq);
else if(hovered_pos == 2)
pop_extra(hovered_seq);
else if(hovered_pos == 3)
pop_side(hovered_seq);
is_draging = true;
break; break;
} }
case irr::EMIE_LMOUSE_LEFT_UP: { case irr::EMIE_LMOUSE_LEFT_UP: {
is_starting_dragging = false;
if(!is_draging) if(!is_draging)
break; break;
bool pushed = false; bool pushed = false;
if(hovered_pos == 1) if(hovered_pos == 1)
pushed = push_main(draging_pointer, hovered_seq); pushed = push_main(draging_pointer, hovered_seq);
else if(hovered_pos == 2) else if(hovered_pos == 2)
pushed = push_extra(draging_pointer, hovered_seq); pushed = push_extra(draging_pointer, hovered_seq + is_lastcard);
else if(hovered_pos == 3) else if(hovered_pos == 3)
pushed = push_side(draging_pointer, hovered_seq); pushed = push_side(draging_pointer, hovered_seq + is_lastcard);
else if(hovered_pos == 4 && !mainGame->is_siding) else if(hovered_pos == 4 && !mainGame->is_siding)
pushed = true; pushed = true;
if(!pushed) { if(!pushed) {
...@@ -627,6 +628,16 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -627,6 +628,16 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break; break;
} }
case irr::EMIE_MOUSE_MOVED: { case irr::EMIE_MOUSE_MOVED: {
if(is_starting_dragging) {
is_draging = true;
if(hovered_pos == 1)
pop_main(hovered_seq);
else if(hovered_pos == 2)
pop_extra(hovered_seq);
else if(hovered_pos == 3)
pop_side(hovered_seq);
is_starting_dragging = false;
}
mouse_pos.set(event.MouseInput.X, event.MouseInput.Y); mouse_pos.set(event.MouseInput.X, event.MouseInput.Y);
GetHoveredCard(); GetHoveredCard();
break; break;
...@@ -665,6 +676,7 @@ void DeckBuilder::GetHoveredCard() { ...@@ -665,6 +676,7 @@ void DeckBuilder::GetHoveredCard() {
int pre_code = hovered_code; int pre_code = hovered_code;
hovered_pos = 0; hovered_pos = 0;
hovered_code = 0; hovered_code = 0;
is_lastcard = 0;
if(x >= 314 && x <= 794) { if(x >= 314 && x <= 794) {
if(y >= 164 && y <= 435) { if(y >= 164 && y <= 435) {
int lx = 10, px, py = (y - 164) / 68; int lx = 10, px, py = (y - 164) / 68;
...@@ -696,6 +708,8 @@ void DeckBuilder::GetHoveredCard() { ...@@ -696,6 +708,8 @@ void DeckBuilder::GetHoveredCard() {
hovered_code = 0; hovered_code = 0;
} else { } else {
hovered_code = deckManager.current_deck.extra[hovered_seq]->first; hovered_code = deckManager.current_deck.extra[hovered_seq]->first;
if(x >= 772)
is_lastcard = 1;
} }
} else if (y >= 564 && y <= 628) { } else if (y >= 564 && y <= 628) {
int lx = deckManager.current_deck.side.size(); int lx = deckManager.current_deck.side.size();
...@@ -711,6 +725,8 @@ void DeckBuilder::GetHoveredCard() { ...@@ -711,6 +725,8 @@ void DeckBuilder::GetHoveredCard() {
hovered_code = 0; hovered_code = 0;
} else { } else {
hovered_code = deckManager.current_deck.side[hovered_seq]->first; hovered_code = deckManager.current_deck.side[hovered_seq]->first;
if(x >= 772)
is_lastcard = 1;
} }
} }
} else if(x >= 810 && x <= 995 && y >= 165 && y <= 626) { } else if(x >= 810 && x <= 995 && y >= 165 && y <= 626) {
......
...@@ -48,8 +48,10 @@ public: ...@@ -48,8 +48,10 @@ public:
int hovered_code; int hovered_code;
int hovered_pos; int hovered_pos;
int hovered_seq; int hovered_seq;
int is_lastcard;
int click_pos; int click_pos;
bool is_draging; bool is_draging;
bool is_starting_dragging;
int dragx; int dragx;
int dragy; int dragy;
size_t pre_mainc; size_t pre_mainc;
......
...@@ -969,6 +969,11 @@ void Game::DrawSpec() { ...@@ -969,6 +969,11 @@ void Game::DrawSpec() {
} }
} }
} }
void Game::DrawBackImage(irr::video::ITexture* texture) {
if(!texture)
return;
driver->draw2DImage(texture, recti(0, 0, 1024, 640), recti(0, 0, texture->getOriginalSize().Width, texture->getOriginalSize().Height));
}
void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) { void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) {
FadingUnit fu; FadingUnit fu;
fu.fadingSize = win->getRelativePosition(); fu.fadingSize = win->getRelativePosition();
......
...@@ -2623,6 +2623,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2623,6 +2623,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return true; return true;
} }
case MSG_CHAIN_END: { case MSG_CHAIN_END: {
for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) {
for(auto tgit = chit->target.begin(); tgit != chit->target.end(); ++tgit)
(*tgit)->is_showchaintarget = false;
chit->chain_card->is_showchaintarget = false;
}
mainGame->dField.chains.clear(); mainGame->dField.chains.clear();
return true; return true;
} }
......
...@@ -614,6 +614,9 @@ bool Game::Initialize() { ...@@ -614,6 +614,9 @@ bool Game::Initialize() {
btnChainIgnore->setVisible(false); btnChainIgnore->setVisible(false);
btnChainAlways->setVisible(false); btnChainAlways->setVisible(false);
btnChainWhenAvail->setVisible(false); btnChainWhenAvail->setVisible(false);
//shuffle
btnShuffle = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CMD_SHUFFLE, dataManager.GetSysString(1297));
btnShuffle->setVisible(false);
//cancel or finish //cancel or finish
btnCancelOrFinish = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CANCEL_OR_FINISH, dataManager.GetSysString(1295)); btnCancelOrFinish = env->addButton(rect<s32>(205, 230, 295, 265), 0, BUTTON_CANCEL_OR_FINISH, dataManager.GetSysString(1295));
btnCancelOrFinish->setVisible(false); btnCancelOrFinish->setVisible(false);
...@@ -669,8 +672,6 @@ void Game::MainLoop() { ...@@ -669,8 +672,6 @@ void Game::MainLoop() {
atkframe += 0.1f; atkframe += 0.1f;
atkdy = (float)sin(atkframe); atkdy = (float)sin(atkframe);
driver->beginScene(true, true, SColor(0, 0, 0, 0)); driver->beginScene(true, true, SColor(0, 0, 0, 0));
if(imageManager.tBackGround)
driver->draw2DImage(imageManager.tBackGround, Resize(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
gMutex.Lock(); gMutex.Lock();
if(dInfo.isStarted) { if(dInfo.isStarted) {
if (showcardcode == 1 || showcardcode == 3) if (showcardcode == 1 || showcardcode == 3)
...@@ -683,6 +684,7 @@ void Game::MainLoop() { ...@@ -683,6 +684,7 @@ void Game::MainLoop() {
PlayMusic("./sound/song-advantage.mp3", true); PlayMusic("./sound/song-advantage.mp3", true);
else else
PlayBGM(); PlayBGM();
DrawBackImage(imageManager.tBackGround);
DrawBackGround(); DrawBackGround();
DrawCards(); DrawCards();
DrawMisc(); DrawMisc();
...@@ -690,13 +692,11 @@ void Game::MainLoop() { ...@@ -690,13 +692,11 @@ void Game::MainLoop() {
driver->setMaterial(irr::video::IdentityMaterial); driver->setMaterial(irr::video::IdentityMaterial);
driver->clearZBuffer(); driver->clearZBuffer();
} else if(is_building) { } else if(is_building) {
if(imageManager.tBackGround_deck) DrawBackImage(imageManager.tBackGround_deck);
driver->draw2DImage(imageManager.tBackGround_deck, Resize(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawDeckBd(); DrawDeckBd();
PlayMusic("./sound/deck.mp3", true); PlayMusic("./sound/deck.mp3", true);
} else { } else {
if(imageManager.tBackGround_menu) DrawBackImage(imageManager.tBackGround_menu);
driver->draw2DImage(imageManager.tBackGround_menu, Resize(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
PlayMusic("./sound/menu.mp3", true); PlayMusic("./sound/menu.mp3", true);
} }
DrawGUI(); DrawGUI();
......
...@@ -104,6 +104,7 @@ public: ...@@ -104,6 +104,7 @@ public:
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2); void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawGUI(); void DrawGUI();
void DrawSpec(); void DrawSpec();
void DrawBackImage(irr::video::ITexture* texture);
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0); void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
void HideElement(irr::gui::IGUIElement* element, bool set_action = false); void HideElement(irr::gui::IGUIElement* element, bool set_action = false);
void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0); void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0);
......
...@@ -27,7 +27,11 @@ bool ImageManager::Initial() { ...@@ -27,7 +27,11 @@ bool ImageManager::Initial() {
tHand[2] = driver->getTexture("textures/f3.jpg"); tHand[2] = driver->getTexture("textures/f3.jpg");
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");
if(!tBackGround_menu)
tBackGround_menu = tBackGround;
tBackGround_deck = driver->getTexture("textures/bg_deck.jpg"); tBackGround_deck = driver->getTexture("textures/bg_deck.jpg");
if(!tBackGround_deck)
tBackGround_deck = tBackGround;
tField[0] = driver->getTexture("textures/field2.png"); tField[0] = driver->getTexture("textures/field2.png");
tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png"); tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png");
tField[1] = driver->getTexture("textures/field3.png"); tField[1] = driver->getTexture("textures/field3.png");
......
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