diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/being/being.cpp | 2 | ||||
-rw-r--r-- | src/commands.cpp | 1 | ||||
-rw-r--r-- | src/commands.h | 2 | ||||
-rw-r--r-- | src/gui/viewport.cpp | 3 | ||||
-rw-r--r-- | src/gui/widgets/itemcontainer.cpp | 2 | ||||
-rw-r--r-- | src/gui/widgets/itemcontainer.h | 3 | ||||
-rw-r--r-- | src/gui/windows/inventorywindow.cpp | 17 | ||||
-rw-r--r-- | src/gui/windows/inventorywindow.h | 2 | ||||
-rw-r--r-- | src/gui/windows/updaterwindow.cpp | 18 | ||||
-rw-r--r-- | src/main.h | 4 | ||||
-rw-r--r-- | src/net/ea/inventoryhandler.cpp | 11 | ||||
-rw-r--r-- | src/net/ea/inventoryhandler.h | 2 | ||||
-rw-r--r-- | src/net/inventoryhandler.h | 2 | ||||
-rw-r--r-- | src/spellmanager.cpp | 3 |
14 files changed, 50 insertions, 22 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index 621b61d02..683bfb6f5 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -441,7 +441,7 @@ void Being::setSpeech(const std::string &text, const std::string &channel, mSpeech.erase(e, 1); mSpeech.erase(start, (position - start) + 1); } - position = mSpeech.find('@'); + position = mSpeech.find("@@"); while (position != std::string::npos) { diff --git a/src/commands.cpp b/src/commands.cpp index de4c03012..3d476f8c6 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -1136,6 +1136,7 @@ impHandler0(error) { const int *const ptr = nullptr; logger->log("test %d", *ptr); + exit(1); } impHandler(url) diff --git a/src/commands.h b/src/commands.h index 6dd688a17..a27f430db 100644 --- a/src/commands.h +++ b/src/commands.h @@ -107,7 +107,7 @@ namespace Commands decHandler(serverIgnoreAll); decHandler(serverUnIgnoreAll); decHandler(setDrop); - decHandler(error); + decHandler(error) __attribute__ ((noreturn)); decHandler(url); decHandler(open); decHandler(dump); diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index 46d47ab4a..c7e2b31df 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -270,13 +270,12 @@ void Viewport::logic() BLOCK_START("Viewport::logic") // Make the player follow the mouse position // if the mouse is dragged elsewhere than in a window. - followMouse(); + Gui::getMouseState(&mMouseX, &mMouseY); BLOCK_END("Viewport::logic") } void Viewport::followMouse() { - return; if (!gui) return; const uint8_t button = Gui::getMouseState(&mMouseX, &mMouseY); diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp index ee2e35920..f24be7737 100644 --- a/src/gui/widgets/itemcontainer.cpp +++ b/src/gui/widgets/itemcontainer.cpp @@ -507,7 +507,7 @@ void ItemContainer::mouseReleased(MouseEvent &event) Net::getInventoryHandler()->moveItem(mSelectedIndex, index); selectNone(); } - else + else if (mInventory) { const DragDropSource src = dragDrop.getSource(); DragDropSource dst = DRAGDROP_SOURCE_EMPTY; diff --git a/src/gui/widgets/itemcontainer.h b/src/gui/widgets/itemcontainer.h index f7bc44849..06e9fd459 100644 --- a/src/gui/widgets/itemcontainer.h +++ b/src/gui/widgets/itemcontainer.h @@ -131,6 +131,9 @@ class ItemContainer final : public Widget, bool getClickCount() const A_WARN_UNUSED { return mClicks; } + void unsetInventory() + { mInventory = nullptr; } + private: enum Direction { diff --git a/src/gui/windows/inventorywindow.cpp b/src/gui/windows/inventorywindow.cpp index c2a4b4636..01e5e052d 100644 --- a/src/gui/windows/inventorywindow.cpp +++ b/src/gui/windows/inventorywindow.cpp @@ -271,7 +271,8 @@ void InventoryWindow::postInit() InventoryWindow::~InventoryWindow() { invInstances.remove(this); - mInventory->removeInventoyListener(this); + if (mInventory) + mInventory->removeInventoyListener(this); if (!invInstances.empty()) invInstances.front()->updateDropButton(); @@ -681,7 +682,10 @@ void InventoryWindow::close() else { if (Net::getInventoryHandler()) + { Net::getInventoryHandler()->closeStorage(Inventory::STORAGE); + Net::getInventoryHandler()->forgotStorage(); + } scheduleDelete(); } } @@ -806,3 +810,14 @@ void InventoryWindow::setVisible(bool visible) mSortDropDown->hideDrop(); Window::setVisible(visible); } + +void InventoryWindow::unsetInventory() +{ + if (mInventory) + { + mInventory->removeInventoyListener(this); + if (mItems) + mItems->unsetInventory(); + } + mInventory = nullptr; +} diff --git a/src/gui/windows/inventorywindow.h b/src/gui/windows/inventorywindow.h index 7e47e0362..10e1e21e2 100644 --- a/src/gui/windows/inventorywindow.h +++ b/src/gui/windows/inventorywindow.h @@ -152,6 +152,8 @@ class InventoryWindow final : public Window, void setVisible(bool visible) override final; + void unsetInventory(); + static bool isAnyInputFocused(); private: diff --git a/src/gui/windows/updaterwindow.cpp b/src/gui/windows/updaterwindow.cpp index 824d8e0f6..75460cf78 100644 --- a/src/gui/windows/updaterwindow.cpp +++ b/src/gui/windows/updaterwindow.cpp @@ -840,21 +840,11 @@ void UpdaterWindow::logic() if (mUpdateIndex < mUpdateFiles.size()) { UpdateFile thisFile = mUpdateFiles[mUpdateIndex]; - if (!thisFile.required) + if (thisFile.type == "music" + && !config.getBoolValue("download-music")) { - // This statement checks to see if the file type - // is music, and if download-music is true - // If it fails, this statement returns true, - // and results in not downloading the file - // Else it will ignore the break, - // and download the file. - - if (!(thisFile.type == "music" - && config.getBoolValue("download-music"))) - { - mUpdateIndex++; - break; - } + mUpdateIndex++; + break; } mCurrentFile = thisFile.name; std::string checksum; diff --git a/src/main.h b/src/main.h index 5c47e72ac..047b9c9a2 100644 --- a/src/main.h +++ b/src/main.h @@ -45,8 +45,8 @@ * different interfaces, which have different implementations for each server. */ -#define SMALL_VERSION "1.4.4.12" -#define CHECK_VERSION "01.04.04.12" +#define SMALL_VERSION "1.4.4.26" +#define CHECK_VERSION "01.04.04.26" #ifdef HAVE_CONFIG_H #include "../config.h" diff --git a/src/net/ea/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp index f3c8040e1..ea7390ccb 100644 --- a/src/net/ea/inventoryhandler.cpp +++ b/src/net/ea/inventoryhandler.cpp @@ -486,6 +486,11 @@ void InventoryHandler::processPlayerStorageClose(Net::MessageIn &msg A_UNUSED) { // Storage access has been closed // Storage window deletes itself + if (mStorageWindow) + { + mStorageWindow->unsetInventory(); + mStorageWindow->close(); + } mStorageWindow = nullptr; if (mStorage) @@ -592,9 +597,15 @@ void InventoryHandler::closeStorage() { if (mStorageWindow) { + mStorageWindow->unsetInventory(); mStorageWindow->close(); mStorageWindow = nullptr; } } +void InventoryHandler::forgotStorage() +{ + mStorageWindow = nullptr; +} + } // namespace Ea diff --git a/src/net/ea/inventoryhandler.h b/src/net/ea/inventoryhandler.h index ac88c1d6c..4546b75bb 100644 --- a/src/net/ea/inventoryhandler.h +++ b/src/net/ea/inventoryhandler.h @@ -210,6 +210,8 @@ class InventoryHandler : public Net::InventoryHandler void closeStorage() override final; + void forgotStorage() override final; + Inventory *getStorage() const { return mStorage; } diff --git a/src/net/inventoryhandler.h b/src/net/inventoryhandler.h index 53e7d15b1..42649bae6 100644 --- a/src/net/inventoryhandler.h +++ b/src/net/inventoryhandler.h @@ -71,6 +71,8 @@ class InventoryHandler virtual void closeStorage() = 0; + virtual void forgotStorage() = 0; + virtual int convertFromServerSlot(const int eAthenaSlot) const = 0; }; diff --git a/src/spellmanager.cpp b/src/spellmanager.cpp index b1fad932a..cd4f0f2fd 100644 --- a/src/spellmanager.cpp +++ b/src/spellmanager.cpp @@ -399,6 +399,9 @@ void SpellManager::swap(const int id1, const int id2) { TextCommand *const spell1 = mSpells[id1]; TextCommand *const spell2 = mSpells[id2]; + if (!spell1 || !spell2) + return; + // swap in map mSpells[id1] = spell2; mSpells[id2] = spell1; |