[Scummvm-git-logs] scummvm master -> 49fece637edd2ac69df341a1edf53487dcf1b7a1

neuromancer noreply at scummvm.org
Sun Jan 7 07:08:55 UTC 2024


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:
49fece637e FREESCAPE: first implementation of initGameState and some UI fixes for DOS in eclipse


Commit: 49fece637edd2ac69df341a1edf53487dcf1b7a1
    https://github.com/scummvm/scummvm/commit/49fece637edd2ac69df341a1edf53487dcf1b7a1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-01-07T08:08:47+01:00

Commit Message:
FREESCAPE: first implementation of initGameState and some UI fixes for DOS in eclipse

Changed paths:
    engines/freescape/games/eclipse/dos.cpp
    engines/freescape/games/eclipse/eclipse.cpp
    engines/freescape/games/eclipse/eclipse.h
    engines/freescape/loaders/8bitBinaryLoader.cpp


diff --git a/engines/freescape/games/eclipse/dos.cpp b/engines/freescape/games/eclipse/dos.cpp
index cab51c53335..aac934f7f83 100644
--- a/engines/freescape/games/eclipse/dos.cpp
+++ b/engines/freescape/games/eclipse/dos.cpp
@@ -72,8 +72,16 @@ void EclipseEngine::drawDOSUI(Graphics::Surface *surface) {
 	uint32 black = _gfx->_texturePixelFormat.ARGBToColor(0xFF, 0x00, 0x00, 0x00);
 	uint32 white = _gfx->_texturePixelFormat.ARGBToColor(0xFF, 0xFF, 0xFF, 0xFF);
 
-	if (!_currentAreaMessages.empty())
-		drawStringInSurface(_currentAreaMessages[0], 102, 135, black, yellow, surface);
+	Common::String message;
+	int deadline;
+	getLatestMessages(message, deadline);
+	if (deadline <= _countdown) {
+		drawStringInSurface(message, 102, 135, black, yellow, surface);
+		_temporaryMessages.push_back(message);
+		_temporaryMessageDeadlines.push_back(deadline);
+	} else if (!_currentAreaMessages.empty())
+		drawStringInSurface(_currentArea->_name, 102, 135, black, yellow, surface);
+
 	drawStringInSurface(Common::String::format("%07d", score), 136, 6, black, white, surface);
 }
 
diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index 09d2377ba8a..6a7dc294305 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -83,6 +83,33 @@ EclipseEngine::EclipseEngine(OSystem *syst, const ADGameDescription *gd) : Frees
 	_playerSteps.push_back(25);
 }
 
+void EclipseEngine::initGameState() {
+	_flyMode = false;
+	_hasFallen = false;
+	_noClipMode = false;
+	_playerWasCrushed = false;
+	_shootingFrames = 0;
+	_underFireFrames = 0;
+	_yaw = 0;
+	_pitch = 0;
+
+	for (int i = 0; i < k8bitMaxVariable; i++) // TODO: check maximum variable
+		_gameStateVars[i] = 0;
+
+	for (auto &it : _areaMap)
+		it._value->resetArea();
+
+	_gameStateBits = 0;
+
+	_playerHeightNumber = 1;
+	_playerHeight = _playerHeights[_playerHeightNumber];
+	removeTimers();
+	startCountdown(_initialCountdown);
+	_lastMinute = 0;
+	_demoIndex = 0;
+	_demoEvents.clear();
+}
+
 void EclipseEngine::gotoArea(uint16 areaID, int entranceID) {
 	debugC(1, kFreescapeDebugMove, "Jumping to area: %d, entrance: %d", areaID, entranceID);
 
diff --git a/engines/freescape/games/eclipse/eclipse.h b/engines/freescape/games/eclipse/eclipse.h
index 10e2426abc8..7fbd6255654 100644
--- a/engines/freescape/games/eclipse/eclipse.h
+++ b/engines/freescape/games/eclipse/eclipse.h
@@ -41,6 +41,8 @@ public:
 	void initZX();
 	void loadAssetsCPCDemo() override;
 	void loadAssetsZXDemo() override;
+
+	void initGameState() override;
 	void executePrint(FCLInstruction &instruction) override;
 
 	void drawDOSUI(Graphics::Surface *surface) override;
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 52b64f4afc6..ebe21e8ffb1 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -800,6 +800,8 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse
 			_initialCountdown = 359999; // 99:59:59
 	} else if (isCastle())
 		_initialCountdown = 1000000000;
+	else if (isEclipse())
+		_initialCountdown = 7200; // 02:00:00
 
 	if (isAmiga() || isAtariST())
 		file->seek(offset + 0x190);




More information about the Scummvm-git-logs mailing list