Commit 58ca77f5 authored by mercury233's avatar mercury233

fix

parent 5dbb98fd
...@@ -84,6 +84,7 @@ void DeckBuilder::Initialize() { ...@@ -84,6 +84,7 @@ void DeckBuilder::Initialize() {
is_starting_dragging = false; is_starting_dragging = false;
prev_deck = mainGame->cbDBDecks->getSelected(); prev_deck = mainGame->cbDBDecks->getSelected();
prev_operation = 0; prev_operation = 0;
prev_sel = -1;
is_modified = false; is_modified = false;
mainGame->device->setEventReceiver(this); mainGame->device->setEventReceiver(this);
} }
...@@ -184,6 +185,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -184,6 +185,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame->PopupElement(mainGame->wQuery); mainGame->PopupElement(mainGame->wQuery);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
prev_operation = id; prev_operation = id;
prev_sel = sel;
break; break;
} }
case BUTTON_LEAVE_GAME: { case BUTTON_LEAVE_GAME: {
...@@ -260,7 +262,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -260,7 +262,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager.current_deck.extra.clear(); deckManager.current_deck.extra.clear();
deckManager.current_deck.side.clear(); deckManager.current_deck.side.clear();
} else if(prev_operation == BUTTON_DELETE_DECK) { } else if(prev_operation == BUTTON_DELETE_DECK) {
int sel = mainGame->cbDBDecks->getSelected(); int sel = prev_sel;
if(deckManager.DeleteDeck(deckManager.current_deck, mainGame->cbDBDecks->getItem(sel))) { if(deckManager.DeleteDeck(deckManager.current_deck, mainGame->cbDBDecks->getItem(sel))) {
mainGame->cbDBDecks->removeItem(sel); mainGame->cbDBDecks->removeItem(sel);
int count = mainGame->cbDBDecks->getItemCount(); int count = mainGame->cbDBDecks->getItemCount();
...@@ -274,6 +276,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -274,6 +276,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
prev_deck = sel; prev_deck = sel;
is_modified = false; is_modified = false;
} }
prev_sel = -1;
} else if(prev_operation == BUTTON_LEAVE_GAME) { } else if(prev_operation == BUTTON_LEAVE_GAME) {
Terminate(); Terminate();
} else if(prev_operation == COMBOBOX_DBDECKS) { } else if(prev_operation == COMBOBOX_DBDECKS) {
......
...@@ -62,6 +62,7 @@ public: ...@@ -62,6 +62,7 @@ public:
code_pointer draging_pointer; code_pointer draging_pointer;
int prev_deck; int prev_deck;
s32 prev_operation; s32 prev_operation;
int prev_sel;
bool is_modified; bool is_modified;
std::unordered_map<int, int>* filterList; std::unordered_map<int, int>* filterList;
......
...@@ -44,6 +44,8 @@ bool Game::Initialize() { ...@@ -44,6 +44,8 @@ bool Game::Initialize() {
ignore_chain = false; ignore_chain = false;
chain_when_avail = false; chain_when_avail = false;
is_building = false; is_building = false;
menuHandler.prev_operation = 0;
menuHandler.prev_sel = -1;
memset(&dInfo, 0, sizeof(DuelInfo)); memset(&dInfo, 0, sizeof(DuelInfo));
memset(chatTiming, 0, sizeof(chatTiming)); memset(chatTiming, 0, sizeof(chatTiming));
deckManager.LoadLFList(); deckManager.LoadLFList();
......
...@@ -250,6 +250,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -250,6 +250,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->PopupElement(mainGame->wQuery); mainGame->PopupElement(mainGame->wQuery);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
prev_operation = id; prev_operation = id;
prev_sel = sel;
break; break;
} }
case BUTTON_RENAME_REPLAY: { case BUTTON_RENAME_REPLAY: {
...@@ -262,6 +263,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -262,6 +263,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->PopupElement(mainGame->wReplaySave); mainGame->PopupElement(mainGame->wReplaySave);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
prev_operation = id; prev_operation = id;
prev_sel = sel;
break; break;
} }
case BUTTON_CANCEL_REPLAY: { case BUTTON_CANCEL_REPLAY: {
...@@ -368,45 +370,43 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -368,45 +370,43 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
case BUTTON_YES: { case BUTTON_YES: {
mainGame->HideElement(mainGame->wQuery); mainGame->HideElement(mainGame->wQuery);
if(prev_operation == BUTTON_DELETE_REPLAY) { if(prev_operation == BUTTON_DELETE_REPLAY) {
int sel = mainGame->lstReplayList->getSelected(); if(Replay::DeleteReplay(mainGame->lstReplayList->getListItem(prev_sel))) {
if(sel == -1)
break;
if(Replay::DeleteReplay(mainGame->lstReplayList->getListItem(sel))) {
mainGame->stReplayInfo->setText(L""); mainGame->stReplayInfo->setText(L"");
mainGame->lstReplayList->removeItem(sel); mainGame->lstReplayList->removeItem(prev_sel);
} }
} }
prev_operation = 0; prev_operation = 0;
prev_sel = -1;
break; break;
} }
case BUTTON_NO: { case BUTTON_NO: {
mainGame->HideElement(mainGame->wQuery); mainGame->HideElement(mainGame->wQuery);
prev_operation = 0; prev_operation = 0;
prev_sel = -1;
break; break;
} }
case BUTTON_REPLAY_SAVE: { case BUTTON_REPLAY_SAVE: {
mainGame->HideElement(mainGame->wReplaySave); mainGame->HideElement(mainGame->wReplaySave);
if(prev_operation == BUTTON_RENAME_REPLAY) { if(prev_operation == BUTTON_RENAME_REPLAY) {
int sel = mainGame->lstReplayList->getSelected();
if(sel == -1)
break;
wchar_t newname[256]; wchar_t newname[256];
BufferIO::CopyWStr(mainGame->ebRSName->getText(), newname, 256); BufferIO::CopyWStr(mainGame->ebRSName->getText(), newname, 256);
if(wcsnicmp(newname + wcslen(newname) - 4, L".yrp", 4)) { if(wcsnicmp(newname + wcslen(newname) - 4, L".yrp", 4)) {
myswprintf(newname, L"%ls.yrp", mainGame->ebRSName->getText()); myswprintf(newname, L"%ls.yrp", mainGame->ebRSName->getText());
} }
if(Replay::RenameReplay(mainGame->lstReplayList->getListItem(sel), newname)) { if(Replay::RenameReplay(mainGame->lstReplayList->getListItem(prev_sel), newname)) {
mainGame->lstReplayList->setItem(sel, newname, -1); mainGame->lstReplayList->setItem(prev_sel, newname, -1);
} else { } else {
mainGame->env->addMessageBox(L"", dataManager.GetSysString(1365)); mainGame->env->addMessageBox(L"", dataManager.GetSysString(1365));
} }
} }
prev_operation = 0; prev_operation = 0;
prev_sel = -1;
break; break;
} }
case BUTTON_REPLAY_CANCEL: { case BUTTON_REPLAY_CANCEL: {
mainGame->HideElement(mainGame->wReplaySave); mainGame->HideElement(mainGame->wReplaySave);
prev_operation = 0; prev_operation = 0;
prev_sel = -1;
break; break;
} }
} }
......
...@@ -9,6 +9,7 @@ class MenuHandler: public irr::IEventReceiver { ...@@ -9,6 +9,7 @@ class MenuHandler: public irr::IEventReceiver {
public: public:
virtual bool OnEvent(const irr::SEvent& event); virtual bool OnEvent(const irr::SEvent& event);
s32 prev_operation; s32 prev_operation;
int prev_sel;
}; };
......
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