summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/being/being.cpp2
-rw-r--r--src/commands.cpp1
-rw-r--r--src/commands.h2
-rw-r--r--src/gui/viewport.cpp3
-rw-r--r--src/gui/widgets/itemcontainer.cpp2
-rw-r--r--src/gui/widgets/itemcontainer.h3
-rw-r--r--src/gui/windows/inventorywindow.cpp17
-rw-r--r--src/gui/windows/inventorywindow.h2
-rw-r--r--src/gui/windows/updaterwindow.cpp18
-rw-r--r--src/main.h4
-rw-r--r--src/net/ea/inventoryhandler.cpp11
-rw-r--r--src/net/ea/inventoryhandler.h2
-rw-r--r--src/net/inventoryhandler.h2
-rw-r--r--src/spellmanager.cpp3
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;