[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