aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/events.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/events.cpp')
-rw-r--r--engines/tsage/events.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index 010117ec78..a6471dc8ab 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -31,7 +31,7 @@
#include "tsage/tsage.h"
#include "tsage/globals.h"
-namespace tSage {
+namespace TsAGE {
EventsClass::EventsClass() {
_currentCursor = CURSOR_NONE;
@@ -40,6 +40,7 @@ EventsClass::EventsClass() {
_priorFrameTime = 0;
_prevDelayFrame = 0;
_saver->addListener(this);
+ _saver->addLoadNotifier(&EventsClass::loadNotifierProc);
}
bool EventsClass::pollEvent() {
@@ -154,7 +155,7 @@ void EventsClass::setCursor(CursorType cursorType) {
// No cursor
_globals->setFlag(122);
- if (_vm->getFeatures() & GF_DEMO) {
+ if ((_vm->getFeatures() & GF_DEMO) || (_vm->getGameID() == GType_BlueForce)) {
CursorMan.showMouse(false);
return;
}
@@ -269,6 +270,17 @@ void EventsClass::setCursor(Graphics::Surface &cursor, int transColor, const Com
_currentCursor = cursorId;
}
+void EventsClass::setCursor(GfxSurface &cursor) {
+ // TODO: Find proper parameters for this form in Blue Force
+ Graphics::Surface s = cursor.lockSurface();
+
+ const byte *cursorData = (const byte *)s.getBasePtr(0, 0);
+ CursorMan.replaceCursor(cursorData, cursor.getBounds().width(), cursor.getBounds().height(),
+ cursor._centroid.x, cursor._centroid.y, cursor._transColor);
+
+ _currentCursor = CURSOR_NONE;
+}
+
void EventsClass::setCursorFromFlag() {
setCursor(isCursorVisible() ? _currentCursor : CURSOR_NONE);
}
@@ -277,8 +289,10 @@ void EventsClass::showCursor() {
setCursor(_currentCursor);
}
-void EventsClass::hideCursor() {
+CursorType EventsClass::hideCursor() {
+ CursorType oldCursor = _currentCursor;
setCursor(CURSOR_NONE);
+ return oldCursor;
}
bool EventsClass::isCursorVisible() const {
@@ -315,4 +329,13 @@ void EventsClass::listenerSynchronize(Serializer &s) {
}
}
-} // end of namespace tSage
+void EventsClass::loadNotifierProc(bool postFlag) {
+ if (postFlag) {
+ if (_globals->_events._lastCursor == CURSOR_NONE)
+ _globals->_events._lastCursor = _globals->_events._currentCursor;
+ else
+ _globals->_events._lastCursor = CURSOR_NONE;
+ }
+}
+
+} // end of namespace TsAGE