aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/loc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tony/loc.cpp')
-rw-r--r--engines/tony/loc.cpp69
1 files changed, 52 insertions, 17 deletions
diff --git a/engines/tony/loc.cpp b/engines/tony/loc.cpp
index e4a60cb52a..37fe29f359 100644
--- a/engines/tony/loc.cpp
+++ b/engines/tony/loc.cpp
@@ -398,8 +398,8 @@ void RMSprite::ReadFromStream(RMDataStream &ds, bool bLOX) {
m_buf->Init(ds, dimx,dimy);
}
-void RMSprite::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
- m_buf->Draw(bigBuf, prim);
+void RMSprite::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+ m_buf->Draw(coroParam, bigBuf, prim);
}
void RMSprite::SetPalette(byte *buf) {
@@ -727,7 +727,12 @@ RMPoint RMItem::CalculatePos(void) {
return m_pos + m_patterns[m_nCurPattern].Pos();
}
-void RMItem::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+void RMItem::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+ CORO_BEGIN_CONTEXT;
+ CORO_END_CONTEXT(_ctx);
+
+ CORO_BEGIN_CODE(_ctx);
+
// Se CurSprite == -1, allora e' finito il pattern
if (m_nCurSprite == -1)
return;
@@ -746,13 +751,15 @@ void RMItem::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
prim->SetStrecth(false);
// Ora la passiamo alla routine di drawing generica per surface
- m_sprites[m_nCurSprite].Draw(bigBuf, prim);
+ CORO_INVOKE_2(m_sprites[m_nCurSprite].Draw, bigBuf, prim);
+
+ CORO_END_CODE;
}
-bool RMItem::RemoveThis() {
+void RMItem::RemoveThis(CORO_PARAM, bool &result) {
// Rimuove dalla OT list se il frame corrente e' -1 (pattern finito)
- return (m_nCurSprite == -1);
+ result = (m_nCurSprite == -1);
}
@@ -907,8 +914,8 @@ void RMWipe::Unregister(void) {
CoroScheduler.setEvent(m_hUnregistered);
}
-bool RMWipe::RemoveThis(void) {
- return m_bUnregister;
+void RMWipe::RemoveThis(CORO_PARAM, bool &result) {
+ result = m_bUnregister;
}
void RMWipe::WaitForFadeEnd(CORO_PARAM) {
@@ -972,13 +979,20 @@ void RMWipe::DoFrame(RMGfxTargetBuffer &bigBuf) {
}
}
-void RMWipe::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+void RMWipe::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+ CORO_BEGIN_CONTEXT;
+ CORO_END_CONTEXT(_ctx);
+
+ CORO_BEGIN_CODE(_ctx);
+
if (m_bFading) {
- m_wip0r.Draw(bigBuf, prim);
+ CORO_INVOKE_2(m_wip0r.Draw, bigBuf, prim);
}
if (m_bEndFade)
Common::fill((byte *)bigBuf, (byte *)bigBuf + bigBuf.Dimx() * bigBuf.Dimy() * 2, 0x0);
+
+ CORO_END_CODE;
}
@@ -1369,12 +1383,19 @@ RMPoint RMCharacter::NearestHotSpot(int sourcebox, int destbox) {
return puntocaldo;
}
-void RMCharacter::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+void RMCharacter::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+ CORO_BEGIN_CONTEXT;
+ CORO_END_CONTEXT(_ctx);
+
+ CORO_BEGIN_CODE(_ctx);
+
if (bDrawNow) {
prim->Dst() += m_fixedScroll;
- RMItem::Draw(bigBuf, prim);
+ CORO_INVOKE_2(RMItem::Draw, bigBuf, prim);
}
+
+ CORO_END_CODE;
}
void RMCharacter::NewBoxEntered(int nBox) {
@@ -1692,11 +1713,18 @@ void RMCharacter::WaitForEndMovement(CORO_PARAM) {
CORO_END_CODE;
}
-bool RMCharacter::RemoveThis(void) {
+void RMCharacter::RemoveThis(CORO_PARAM, bool &result) {
+ CORO_BEGIN_CONTEXT;
+ CORO_END_CONTEXT(_ctx);
+
+ CORO_BEGIN_CODE(_ctx);
+
if (bRemoveFromOT)
- return true;
+ result = true;
+ else
+ CORO_INVOKE_1(RMItem::RemoveThis, result);
- return RMItem::RemoveThis();
+ CORO_END_CODE;
}
RMCharacter::RMCharacter() {
@@ -2214,7 +2242,12 @@ bool RMLocation::LoadLOX(RMDataStream &ds) {
*
\****************************************************************************/
-void RMLocation::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+void RMLocation::Draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
+ CORO_BEGIN_CONTEXT;
+ CORO_END_CONTEXT(_ctx);
+
+ CORO_BEGIN_CODE(_ctx);
+
// Setta la posizione sorgente dello scrolling
if (m_buf->Dimy()>RM_SY || m_buf->Dimx()>RM_SX) {
prim->SetSrc(RMRect(m_curScroll,m_curScroll+RMPoint(640,480)));
@@ -2224,7 +2257,9 @@ void RMLocation::Draw(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
// Richiama il metodo di drawing della classe dell'immagine, che disegnerą il background
// della locazione
- m_buf->Draw(bigBuf, prim);
+ CORO_INVOKE_2(m_buf->Draw, bigBuf, prim);
+
+ CORO_END_CODE;
}