summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-05-28 17:44:08 +0300
committerAndrei Karas <akaras@inbox.ru>2014-05-28 17:44:08 +0300
commit4415cb66734e67dfcdf8924d354107d27fb70fee (patch)
tree55cbb5de9eaa013ac3b88efad1bba8cfef34c791 /src/resources
parent9a6810756795ee7a7ed4854ed76f5dc49ec88cc8 (diff)
downloadmv-4415cb66734e67dfcdf8924d354107d27fb70fee.tar.gz
mv-4415cb66734e67dfcdf8924d354107d27fb70fee.tar.bz2
mv-4415cb66734e67dfcdf8924d354107d27fb70fee.tar.xz
mv-4415cb66734e67dfcdf8924d354107d27fb70fee.zip
Move delay load code from resourcemanager into separate file.
Diffstat (limited to 'src/resources')
-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
4 files changed, 122 insertions, 54 deletions
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