summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/Makefile.am4
-rw-r--r--src/animatedsprite.cpp7
-rw-r--r--src/game.cpp3
-rw-r--r--src/resources/delayedmanager.cpp70
-rw-r--r--src/resources/delayedmanager.h52
-rw-r--r--src/resources/resourcemanager.cpp42
-rw-r--r--src/resources/resourcemanager.h12
8 files changed, 134 insertions, 58 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 339407536..86d4e3390 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -535,6 +535,8 @@ SET(SRCS
resources/db/colordb.h
resources/cursor.cpp
resources/cursor.h
+ resources/delayedmanager.cpp
+ resources/delayedmanager.h
resources/db/deaddb.cpp
resources/db/deaddb.h
resources/dye.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 014405c78..78a9273d6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,6 +69,8 @@ dyecmd_SOURCES += dyetool/dyemain.cpp \
resources/animation.h \
resources/db/palettedb.cpp \
resources/db/palettedb.h \
+ resources/delayedmanager.cpp \
+ resources/delayedmanager.h \
resources/dye.cpp \
resources/dye.h \
resources/dyepalette.cpp \
@@ -651,6 +653,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \
resources/db/colordb.h \
resources/cursor.cpp \
resources/cursor.h \
+ resources/delayedmanager.cpp \
+ resources/delayedmanager.h \
resources/db/deaddb.cpp \
resources/db/deaddb.h \
resources/dye.cpp \
diff --git a/src/animatedsprite.cpp b/src/animatedsprite.cpp
index 653ce528a..1abf833fb 100644
--- a/src/animatedsprite.cpp
+++ b/src/animatedsprite.cpp
@@ -28,6 +28,7 @@
#include "resources/action.h"
#include "resources/animation.h"
+#include "resources/delayedmanager.h"
#include "resources/image.h"
#include "resources/resourcemanager.h"
#include "resources/spriteaction.h"
@@ -110,7 +111,7 @@ AnimatedSprite::~AnimatedSprite()
if (mDelayLoad)
{
mDelayLoad->clearSprite();
- ResourceManager::removeDelayLoad(mDelayLoad);
+ DelayedManager::removeDelayLoad(mDelayLoad);
delete2(mDelayLoad);
}
}
@@ -416,11 +417,11 @@ void AnimatedSprite::setDelayLoad(const std::string &filename,
if (mDelayLoad)
{
mDelayLoad->clearSprite();
- ResourceManager::removeDelayLoad(mDelayLoad);
+ DelayedManager::removeDelayLoad(mDelayLoad);
delete mDelayLoad;
}
mDelayLoad = new AnimationDelayLoad(filename, variant, this);
- ResourceManager::addDelayedAnimation(mDelayLoad);
+ DelayedManager::addDelayedAnimation(mDelayLoad);
}
void AnimatedSprite::clearDelayLoad()
diff --git a/src/game.cpp b/src/game.cpp
index ffd39aa2e..20fc2d090 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -96,6 +96,7 @@
#include "net/net.h"
#include "net/packetcounters.h"
+#include "resources/delayedmanager.h"
#include "resources/imagewriter.h"
#include "resources/mapreader.h"
#include "resources/resourcemanager.h"
@@ -655,7 +656,7 @@ void Game::slowLogic()
if (shopWindow)
shopWindow->updateTimes();
if (mainGraphics->getOpenGL())
- ResourceManager::delayedLoad();
+ DelayedManager::delayedLoad();
if (guildManager)
guildManager->slowLogic();
PacketCounters::update();
diff --git a/src/resources/delayedmanager.cpp b/src/resources/delayedmanager.cpp
new file mode 100644
index 000000000..1b09cd052
--- /dev/null
+++ b/src/resources/delayedmanager.cpp
@@ -0,0 +1,70 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "resources/delayedmanager.h"
+
+#include "animationdelayload.h"
+
+#include "utils/timer.h"
+
+#include "debug.h"
+
+DelayedAnim DelayedManager::mDelayedAnimations;
+
+void DelayedManager::delayedLoad()
+{
+ BLOCK_START("DelayedManager::delayedLoad")
+ static int loadTime = 0;
+ if (loadTime < cur_time)
+ {
+ loadTime = tick_time;
+
+ int k = 0;
+ DelayedAnimIter it = mDelayedAnimations.begin();
+ const DelayedAnimIter it_end = mDelayedAnimations.end();
+ while (it != it_end && k < 1)
+ {
+ (*it)->load();
+ AnimationDelayLoad *tmp = *it;
+ it = mDelayedAnimations.erase(it);
+ delete tmp;
+ k ++;
+ }
+ const int time2 = tick_time;
+ if (time2 > loadTime)
+ loadTime = time2 + (time2 - loadTime) * 2 + 10;
+ else
+ loadTime = time2 + 3;
+ }
+ BLOCK_END("DelayedManager::delayedLoad")
+}
+
+void DelayedManager::removeDelayLoad(const AnimationDelayLoad
+ *const delayedLoad)
+{
+ FOR_EACH (DelayedAnimIter, it, mDelayedAnimations)
+ {
+ if (*it == delayedLoad)
+ {
+ mDelayedAnimations.erase(it);
+ return;
+ }
+ }
+}
diff --git a/src/resources/delayedmanager.h b/src/resources/delayedmanager.h
new file mode 100644
index 000000000..e1426a34c
--- /dev/null
+++ b/src/resources/delayedmanager.h
@@ -0,0 +1,52 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RESOURCES_DELAYEDMANAGER_H
+#define RESOURCES_DELAYEDMANAGER_H
+
+#include <list>
+
+#include "localconsts.h"
+
+class AnimationDelayLoad;
+
+typedef std::list<AnimationDelayLoad*> DelayedAnim;
+typedef DelayedAnim::iterator DelayedAnimIter;
+
+/**
+ * A class for loading and managing resources.
+ */
+class DelayedManager final
+{
+ public:
+ static void addDelayedAnimation(AnimationDelayLoad *const animation)
+ { mDelayedAnimations.push_back(animation); }
+
+ static void delayedLoad();
+
+ static void removeDelayLoad(const AnimationDelayLoad
+ *const delayedLoad);
+
+
+ private:
+ static DelayedAnim mDelayedAnimations;
+};
+
+#endif // RESOURCES_DELAYEDMANAGER_H
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp
index 67e9b557e..476149eb3 100644
--- a/src/resources/resourcemanager.cpp
+++ b/src/resources/resourcemanager.cpp
@@ -56,7 +56,6 @@
#include "debug.h"
ResourceManager *ResourceManager::instance = nullptr;
-DelayedAnim ResourceManager::mDelayedAnimations;
ResourceManager::ResourceManager() :
deletedSurfaces(),
@@ -1134,47 +1133,6 @@ Image *ResourceManager::getRescaled(const Image *const image,
return img;
}
-void ResourceManager::delayedLoad()
-{
- BLOCK_START("ResourceManager::delayedLoad")
- static int loadTime = 0;
- if (loadTime < cur_time)
- {
- loadTime = tick_time;
-
- int k = 0;
- DelayedAnimIter it = mDelayedAnimations.begin();
- const DelayedAnimIter it_end = mDelayedAnimations.end();
- while (it != it_end && k < 1)
- {
- (*it)->load();
- AnimationDelayLoad *tmp = *it;
- it = mDelayedAnimations.erase(it);
- delete tmp;
- k ++;
- }
- const int time2 = tick_time;
- if (time2 > loadTime)
- loadTime = time2 + (time2 - loadTime) * 2 + 10;
- else
- loadTime = time2 + 3;
- }
- BLOCK_END("ResourceManager::delayedLoad")
-}
-
-void ResourceManager::removeDelayLoad(const AnimationDelayLoad
- *const delayedLoad)
-{
- FOR_EACH (DelayedAnimIter, it, mDelayedAnimations)
- {
- if (*it == delayedLoad)
- {
- mDelayedAnimations.erase(it);
- return;
- }
- }
-}
-
void ResourceManager::deleteFilesInDirectory(std::string path)
{
path += "/";
diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h
index 954ee3551..0e14e61bb 100644
--- a/src/resources/resourcemanager.h
+++ b/src/resources/resourcemanager.h
@@ -47,9 +47,6 @@ class WalkLayer;
struct SDL_Surface;
struct SDL_RWops;
-typedef std::list<AnimationDelayLoad*> DelayedAnim;
-typedef DelayedAnim::iterator DelayedAnimIter;
-
/**
* A class for loading and managing resources.
*/
@@ -328,14 +325,6 @@ class ResourceManager final
void clearCache();
- static void addDelayedAnimation(AnimationDelayLoad *const animation)
- { mDelayedAnimations.push_back(animation); }
-
- static void delayedLoad();
-
- static void removeDelayLoad(const AnimationDelayLoad
- *const delayedLoad);
-
static void deleteFilesInDirectory(std::string path);
private:
@@ -352,7 +341,6 @@ class ResourceManager final
time_t mOldestOrphan;
bool mDestruction;
bool mUseLongLiveSprites;
- static DelayedAnim mDelayedAnimations;
};
#endif // RESOURCES_RESOURCEMANAGER_H