aboutsummaryrefslogtreecommitdiff
path: root/engines/sludge/freeze.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sludge/freeze.cpp')
-rw-r--r--engines/sludge/freeze.cpp37
1 files changed, 16 insertions, 21 deletions
diff --git a/engines/sludge/freeze.cpp b/engines/sludge/freeze.cpp
index 776a6f80a8..1bc2ad96f7 100644
--- a/engines/sludge/freeze.cpp
+++ b/engines/sludge/freeze.cpp
@@ -20,20 +20,21 @@
*
*/
#include "sludge/allfiles.h"
+#include "sludge/backdrop.h"
+#include "sludge/event.h"
+#include "sludge/fonttext.h"
+#include "sludge/freeze.h"
+#include "sludge/graphics.h"
#include "sludge/newfatal.h"
+#include "sludge/objtypes.h"
+#include "sludge/people.h"
+#include "sludge/region.h"
#include "sludge/sprites.h"
#include "sludge/sprbanks.h"
-#include "sludge/people.h"
#include "sludge/sludge.h"
#include "sludge/sludger.h"
-#include "sludge/objtypes.h"
-#include "sludge/region.h"
-#include "sludge/backdrop.h"
-#include "sludge/talk.h"
-#include "sludge/fonttext.h"
#include "sludge/statusba.h"
-#include "sludge/freeze.h"
-#include "sludge/graphics.h"
+#include "sludge/talk.h"
#include "sludge/zbuffer.h"
namespace Sludge {
@@ -42,8 +43,6 @@ extern OnScreenPerson *allPeople;
extern ScreenRegion *allScreenRegions;
extern ScreenRegion *overRegion;
extern SpeechStruct *speech;
-extern InputType input;
-extern EventHandlers *currentEvents;
extern PersonaAnimation *mouseCursorAnim;
extern int mouseCursorFrameNum;
@@ -109,11 +108,7 @@ bool GraphicsManager::freeze() {
newFreezer->speech = speech;
initSpeech();
- newFreezer->currentEvents = currentEvents;
- currentEvents = new EventHandlers;
- if (!checkNew(currentEvents))
- return false;
- memset(currentEvents, 0, sizeof(EventHandlers));
+ _vm->_evtMan->freeze(newFreezer);
newFreezer->next = _frozenStuff;
_frozenStuff = newFreezer;
@@ -142,11 +137,11 @@ void GraphicsManager::unfreeze(bool killImage) {
_cameraX = _frozenStuff->cameraX;
_cameraY = _frozenStuff->cameraY;
- input.mouseX = (int)(input.mouseX * _cameraZoom);
- input.mouseY = (int)(input.mouseY * _cameraZoom);
+ _vm->_evtMan->mouseX() = (int)(_vm->_evtMan->mouseX() * _cameraZoom);
+ _vm->_evtMan->mouseY() = (int)(_vm->_evtMan->mouseY() * _cameraZoom);
_cameraZoom = _frozenStuff->cameraZoom;
- input.mouseX = (int)(input.mouseX / _cameraZoom);
- input.mouseY = (int)(input.mouseY / _cameraZoom);
+ _vm->_evtMan->mouseX() = (int)(_vm->_evtMan->mouseX() / _cameraZoom);
+ _vm->_evtMan->mouseY() = (int)(_vm->_evtMan->mouseY() / _cameraZoom);
killAllPeople();
allPeople = _frozenStuff->allPeople;
@@ -184,8 +179,8 @@ void GraphicsManager::unfreeze(bool killImage) {
restoreBarStuff(_frozenStuff->frozenStatus);
- delete currentEvents;
- currentEvents = _frozenStuff->currentEvents;
+ _vm->_evtMan->restore(_frozenStuff);
+
killAllSpeech();
delete speech;