aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/gfx/animation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sword25/gfx/animation.cpp')
-rw-r--r--engines/sword25/gfx/animation.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/engines/sword25/gfx/animation.cpp b/engines/sword25/gfx/animation.cpp
index f906f05828..cdfaf491ad 100644
--- a/engines/sword25/gfx/animation.cpp
+++ b/engines/sword25/gfx/animation.cpp
@@ -277,12 +277,11 @@ void BS_Animation::FrameNotification(int TimeElapsed) {
// Überläufe behandeln
if (TmpCurFrame < 0) {
// Loop-Point Callbacks
- Common::Array<ANIMATION_CALLBACK_DATA>::iterator it = m_LoopPointCallbacks.begin();
- while (it != m_LoopPointCallbacks.end()) {
- if (((*it).Callback)((*it).Data) == false) {
- it = m_LoopPointCallbacks.erase(it);
+ for (uint i = 0; i < m_LoopPointCallbacks.size();) {
+ if ((m_LoopPointCallbacks[i].Callback)(m_LoopPointCallbacks[i].Data) == false) {
+ m_LoopPointCallbacks.remove_at(i);
} else
- it++;
+ i++;
}
// Ein Unterlauf darf nur auftreten, wenn der Animationstyp JOJO ist.
@@ -291,12 +290,11 @@ void BS_Animation::FrameNotification(int TimeElapsed) {
m_Direction = FORWARD;
} else if (static_cast<unsigned int>(TmpCurFrame) >= animationDescriptionPtr->GetFrameCount()) {
// Loop-Point Callbacks
- Common::Array<ANIMATION_CALLBACK_DATA>::iterator it = m_LoopPointCallbacks.begin();
- while (it != m_LoopPointCallbacks.end()) {
- if (((*it).Callback)((*it).Data) == false)
- it = m_LoopPointCallbacks.erase(it);
- else
- it++;
+ for (uint i = 0; i < m_LoopPointCallbacks.size();) {
+ if ((m_LoopPointCallbacks[i].Callback)(m_LoopPointCallbacks[i].Data) == false) {
+ m_LoopPointCallbacks.remove_at(i);
+ } else
+ i++;
}
switch (animationDescriptionPtr->GetAnimationType()) {
@@ -325,12 +323,11 @@ void BS_Animation::FrameNotification(int TimeElapsed) {
if (animationDescriptionPtr->GetFrame(m_CurrentFrame).Action != "") {
// Action Callbacks
- Common::Array<ANIMATION_CALLBACK_DATA>::iterator it = m_ActionCallbacks.begin();
- while (it != m_ActionCallbacks.end()) {
- if (((*it).Callback)((*it).Data) == false)
- it = m_ActionCallbacks.erase(it);
- else
- it++;
+ for (uint i = 0; i < m_ActionCallbacks.size();) {
+ if ((m_ActionCallbacks[i].Callback)(m_ActionCallbacks[i].Data) == false) {
+ m_ActionCallbacks.remove_at(i);
+ } else
+ i++;
}
}
}
@@ -679,7 +676,7 @@ void BS_Animation::PersistCallbackVector(BS_OutputPersistenceBlock &Writer, cons
// Alle Callbacks einzeln persistieren.
Common::Array<ANIMATION_CALLBACK_DATA>::const_iterator It = Vector.begin();
while (It != Vector.end()) {
- Writer.Write(BS_CallbackRegistry::GetInstance().ResolveCallbackPointer(It->Callback));
+ Writer.Write(BS_CallbackRegistry::GetInstance().ResolveCallbackPointer((void (*)(int))It->Callback));
Writer.Write(It->Data);
++It;