[Scummvm-git-logs] scummvm master -> a0a46b7c1073597aefbfeeebb62cf2e9d97ce689

dreammaster paulfgilbert at gmail.com
Sat Nov 7 18:32:15 UTC 2020


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

Summary:
ec6fb9353a GLK: COMPREHEND: Fix drawing too bright rooms
b1b907b96b GLK: COMPREHEND: Renaming of computer printing method
ce1bdb3251 GLK: COMPREHEND: Remaining handleSpecialOpcode cases
a0a46b7c10 GLK: COMPREHEND: Added computerConsole method


Commit: ec6fb9353a1c24ebb0cc49980333059ab5e1c376
    https://github.com/scummvm/scummvm/commit/ec6fb9353a1c24ebb0cc49980333059ab5e1c376
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T10:32:00-08:00

Commit Message:
GLK: COMPREHEND: Fix drawing too bright rooms

Changed paths:
    engines/glk/comprehend/game.cpp


diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index b851eb9fc7..0252a4daf8 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -399,7 +399,7 @@ void ComprehendGame::update_graphics() {
 
 	case ROOM_IS_TOO_BRIGHT:
 		if (_updateFlags & UPDATE_GRAPHICS)
-			g_comprehend->clearScreen(false);
+			g_comprehend->clearScreen(true);
 		break;
 
 	default:


Commit: b1b907b96b4a2fca1a8294c3652d0aa808d09155
    https://github.com/scummvm/scummvm/commit/b1b907b96b4a2fca1a8294c3652d0aa808d09155
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T10:32:00-08:00

Commit Message:
GLK: COMPREHEND: Renaming of computer printing method

Changed paths:
    engines/glk/comprehend/game_oo.cpp
    engines/glk/comprehend/game_oo.h


diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index d8aacc8168..6a29688742 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -53,7 +53,7 @@ static const GameStrings OO_STRINGS = {
 
 OOToposGame::OOToposGame() : ComprehendGameV2(), _restartMode(RESTART_IMMEDIATE),
 		_wearingGoggles(false), _lightOn(false), _stringVal1(0), _stringVal2(0),
-		_addStringFlag(true), _shipNotWorking(false) {
+		_printComputerMsg(true), _shipNotWorking(false) {
 	_gameDataFile = "g0";
 
 	// Extra strings are (annoyingly) stored in the game binary
@@ -242,19 +242,19 @@ void OOToposGame::checkShipWorking() {
 		if (!_flags[idx]) {
 			if (!_stringVal2) {
 				// The following components are not installed
-				console_cond_println(_strings2[132].c_str());
+				printComputerMsg(_strings2[132].c_str());
 				_stringVal2 = 1;
 			}
 
 			// Power Cylinder
-			console_cond_println(_strings[_stringVal1].c_str());
+			printComputerMsg(_strings[_stringVal1].c_str());
 		}
 	}
 
 	_shipNotWorking = _stringVal2 != 0;
 	if (!_shipNotWorking)
 		// The ship is in working order
-		console_cond_println(_strings2[153].c_str());
+		printComputerMsg(_strings2[153].c_str());
 }
 
 void OOToposGame::checkShipFuel() {
@@ -276,7 +276,7 @@ void OOToposGame::checkShipFuel() {
 	// Computer: "Our current evaluation...
 	Instruction strReplace(0xC9, 0x4B);
 	execute_opcode(&strReplace, nullptr, nullptr);
-	console_cond_println(_strings2[146].c_str());
+	printComputerMsg(_strings2[146].c_str());
 
 	FunctionState funcState;
 	Instruction test(2, 75, 76);
@@ -285,17 +285,17 @@ void OOToposGame::checkShipFuel() {
 	if (funcState._testResult) {
 		// Computer: "We should now have enough
 		_flags[OO_FLAG_SUFFICIENT_FUEL] = true;
-		console_cond_println(_strings2[151].c_str());
+		printComputerMsg(_strings2[151].c_str());
 	} else {
 		_flags[OO_FLAG_SUFFICIENT_FUEL] = false;
 	}
 }
 
 void OOToposGame::shipDepartCheck() {
-	_addStringFlag = false;
+	_printComputerMsg = false;
 	checkShipWorking();
 	checkShipFuel();
-	_addStringFlag = true;
+	_printComputerMsg = true;
 
 	if (!_shipNotWorking && _flags[OO_FLAG_SUFFICIENT_FUEL]) {
 		Item *item = get_item(ITEM_SERUM_VIAL - 1);
@@ -318,11 +318,10 @@ void OOToposGame::shipDepartCheck() {
 	}
 }
 
-void OOToposGame::console_cond_println(const char *str) {
-	if (_addStringFlag)
+void OOToposGame::printComputerMsg(const char *str) {
+	if (_printComputerMsg)
 		console_println(str);
 }
 
-
 } // namespace Comprehend
 } // namespace Glk
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index f76fc5cef5..429fa068fa 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -35,7 +35,7 @@ private:
 	RestartMode _restartMode;
 	bool _wearingGoggles, _lightOn;
 	int _stringVal1, _stringVal2;
-	bool _addStringFlag, _shipNotWorking;
+	bool _printComputerMsg, _shipNotWorking;
 
 	void randomizeGuardLocation();
 	void computerResponse();
@@ -59,7 +59,7 @@ private:
 	 * A wrapped version of console_println that only prints the passed string
 	 * if the _addStringFlag is set
 	 */
-	void console_cond_println(const char *str);
+	void printComputerMsg(const char *str);
 public:
 	OOToposGame();
 	~OOToposGame() override {}


Commit: ce1bdb32517349b03e8e904bb9089970b97921c2
    https://github.com/scummvm/scummvm/commit/ce1bdb32517349b03e8e904bb9089970b97921c2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T10:32:00-08:00

Commit Message:
GLK: COMPREHEND: Remaining handleSpecialOpcode cases

Changed paths:
    engines/glk/comprehend/game_oo.cpp


diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index 6a29688742..e9dd64760b 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -189,10 +189,15 @@ void OOToposGame::handleSpecialOpcode(uint8 operand) {
 		break;
 
 	case 9:
-		error("TODO: Special 9");
+		// Checks the ship fuel
+		checkShipFuel();
+		randomizeGuardLocation();
+		break;
 
 	case 10:
-		error("TODO: Special 10");
+		// Checks whether the ship is working
+		checkShipWorking();
+		break;
 
 	default:
 		break;


Commit: a0a46b7c1073597aefbfeeebb62cf2e9d97ce689
    https://github.com/scummvm/scummvm/commit/a0a46b7c1073597aefbfeeebb62cf2e9d97ce689
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T10:32:00-08:00

Commit Message:
GLK: COMPREHEND: Added computerConsole method

Changed paths:
    engines/glk/comprehend/game_oo.cpp
    engines/glk/comprehend/game_oo.h


diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index e9dd64760b..b1f68fb565 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -34,11 +34,16 @@ enum OOToposRoomFlag {
 };
 
 enum OOToposFlag {
+	OO_FLAG_9 = 9,
 	OO_FLAG_22 = 22,
 	OO_BRIGHT_ROOM = 25,
 	OO_FLAG_WEARING_GOGGLES = 27,
 	OO_FLAG_FLASHLIGHT_ON = 39,
+	OO_FLAG_43 = 43,
+	OO_FLAG_44 = 44,
 	OO_FLAG_SUFFICIENT_FUEL = 51,
+	OO_FLAG_58 = 58,
+	OO_FLAG_59 = 59,
 	OO_FLAG_READY_TO_DEPART = 60,
 	OO_TRACTOR_BEAM = 71
 };
@@ -89,8 +94,7 @@ void OOToposGame::beforeGame() {
 	g_comprehend->glk_window_clear(g_comprehend->_bottomWindow);
 }
 
-int OOToposGame::roomIsSpecial(unsigned room_index,
-                               unsigned *roomDescString) {
+int OOToposGame::roomIsSpecial(unsigned room_index, unsigned *roomDescString) {
 	Room *room = &_rooms[room_index];
 
 	// Is the room dark
@@ -134,6 +138,9 @@ void OOToposGame::beforeTurn() {
 		_wearingGoggles = _flags[OO_FLAG_WEARING_GOGGLES];
 		_updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
 	}
+
+	// Handle the computer console if in front of it
+	computerConsole();
 }
 
 bool OOToposGame::afterTurn() {
@@ -230,6 +237,34 @@ void OOToposGame::randomizeGuardLocation() {
 	}
 }
 
+void OOToposGame::computerConsole() {
+	if (_currentRoom == 57) {
+		if (!_flags[OO_FLAG_9]) {
+			// Mission Code:
+			console_println("281");
+		} else if (!_flags[OO_FLAG_58]) {
+			// Welcome back! I was wondering if you would be returning
+			console_println("283");
+			_flags[OO_FLAG_58] = true;
+			_printComputerMsg = true;
+			checkShipWorking();
+		} else if (_flags[OO_FLAG_59]) {
+			checkShipDepart();
+		} else if (_flags[OO_FLAG_43]) {
+			// We can reach Mealy Sukas with the fuel we have left
+			console_println("28E");
+			_flags[OO_FLAG_59] = true;
+
+			if (_flags[OO_FLAG_44])
+				// The currency on Mealy Sukas is the 'frod'
+				console_println("290");
+			else
+				// Without evaluation data as to the current fuel prices
+				console_println("28F");
+		}
+	}
+}
+
 void OOToposGame::computerResponse() {
 	console_println(_strings2[145].c_str());
 	if (_flags[43])
@@ -296,7 +331,7 @@ void OOToposGame::checkShipFuel() {
 	}
 }
 
-void OOToposGame::shipDepartCheck() {
+void OOToposGame::checkShipDepart() {
 	_printComputerMsg = false;
 	checkShipWorking();
 	checkShipFuel();
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index 429fa068fa..dbe0fa0423 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -37,7 +37,19 @@ private:
 	int _stringVal1, _stringVal2;
 	bool _printComputerMsg, _shipNotWorking;
 
+	/**
+	 * Randomizes a guard to different locations
+	 */
 	void randomizeGuardLocation();
+
+	/**
+	 * Handles the computer console
+	 */
+	void computerConsole();
+
+	/**
+	 * Handles displaying a cmputer response
+	 */
 	void computerResponse();
 
 	/**
@@ -53,7 +65,7 @@ private:
 	/**
 	 * Checks whether the ship can depart, printing out the computer's response
 	 */
-	void shipDepartCheck();
+	void checkShipDepart();
 
 	/**
 	 * A wrapped version of console_println that only prints the passed string




More information about the Scummvm-git-logs mailing list