Commit d608f949 authored by edo9300's avatar edo9300

Updated side decking handling

parent 6e971263
...@@ -213,8 +213,8 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -213,8 +213,8 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_SIDE_OK: { case BUTTON_SIDE_OK: {
if(deckManager.current_deck.main.size() != pre_mainc || deckManager.current_deck.extra.size() != pre_extrac if(deckManager.current_deck.main.size() != deckManager.pre_deck.main.size() || deckManager.current_deck.extra.size() != deckManager.pre_deck.extra.size()
|| deckManager.current_deck.side.size() != pre_sidec) { || deckManager.current_deck.side.size() != deckManager.pre_deck.side.size()) {
mainGame->env->addMessageBox(L"", dataManager.GetSysString(1410)); mainGame->env->addMessageBox(L"", dataManager.GetSysString(1410));
break; break;
} }
...@@ -240,7 +240,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -240,7 +240,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_SIDE_RELOAD: { case BUTTON_SIDE_RELOAD: {
deckManager.LoadDeck(mainGame->cbDeckSelect->getItem(mainGame->cbDeckSelect->getSelected())); deckManager.current_deck = deckManager.pre_deck;
break; break;
} }
case BUTTON_MSG_OK: { case BUTTON_MSG_OK: {
...@@ -982,8 +982,7 @@ bool DeckBuilder::push_main(code_pointer pointer, int seq) { ...@@ -982,8 +982,7 @@ bool DeckBuilder::push_main(code_pointer pointer, int seq) {
if(pointer->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK)) if(pointer->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK))
return false; return false;
auto& container = deckManager.current_deck.main; auto& container = deckManager.current_deck.main;
int maxc = mainGame->is_siding ? 64 : 60; if(!mainGame->is_siding)
if((int)container.size() >= maxc)
return false; return false;
if(seq >= 0 && seq < (int)container.size()) if(seq >= 0 && seq < (int)container.size())
container.insert(container.begin() + seq, pointer); container.insert(container.begin() + seq, pointer);
...@@ -996,8 +995,7 @@ bool DeckBuilder::push_extra(code_pointer pointer, int seq) { ...@@ -996,8 +995,7 @@ bool DeckBuilder::push_extra(code_pointer pointer, int seq) {
if(!(pointer->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK))) if(!(pointer->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK)))
return false; return false;
auto& container = deckManager.current_deck.extra; auto& container = deckManager.current_deck.extra;
int maxc = mainGame->is_siding ? 20 : 15; if(!mainGame->is_siding)
if((int)container.size() >= maxc)
return false; return false;
if(seq >= 0 && seq < (int)container.size()) if(seq >= 0 && seq < (int)container.size())
container.insert(container.begin() + seq, pointer); container.insert(container.begin() + seq, pointer);
...@@ -1008,8 +1006,7 @@ bool DeckBuilder::push_extra(code_pointer pointer, int seq) { ...@@ -1008,8 +1006,7 @@ bool DeckBuilder::push_extra(code_pointer pointer, int seq) {
} }
bool DeckBuilder::push_side(code_pointer pointer, int seq) { bool DeckBuilder::push_side(code_pointer pointer, int seq) {
auto& container = deckManager.current_deck.side; auto& container = deckManager.current_deck.side;
int maxc = mainGame->is_siding ? 20 : 15; if(!mainGame->is_siding)
if((int)container.size() >= maxc)
return false; return false;
if(seq >= 0 && seq < (int)container.size()) if(seq >= 0 && seq < (int)container.size())
container.insert(container.begin() + seq, pointer); container.insert(container.begin() + seq, pointer);
......
...@@ -54,9 +54,6 @@ public: ...@@ -54,9 +54,6 @@ public:
bool is_draging; bool is_draging;
int dragx; int dragx;
int dragy; int dragy;
size_t pre_mainc;
size_t pre_extrac;
size_t pre_sidec;
code_pointer draging_pointer; code_pointer draging_pointer;
int prev_deck; int prev_deck;
s32 prev_operation; s32 prev_operation;
......
...@@ -33,6 +33,7 @@ struct Deck { ...@@ -33,6 +33,7 @@ struct Deck {
class DeckManager { class DeckManager {
public: public:
Deck current_deck; Deck current_deck;
Deck pre_deck;
std::vector<LFList> _lfList; std::vector<LFList> _lfList;
void LoadLFList(); void LoadLFList();
......
...@@ -1056,7 +1056,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i ...@@ -1056,7 +1056,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
limitloc = recti(pos.X, pos.Y, pos.X + 20 * window_size.Width / 1024, pos.Y + 20 * window_size.Height / 640); limitloc = recti(pos.X, pos.Y, pos.X + 20 * window_size.Width / 1024, pos.Y + 20 * window_size.Height / 640);
} }
driver->draw2DImage(img, dragloc, rect<s32>(0, 0, size.Width, size.Height)); driver->draw2DImage(img, dragloc, rect<s32>(0, 0, size.Width, size.Height));
if(lflist->count(lcode)) { if(!mainGame->is_siding && lflist->count(lcode)) {
switch((*lflist)[lcode]) { switch((*lflist)[lcode]) {
case 0: case 0:
driver->draw2DImage(imageManager.tLim, limitloc, rect<s32>(0, 0, 64, 64), 0, 0, true); driver->draw2DImage(imageManager.tLim, limitloc, rect<s32>(0, 0, 64, 64), 0, 0, true);
......
...@@ -394,9 +394,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -394,9 +394,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->deckBuilder.results.clear(); mainGame->deckBuilder.results.clear();
mainGame->deckBuilder.hovered_code = 0; mainGame->deckBuilder.hovered_code = 0;
mainGame->deckBuilder.is_draging = false; mainGame->deckBuilder.is_draging = false;
mainGame->deckBuilder.pre_mainc = deckManager.current_deck.main.size(); deckManager.pre_deck = deckManager.current_deck;
mainGame->deckBuilder.pre_extrac = deckManager.current_deck.extra.size();
mainGame->deckBuilder.pre_sidec = deckManager.current_deck.side.size();
mainGame->device->setEventReceiver(&mainGame->deckBuilder); mainGame->device->setEventReceiver(&mainGame->deckBuilder);
mainGame->dInfo.isFirst = mainGame->dInfo.player_type == 0; mainGame->dInfo.isFirst = mainGame->dInfo.player_type == 0;
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
......
...@@ -1470,6 +1470,9 @@ void Game::CloseDuelWindow() { ...@@ -1470,6 +1470,9 @@ void Game::CloseDuelWindow() {
wReplaySave->setVisible(false); wReplaySave->setVisible(false);
stHintMsg->setVisible(false); stHintMsg->setVisible(false);
btnSideOK->setVisible(false); btnSideOK->setVisible(false);
btnSideShuffle->setVisible(false);
btnSideSort->setVisible(false);
btnSideReload->setVisible(false);
btnLeaveGame->setVisible(false); btnLeaveGame->setVisible(false);
btnSpectatorSwap->setVisible(false); btnSpectatorSwap->setVisible(false);
btnChainIgnore->setVisible(false); btnChainIgnore->setVisible(false);
......
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