[Scummvm-cvs-logs] scummvm master -> 2b112a9c587c82af3b5df3b63e6eaa51401e6c37

dreammaster dreammaster at scummvm.org
Wed May 11 12:30:10 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2b112a9c58 TSAGE: Rework parts of the cursor code to better match the original


Commit: 2b112a9c587c82af3b5df3b63e6eaa51401e6c37
    https://github.com/scummvm/scummvm/commit/2b112a9c587c82af3b5df3b63e6eaa51401e6c37
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-05-11T03:28:30-07:00

Commit Message:
TSAGE: Rework parts of the cursor code to better match the original

This also fixes the problem with the cursor appearing in cutscenes when you press any key

Changed paths:
    engines/tsage/dialogs.cpp
    engines/tsage/events.cpp
    engines/tsage/events.h
    engines/tsage/ringworld_logic.cpp
    engines/tsage/ringworld_scenes2.cpp



diff --git a/engines/tsage/dialogs.cpp b/engines/tsage/dialogs.cpp
index f8e35f7..4eb35d9 100644
--- a/engines/tsage/dialogs.cpp
+++ b/engines/tsage/dialogs.cpp
@@ -73,12 +73,11 @@ MessageDialog::MessageDialog(const Common::String &message, const Common::String
 
 int MessageDialog::show(const Common::String &message, const Common::String &btn1Message, const Common::String &btn2Message) {
 	// Ensure that the cursor is the arrow
-	_globals->_events.pushCursor(CURSOR_ARROW);
-	_globals->_events.showCursor();
+	_globals->_events.setCursor(CURSOR_ARROW);
 
 	int result = show2(message, btn1Message, btn2Message);
 
-	_globals->_events.popCursor();
+	_globals->_events.setCursorFromFlag();
 	return result;
 }
 
diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index e51c5da..cc2e3f0 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -38,7 +38,7 @@ namespace tSage {
 
 EventsClass::EventsClass() {
 	_currentCursor = CURSOR_NONE;
-	hideCursor();
+	_lastCursor = CURSOR_NONE;
 	_frameNumber = 0;
 	_priorFrameTime = 0;
 	_prevDelayFrame = 0;
@@ -140,17 +140,11 @@ bool EventsClass::getEvent(Event &evt, int eventMask) {
  * @cursorType Specified cursor number
  */
 void EventsClass::setCursor(CursorType cursorType) {
-	_globals->clearFlag(122);
-
-	if ((_currentCursor == cursorType) && CursorMan.isVisible())
+	if (cursorType == _lastCursor)
 		return;
 
-	if (cursorType == CURSOR_NONE) {
-		if (CursorMan.isVisible())
-			CursorMan.showMouse(false);
-		return;
-	}
-
+	_lastCursor = cursorType;
+	_globals->clearFlag(122);
 	CursorMan.showMouse(true);
 
 	const byte *cursor;
@@ -158,8 +152,8 @@ void EventsClass::setCursor(CursorType cursorType) {
 	uint size;
 
 	switch (cursorType) {
-	case OBJECT_STUNNER:
-		// Stunner cursor
+	case CURSOR_NONE:
+		// No cursor
 		cursor = _resourceManager->getSubResource(4, 1, 6, &size);
 		_globals->setFlag(122);
 		break;
@@ -215,8 +209,8 @@ void EventsClass::pushCursor(CursorType cursorType) {
 	uint size;
 
 	switch (cursorType) {
-	case CURSOR_CROSSHAIRS:
-		// Crosshairs cursor
+	case CURSOR_NONE:
+		// No cursor
 		cursor = _resourceManager->getSubResource(4, 1, 6, &size);
 		break;
 
@@ -273,19 +267,19 @@ void EventsClass::setCursor(Graphics::Surface &cursor, int transColor, const Com
 }
 
 void EventsClass::setCursorFromFlag() {
-	setCursor(_globals->getFlag(122) ? CURSOR_CROSSHAIRS : _currentCursor);
+	setCursor(isCursorVisible() ? _currentCursor : CURSOR_NONE);
 }
 
 void EventsClass::showCursor() {
-	CursorMan.showMouse(true);
+	setCursor(_currentCursor);
 }
 
 void EventsClass::hideCursor() {
-	CursorMan.showMouse(false);
+	setCursor(CURSOR_NONE);
 }
 
 bool EventsClass::isCursorVisible() const { 
-	return CursorMan.isVisible(); 
+	return !_globals->getFlag(122);
 }
 
 /**
diff --git a/engines/tsage/events.h b/engines/tsage/events.h
index d2dbd9e..2e6f19a 100644
--- a/engines/tsage/events.h
+++ b/engines/tsage/events.h
@@ -80,6 +80,7 @@ public:
 
 	Common::Point _mousePos;
 	CursorType _currentCursor;
+	CursorType _lastCursor;
 
 	void setCursor(CursorType cursorType);
 	void pushCursor(CursorType cursorType);
diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp
index d334e0c..b4f2ed4 100644
--- a/engines/tsage/ringworld_logic.cpp
+++ b/engines/tsage/ringworld_logic.cpp
@@ -1328,10 +1328,9 @@ void RingworldGame::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String
 }
 
 void RingworldGame::start() {
-	// Set some default flags and cursor
+	// Set some default flags
 	_globals->setFlag(12);
 	_globals->setFlag(34);
-	_globals->_events.setCursor(CURSOR_WALK);
 
 	// Set the screen to scroll in response to the player moving off-screen
 	_globals->_scrollFollower = &_globals->_player;
diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp
index 6a8db81..c3edbf9 100644
--- a/engines/tsage/ringworld_scenes2.cpp
+++ b/engines/tsage/ringworld_scenes2.cpp
@@ -113,6 +113,8 @@ void Scene1000::Action3::signal() {
 		setDelay(240);
 		break;
 	case 5: {
+		_globals->_player.enableControl();
+
 		const char *SEEN_INTRO = "seen_intro";
 		if (!ConfMan.hasKey(SEEN_INTRO) || !ConfMan.getBool(SEEN_INTRO)) {
 			// First time being played, so show the introduction






More information about the Scummvm-git-logs mailing list