[Scummvm-git-logs] scummvm master -> a0883e6aaf81e504fd4b3f0808eee0a418fe33f4
dreammaster
paulfgilbert at gmail.com
Fri Nov 20 04:22:54 UTC 2020
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:
a0883e6aaf GLK: COMPREHEND: Fix wearing or removing goggles in too bright room
Commit: a0883e6aaf81e504fd4b3f0808eee0a418fe33f4
https://github.com/scummvm/scummvm/commit/a0883e6aaf81e504fd4b3f0808eee0a418fe33f4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-19T20:22:37-08:00
Commit Message:
GLK: COMPREHEND: Fix wearing or removing goggles in too bright room
Changed paths:
engines/glk/comprehend/game.cpp
engines/glk/comprehend/game.h
engines/glk/comprehend/game_oo.cpp
engines/glk/comprehend/game_oo.h
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index b4e4136a7e..f580d1613d 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -805,7 +805,6 @@ void ComprehendGame::read_input() {
Sentence tempSentence;
bool handled;
- beforePrompt();
doBeforeTurn();
if (_ended)
return;
@@ -816,11 +815,15 @@ void ComprehendGame::read_input() {
g_comprehend->print("\n");
for (;;) {
+ beforePrompt();
+
g_comprehend->print("> ");
g_comprehend->readLine(_inputLine, INPUT_LINE_SIZE);
if (g_comprehend->shouldQuit())
return;
+ afterPrompt();
+
_inputLineIndex = 0;
if (strlen(_inputLine) != 0)
break;
diff --git a/engines/glk/comprehend/game.h b/engines/glk/comprehend/game.h
index 0a1c7483f2..8bb824d221 100644
--- a/engines/glk/comprehend/game.h
+++ b/engines/glk/comprehend/game.h
@@ -138,6 +138,7 @@ public:
virtual void beforeGame() {}
virtual void beforePrompt() {}
+ virtual void afterPrompt() {}
virtual void beforeTurn();
virtual void afterTurn() {}
virtual int roomIsSpecial(unsigned room_index, unsigned *room_desc_string) {
diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index 749ac383a8..e79a143768 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -45,7 +45,7 @@ enum OOToposFlag {
OO_FLAG_SUFFICIENT_FUEL = 51,
OO_FLAG_REVERSE_VIDEO = 53, // Effect of wearing goggles
OO_FLAG_55 = 55,
- OO_FLAG_56 = 56,
+ OO_FLAG_TOO_BRIGHT = 56,
OO_FLAG_58 = 58,
OO_FLAG_59 = 59,
OO_FLAG_READY_TO_DEPART = 60,
@@ -62,7 +62,7 @@ static const GameStrings OO_STRINGS = {
OOToposGame::OOToposGame() : ComprehendGameV2(), _restartMode(RESTART_IMMEDIATE),
_noFloodfill(UNSET), _lightOn(UNSET), _stringVal1(0), _stringVal2(0),
- _printComputerMsg(true), _shipNotWorking(false) {
+ _printComputerMsg(true), _shipNotWorking(false), _currentRoomCopy(-1) {
_gameDataFile = "g0";
// Extra strings are (annoyingly) stored in the game binary
@@ -121,35 +121,18 @@ int OOToposGame::roomIsSpecial(unsigned room_index, unsigned *roomDescString) {
}
void OOToposGame::beforeTurn() {
-#if 0
- Room *room = &_rooms[_currentRoom];
-
- /*
- * Check if the room needs to be redrawn because the flashlight
- * was switch off or on.
- */
- if (_flags[OO_FLAG_FLASHLIGHT_ON] != _lightOn &&
- (room->_flags & OO_ROOM_FLAG_DARK)) {
- _lightOn = _flags[OO_FLAG_FLASHLIGHT_ON];
- _updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
- }
-
- /*
- * Check if the room needs to be redrawn because the goggles were
- * put on or removed.
- */
- if (_flags[OO_FLAG_WEARING_GOGGLES] != _wearingGoggles &&
- _currentRoom == OO_BRIGHT_ROOM) {
- _wearingGoggles = _flags[OO_FLAG_WEARING_GOGGLES];
- _updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
- }
-#endif
ComprehendGameV2::beforeTurn();
+ // Make a copy of the current room
+ _currentRoomCopy = _currentRoom;
+
if (_flags[OO_FLAG_55]) {
_currentRoom = 55;
- } else if (_flags[OO_FLAG_56]) {
+ _updateFlags |= UPDATE_GRAPHICS;
+ } else if (_flags[OO_FLAG_TOO_BRIGHT]) {
+ // Show placeholder room if room is too bright
_currentRoom = 54;
+ _updateFlags |= UPDATE_GRAPHICS;
} else {
YesNo nff = _flags[OO_FLAG_REVERSE_VIDEO] ? YES : NO;
@@ -163,13 +146,19 @@ void OOToposGame::beforeTurn() {
g_comprehend->_drawFlags &= ~IMAGEF_REVERSE;
}
}
+}
+void OOToposGame::beforePrompt() {
// Handle the computer console if in front of it
computerConsole();
}
-void OOToposGame::afterTurn() {
- ComprehendGameV2::afterTurn();
+void OOToposGame::afterPrompt() {
+ ComprehendGameV2::afterPrompt();
+
+ if (_currentRoom != _currentRoomCopy)
+ _updateFlags |= UPDATE_GRAPHICS;
+ _currentRoom = _currentRoomCopy;
}
void OOToposGame::handleSpecialOpcode(uint8 operand) {
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index 0024ad9e06..a7f67a1376 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -38,6 +38,7 @@ private:
YesNo _noFloodfill, _lightOn;
int _stringVal1, _stringVal2;
bool _printComputerMsg, _shipNotWorking;
+ int _currentRoomCopy;
/**
* Randomizes a guard to different locations
@@ -80,7 +81,8 @@ public:
void beforeGame() override;
void beforeTurn() override;
- void afterTurn() override;
+ void beforePrompt() override;
+ void afterPrompt() override;
int roomIsSpecial(unsigned room_index, unsigned *room_desc_string) override;
void handleSpecialOpcode(uint8 operand) override;
bool handle_restart() override;
More information about the Scummvm-git-logs
mailing list