[Scummvm-git-logs] scummvm master -> 66bc819014bb675b685eabec60781442a7b2a660

neuromancer noreply at scummvm.org
Sun Feb 25 20:59:45 UTC 2024


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

Summary:
becdca7286 FREESCAPE: correct shield values in eclipse
9be2a00557 FREESCAPE: shield/energy handling during time increments for eclipse
f4c4f43691 FREESCAPE: correctly initialize time variables in dark
a0f4705e62 FREESCAPE: fixed transparent colors in eclipse
66bc819014 FREESCAPE: added ankh indicator for eclipse in dos/cpc


Commit: becdca7286177f7bdde8122043e2e00398051ad1
    https://github.com/scummvm/scummvm/commit/becdca7286177f7bdde8122043e2e00398051ad1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-02-25T22:00:09+01:00

Commit Message:
FREESCAPE: correct shield values in eclipse

Changed paths:
    engines/freescape/games/eclipse/eclipse.cpp


diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index 4dd07e5cf3b..44707a31a29 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -56,10 +56,10 @@ EclipseEngine::EclipseEngine(OSystem *syst, const ADGameDescription *gd) : Frees
 	_angleRotations.push_back(15);
 
 	_maxEnergy = 27;
-	_maxShield = 10; // TODO
+	_maxShield = 50;
 
 	_initialEnergy = 16;
-	_initialShield = 10; // TODO
+	_initialShield = 50;
 
 	_endArea = 1;
 	_endEntrance = 33;
@@ -90,8 +90,9 @@ bool EclipseEngine::checkIfGameEnded() {
 		_hasFallen = false;
 		playSoundFx(4, false);
 
-		if (_gameStateVars[k8bitVariableShield] > 4) {
-			_gameStateVars[k8bitVariableShield] -= 4;
+		// If shield is less than 11 after a fall, the game ends
+		if (_gameStateVars[k8bitVariableShield] > 15 + 11) {
+			_gameStateVars[k8bitVariableShield] -= 15;
 			return false; // Game can continue
 		}
 		if (!_fallenMessage.empty())


Commit: 9be2a0055773eaf269540b1721b5ed6af86725ce
    https://github.com/scummvm/scummvm/commit/9be2a0055773eaf269540b1721b5ed6af86725ce
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-02-25T22:00:09+01:00

Commit Message:
FREESCAPE: shield/energy handling during time increments for eclipse

Changed paths:
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/games/eclipse/eclipse.cpp
    engines/freescape/games/eclipse/eclipse.h


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 9bfe38f0790..e93fdf2aae5 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -370,6 +370,8 @@ void FreescapeEngine::drawFrame() {
 
 void FreescapeEngine::pressedKey(const int keycode) {}
 
+void FreescapeEngine::releasedKey(const int keycode) {}
+
 void FreescapeEngine::resetInput() {
 	_shootMode = false;
 	centerCrossair();
@@ -513,6 +515,13 @@ void FreescapeEngine::processInput() {
 			}
 			break;
 
+		case Common::EVENT_KEYUP:
+			if (_hasFallen)
+				break;
+
+			releasedKey(event.kbd.keycode);
+			break;
+
 		case Common::EVENT_QUIT:
 		case Common::EVENT_RETURN_TO_LAUNCHER:
 			quitGame();
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index de6bf78f91f..267709e14e3 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -267,6 +267,7 @@ public:
 	void resetInput();
 	void generateDemoInput();
 	virtual void pressedKey(const int keycode);
+	virtual void releasedKey(const int keycode);
 	virtual bool onScreenControls(Common::Point mouse);
 	void move(CameraMovement direction, uint8 scale, float deltaTime);
 	void resolveCollisions(Math::Vector3d newPosition);
diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index 44707a31a29..657bba9dac4 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -73,6 +73,11 @@ void EclipseEngine::initGameState() {
 
 	_gameStateVars[k8bitVariableEnergy] = _initialEnergy;
 	_gameStateVars[k8bitVariableShield] = _initialShield;
+
+	int seconds, minutes, hours;
+	getTimeFromCountdown(seconds, minutes, hours);
+	_lastThirtySeconds = seconds / 30;
+	_resting = false;
 }
 
 void EclipseEngine::loadAssets() {
@@ -296,6 +301,7 @@ void EclipseEngine::pressedKey(const int keycode) {
 			if (_temporaryMessages.empty())
 				insertTemporaryMessage(_messagesList[6], _countdown - 2);
 		} else {
+			_resting = true;
 			if (_temporaryMessages.empty())
 				insertTemporaryMessage(_messagesList[7], _countdown - 2);
 			_countdown = _countdown - 5;
@@ -303,6 +309,11 @@ void EclipseEngine::pressedKey(const int keycode) {
 	}
 }
 
+void EclipseEngine::releasedKey(const int keycode) {
+	if (keycode == Common::KEYCODE_r)
+		_resting = false;
+}
+
 void EclipseEngine::drawAnalogClock(Graphics::Surface *surface, int x, int y, uint32 colorHand1, uint32 colorHand2, uint32 colorBack) {
 	// These calls will cover the pixels of the hardcoded clock image
 	drawAnalogClockHand(surface, x, y, 6 * 6 - 90, 12, colorBack);
@@ -328,6 +339,27 @@ void EclipseEngine::drawAnalogClockHand(Graphics::Surface *surface, int x, int y
 	surface->drawLine(x, y, x+(int)w, y+(int)h, color);
 }
 
+void EclipseEngine::updateTimeVariables() {
+	if (_gameStateControl != kFreescapeGameStatePlaying)
+		return;
+	// This function only executes "on collision" room/global conditions
+	int seconds, minutes, hours;
+	getTimeFromCountdown(seconds, minutes, hours);
+	if (_lastThirtySeconds != seconds / 30) {
+		_lastThirtySeconds = seconds / 30;
+
+		if (!_resting && _gameStateVars[k8bitVariableEnergy] > 0) {
+			_gameStateVars[k8bitVariableEnergy] -= 1;
+		}
+
+		if (_gameStateVars[k8bitVariableShield] < _maxShield) {
+			_gameStateVars[k8bitVariableShield] += 1;
+		}
+
+		executeLocalGlobalConditions(false, false, true);
+	}
+}
+
 void EclipseEngine::executePrint(FCLInstruction &instruction) {
 	uint16 index = instruction._source - 1;
 	debugC(1, kFreescapeDebugCode, "Printing message %d", index);
diff --git a/engines/freescape/games/eclipse/eclipse.h b/engines/freescape/games/eclipse/eclipse.h
index 8075b071aab..a7b489831cc 100644
--- a/engines/freescape/games/eclipse/eclipse.h
+++ b/engines/freescape/games/eclipse/eclipse.h
@@ -43,10 +43,15 @@ public:
 	void loadAssets() override;
 	void loadAssetsDOSFullGame() override;
 	void pressedKey(const int keycode) override;
+	void releasedKey(const int keycode) override;
 
 	uint32 _initialEnergy;
 	uint32 _initialShield;
 
+	bool _resting;
+	int _lastThirtySeconds;
+	void updateTimeVariables() override;
+
 	void initDOS();
 	void initCPC();
 	void initZX();


Commit: f4c4f436912a2cb58483890b0a776b4924818571
    https://github.com/scummvm/scummvm/commit/f4c4f436912a2cb58483890b0a776b4924818571
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-02-25T22:00:09+01:00

Commit Message:
FREESCAPE: correctly initialize time variables in dark

Changed paths:
    engines/freescape/games/dark/dark.cpp


diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index 17663fa075c..89f5f65f268 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -184,6 +184,11 @@ void DarkEngine::initGameState() {
 
 	_endArea = 1;
 	_endEntrance = 26;
+
+	int seconds, minutes, hours;
+	getTimeFromCountdown(seconds, minutes, hours);
+	_lastMinute = minutes;
+	_lastTenSeconds = seconds / 10;
 }
 
 void DarkEngine::loadAssets() {


Commit: a0f4705e62b3522f4264e90eda4151f2038c329f
    https://github.com/scummvm/scummvm/commit/a0f4705e62b3522f4264e90eda4151f2038c329f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-02-25T22:00:09+01:00

Commit Message:
FREESCAPE: fixed transparent colors in eclipse

Changed paths:
    engines/freescape/games/eclipse/eclipse.cpp


diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index 657bba9dac4..c9a89d5b413 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -150,11 +150,7 @@ void EclipseEngine::gotoArea(uint16 areaID, int entranceID) {
 	} else
 		playSound(5, false);
 
-	if (_currentArea->_skyColor > 0 && _currentArea->_skyColor != 255) {
-		_gfx->_keyColor = 0;
-	} else
-		_gfx->_keyColor = 255;
-
+	_gfx->_keyColor = 0;
 	swapPalette(areaID);
 	_currentArea->_usualBackgroundColor = isCPC() ? 1 : 0;
 


Commit: 66bc819014bb675b685eabec60781442a7b2a660
    https://github.com/scummvm/scummvm/commit/66bc819014bb675b685eabec60781442a7b2a660
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-02-25T22:00:09+01:00

Commit Message:
FREESCAPE: added ankh indicator for eclipse in dos/cpc

Changed paths:
  A devtools/create_freescape/eclipse_ankh_indicator_Amstrad CPC.bmp
  A devtools/create_freescape/eclipse_ankh_indicator_ega.bmp
    dists/engine-data/freescape.dat
    engines/freescape/games/eclipse/cpc.cpp
    engines/freescape/games/eclipse/dos.cpp
    engines/freescape/games/eclipse/eclipse.cpp
    engines/freescape/games/eclipse/eclipse.h


diff --git a/devtools/create_freescape/eclipse_ankh_indicator_Amstrad CPC.bmp b/devtools/create_freescape/eclipse_ankh_indicator_Amstrad CPC.bmp
new file mode 100644
index 00000000000..7d545593918
Binary files /dev/null and b/devtools/create_freescape/eclipse_ankh_indicator_Amstrad CPC.bmp differ
diff --git a/devtools/create_freescape/eclipse_ankh_indicator_ega.bmp b/devtools/create_freescape/eclipse_ankh_indicator_ega.bmp
new file mode 100644
index 00000000000..7d545593918
Binary files /dev/null and b/devtools/create_freescape/eclipse_ankh_indicator_ega.bmp differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index b2ec93d3552..0b6ce0aae5e 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
diff --git a/engines/freescape/games/eclipse/cpc.cpp b/engines/freescape/games/eclipse/cpc.cpp
index 403fda3b08d..998c865acfe 100644
--- a/engines/freescape/games/eclipse/cpc.cpp
+++ b/engines/freescape/games/eclipse/cpc.cpp
@@ -65,13 +65,11 @@ void EclipseEngine::loadAssetsCPCDemo() {
 	}
 	loadColorPalette();
 	swapPalette(1);
-	//_indicators.push_back(loadBundledImage("dark_fallen_indicator"));
-	//_indicators.push_back(loadBundledImage("dark_crouch_indicator"));
-	//_indicators.push_back(loadBundledImage("dark_walk_indicator"));
-	//_indicators.push_back(loadBundledImage("dark_jet_indicator"));
 
-	//for (auto &it : _indicators)
-	//	it->convertToInPlace(_gfx->_texturePixelFormat);
+	_indicators.push_back(loadBundledImage("eclipse_ankh_indicator"));
+
+	for (auto &it : _indicators)
+		it->convertToInPlace(_gfx->_texturePixelFormat);
 }
 
 void EclipseEngine::drawCPCUI(Graphics::Surface *surface) {
@@ -111,6 +109,7 @@ void EclipseEngine::drawCPCUI(Graphics::Surface *surface) {
 		drawStringInSurface("<", 240, 135, back, front, surface, 'Z' - '$' + 1);
 	}
 	drawAnalogClock(surface, 90, 172, back, other, front);
+	drawIndicator(surface, 45, 4, 12);
 }
 
 } // End of namespace Freescape
diff --git a/engines/freescape/games/eclipse/dos.cpp b/engines/freescape/games/eclipse/dos.cpp
index 2bba2112cd7..6cf5c4c0082 100644
--- a/engines/freescape/games/eclipse/dos.cpp
+++ b/engines/freescape/games/eclipse/dos.cpp
@@ -66,6 +66,12 @@ void EclipseEngine::loadAssetsDOSFullGame() {
 		}
 		_border = load8bitBinImage(&file, 0x210);
 		_border->setPalette((byte *)&kEGADefaultPalette, 0, 16);
+
+		_indicators.push_back(loadBundledImage("eclipse_ankh_indicator"));
+
+		for (auto &it : _indicators)
+			it->convertToInPlace(_gfx->_texturePixelFormat);
+
 	} else if (_renderMode == Common::kRenderCGA) {
 		file.open("SCN1C.DAT");
 		if (file.isOpen()) {
@@ -135,6 +141,7 @@ void EclipseEngine::drawDOSUI(Graphics::Surface *surface) {
 	Common::Rect jarWater(124, 192 - _gameStateVars[k8bitVariableEnergy], 148, 192);
 	surface->fillRect(jarWater, blue);
 
+	drawIndicator(surface, 41, 4, 16);
 }
 
 soundFx *EclipseEngine::load1bPCM(Common::SeekableReadStream *file, int offset) {
diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index c9a89d5b413..9cfdb7eb635 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -335,6 +335,17 @@ void EclipseEngine::drawAnalogClockHand(Graphics::Surface *surface, int x, int y
 	surface->drawLine(x, y, x+(int)w, y+(int)h, color);
 }
 
+void EclipseEngine::drawIndicator(Graphics::Surface *surface, int xPosition, int yPosition, int separation) {
+	if (_indicators.size() == 0)
+		return;
+
+	for (int i = 0; i < 5; i++) {
+		if (_gameStateVars[kVariableEclipseAnkhs] > i)
+			continue;
+		surface->copyRectToSurface(*_indicators[0], xPosition + separation * i, yPosition, Common::Rect(_indicators[0]->w, _indicators[0]->h));
+	}
+}
+
 void EclipseEngine::updateTimeVariables() {
 	if (_gameStateControl != kFreescapeGameStatePlaying)
 		return;
diff --git a/engines/freescape/games/eclipse/eclipse.h b/engines/freescape/games/eclipse/eclipse.h
index a7b489831cc..9dc980e1c8e 100644
--- a/engines/freescape/games/eclipse/eclipse.h
+++ b/engines/freescape/games/eclipse/eclipse.h
@@ -30,6 +30,10 @@ enum EclipseReleaseFlags {
 	GF_ZX_DEMO_MICROHOBBY = (1 << 1),
 };
 
+enum {
+	kVariableEclipseAnkhs = 32,
+};
+
 class EclipseEngine : public FreescapeEngine {
 public:
 	EclipseEngine(OSystem *syst, const ADGameDescription *gd);
@@ -39,6 +43,7 @@ public:
 	void borderScreen() override;
 	void titleScreen() override;
 	void drawInfoMenu() override;
+	void drawIndicator(Graphics::Surface *surface, int xPosition, int yPosition, int separation);
 
 	void loadAssets() override;
 	void loadAssetsDOSFullGame() override;




More information about the Scummvm-git-logs mailing list