aboutsummaryrefslogtreecommitdiff
path: root/engines/tony
diff options
context:
space:
mode:
authorPaul Gilbert2012-05-14 20:20:02 +1000
committerPaul Gilbert2012-05-14 20:22:50 +1000
commit4bf61b2f02bc933f66588332de37e1fdb996468b (patch)
treed4e772b752d6909433df22813505b1f12ab8c053 /engines/tony
parent099fe1e9e62ada666a312e08d7dca5cd2083de0b (diff)
downloadscummvm-rg350-4bf61b2f02bc933f66588332de37e1fdb996468b.tar.gz
scummvm-rg350-4bf61b2f02bc933f66588332de37e1fdb996468b.tar.bz2
scummvm-rg350-4bf61b2f02bc933f66588332de37e1fdb996468b.zip
TONY: Fixed nasty cast in ItemIrq initialisation
Diffstat (limited to 'engines/tony')
-rw-r--r--engines/tony/gfxengine.cpp19
-rw-r--r--engines/tony/globals.cpp1
-rw-r--r--engines/tony/globals.h2
3 files changed, 9 insertions, 13 deletions
diff --git a/engines/tony/gfxengine.cpp b/engines/tony/gfxengine.cpp
index 4a0fdc0795..a2b58f660e 100644
--- a/engines/tony/gfxengine.cpp
+++ b/engines/tony/gfxengine.cpp
@@ -361,28 +361,21 @@ void RMGfxEngine::InitCustomDll(void) {
SetupGlobalVars(&m_tony, &m_point, &_vm->_theBoxes, &m_loc, &m_inv, &m_input);
}
-// FIXME: Casting nPattern from int to RMGfxEngine *
void RMGfxEngine::ItemIrq(uint32 dwItem, int nPattern, int nStatus) {
- static RMGfxEngine *This = NULL;
RMItem *item;
+ assert(GLOBALS.GfxEngine);
- // Inizializzazione!
- if ((int)dwItem == -1) {
- This = (RMGfxEngine*)nPattern;
- return;
- }
-
- if (This->m_bLocationLoaded) {
- item=This->m_loc.GetItemFromCode(dwItem);
+ if (GLOBALS.GfxEngine->m_bLocationLoaded) {
+ item = GLOBALS.GfxEngine->m_loc.GetItemFromCode(dwItem);
if (item != NULL) {
- if (nPattern!=-1) {
+ if (nPattern != -1) {
if (GLOBALS.bPatIrqFreeze)
MainFreeze();
item->SetPattern(nPattern,true);
if (GLOBALS.bPatIrqFreeze)
MainUnfreeze();
}
- if (nStatus!=-1)
+ if (nStatus != -1)
item->SetStatus(nStatus);
}
}
@@ -597,7 +590,7 @@ void RMGfxEngine::Init(/*HINSTANCE hInst*/) {
csMainLoop = g_system->createMutex();
// Inizializza la funzione di IRQ di Item per l'MPAL
- ItemIrq((uint32)-1, (uint32)this, 0);
+ GLOBALS.GfxEngine = this;
mpalInstallItemIrq(ItemIrq);
// Inizializza DirectInput
diff --git a/engines/tony/globals.cpp b/engines/tony/globals.cpp
index 0ce99f88e7..867d48e0fa 100644
--- a/engines/tony/globals.cpp
+++ b/engines/tony/globals.cpp
@@ -40,6 +40,7 @@ Globals::Globals() {
Loc = NULL;
Inventory = NULL;
Input = NULL;
+ GfxEngine = NULL;
LoadLocation = NULL;
UnloadLocation = NULL;
LinkGraphicTask = NULL;
diff --git a/engines/tony/globals.h b/engines/tony/globals.h
index 1a11a871d0..72faa6a6c5 100644
--- a/engines/tony/globals.h
+++ b/engines/tony/globals.h
@@ -25,6 +25,7 @@
#include "common/savefile.h"
#include "tony/adv.h"
+#include "tony/gfxengine.h"
#include "tony/input.h"
#include "tony/inventory.h"
#include "tony/loc.h"
@@ -216,6 +217,7 @@ public:
RMLocation *Loc;
RMInventory *Inventory;
RMInput *Input;
+ RMGfxEngine *GfxEngine;
uint32 (*LoadLocation)(int, RMPoint, RMPoint start);
void (*UnloadLocation)(CORO_PARAM, bool bDoOnExit, uint32 *result);