[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