[Scummvm-git-logs] scummvm master -> 964497ef2f28446b4184e61ffa4bbc6746aef3f5

neuromancer noreply at scummvm.org
Tue Aug 1 19:27:16 UTC 2023


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:
fc592400fc FREESCAPE: added drawFullscreenSurface and refactor rendering code
800bbc008a FREESCAPE: disable mouse pointer during gameplay
88cb156888 FREESCAPE: make sure time-related variables are updated correctly in driller and dark
964497ef2f FREESCAPE: add skanners in dark


Commit: fc592400fcf56806a90f52b77f5af985b31d3f39
    https://github.com/scummvm/scummvm/commit/fc592400fcf56806a90f52b77f5af985b31d3f39
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-01T21:29:09+02:00

Commit Message:
FREESCAPE: added drawFullscreenSurface and refactor rendering code

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/dark/dark.cpp
    engines/freescape/games/driller/driller.cpp
    engines/freescape/games/eclipse.cpp
    engines/freescape/ui.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 90d3059ac45..a2b53f3e235 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -118,6 +118,7 @@ public:
 	virtual void borderScreen();
 	virtual void titleScreen();
 
+	void drawFullscreenSurface(Graphics::Surface *surface);
 	virtual void loadBorder();
 	virtual void processBorder();
 	void drawBorder();
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index 1e44abe35a0..d84d52ea800 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -409,14 +409,7 @@ void DarkEngine::drawFullscreenMessage(Common::String message, uint32 front, Gra
 		y = y + 8;
 	}
 
-	if (!_uiTexture)
-		_uiTexture = _gfx->createTexture(surface);
-	else
-		_uiTexture->update(surface);
-
-	_gfx->setViewport(_fullscreenViewArea);
-	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
-	_gfx->setViewport(_viewArea);
+	drawFullscreenSurface(surface);
 }
 
 void DarkEngine::drawFullscreenMessageAndWait(Common::String message) {
@@ -562,15 +555,7 @@ void DarkEngine::drawInfoMenu() {
 			}
 		}
 		drawFrame();
-
-		if (!_uiTexture)
-			_uiTexture = _gfx->createTexture(surface);
-		else
-			_uiTexture->update(surface);
-
-		_gfx->setViewport(_fullscreenViewArea);
-		_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
-		_gfx->setViewport(_viewArea);
+		drawFullscreenSurface(surface);
 
 		_gfx->flipBuffer();
 		g_system->updateScreen();
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index b8bd14761a3..84f14a48b6c 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -283,10 +283,7 @@ void DrillerEngine::drawInfoMenu() {
 	} else if (isAmiga() || isAtariST())
 		drawStringInSurface("press any key to continue", 66, 97, front, black, surface);
 
-	_uiTexture->update(surface);
-	_gfx->setViewport(_fullscreenViewArea);
-	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
-	_gfx->setViewport(_viewArea);
+	drawFullscreenSurface(surface);
 
 	_gfx->flipBuffer();
 	g_system->updateScreen();
diff --git a/engines/freescape/games/eclipse.cpp b/engines/freescape/games/eclipse.cpp
index 0940f7fbf55..e6f160d170e 100644
--- a/engines/freescape/games/eclipse.cpp
+++ b/engines/freescape/games/eclipse.cpp
@@ -191,13 +191,7 @@ void EclipseEngine::drawUI() {
 		drawStringInSurface(_currentAreaMessages[0], 102, 135, black, yellow, surface);
 	drawStringInSurface(Common::String::format("%07d", score), 136, 6, black, white, surface);
 
-	if (!_uiTexture)
-		_uiTexture = _gfx->createTexture(surface);
-	else
-		_uiTexture->update(surface);
-
-	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
-
+	drawFullscreenSurface(surface);
 	surface->free();
 	delete surface;
 
diff --git a/engines/freescape/ui.cpp b/engines/freescape/ui.cpp
index 6a2f5dda482..d5e94e6fcb2 100644
--- a/engines/freescape/ui.cpp
+++ b/engines/freescape/ui.cpp
@@ -103,6 +103,17 @@ void FreescapeEngine::borderScreen() {
 	_gfx->clear(0, 0, 0, true);
 }
 
+void FreescapeEngine::drawFullscreenSurface(Graphics::Surface *surface) {
+	if (!_uiTexture)
+		_uiTexture = _gfx->createTexture(surface);
+	else
+		_uiTexture->update(surface);
+
+	_gfx->setViewport(_fullscreenViewArea);
+	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
+	_gfx->setViewport(_viewArea);
+}
+
 void FreescapeEngine::drawUI() {
 	Graphics::Surface *surface = nullptr;
 	if (_border) { // This can be removed when all the borders are loaded
@@ -125,14 +136,7 @@ void FreescapeEngine::drawUI() {
 	else if (isAmiga() || isAtariST())
 		drawAmigaAtariSTUI(surface);
 
-	if (!_uiTexture)
-		_uiTexture = _gfx->createTexture(surface);
-	else
-		_uiTexture->update(surface);
-
-	_gfx->setViewport(_fullscreenViewArea);
-	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _uiTexture);
-	_gfx->setViewport(_viewArea);
+	drawFullscreenSurface(surface);
 
 	surface->free();
 	delete surface;


Commit: 800bbc008ab937a106e94fd512f1f8f3669bf662
    https://github.com/scummvm/scummvm/commit/800bbc008ab937a106e94fd512f1f8f3669bf662
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-01T21:29:09+02:00

Commit Message:
FREESCAPE: disable mouse pointer during gameplay

Changed paths:
    engines/freescape/freescape.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index c1cddb4903d..2b9dfcad525 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -582,6 +582,7 @@ Common::Error FreescapeEngine::run() {
 	bool endGame = false;
 	// Draw first frame
 
+	g_system->showMouse(false);
 	g_system->lockMouse(true);
 	resetInput();
 	_gfx->computeScreenViewport();


Commit: 88cb1568884bf3cf5bb3ff8256b2feb090040586
    https://github.com/scummvm/scummvm/commit/88cb1568884bf3cf5bb3ff8256b2feb090040586
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-01T21:29:09+02:00

Commit Message:
FREESCAPE: make sure time-related variables are updated correctly in driller and dark

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


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 2b9dfcad525..912fecf810c 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -524,17 +524,7 @@ void FreescapeEngine::executeMovementConditions() {
 	executeLocalGlobalConditions(false, true, false);
 }
 
-void FreescapeEngine::updateTimeVariables() {
-	int seconds, minutes, hours;
-	getTimeFromCountdown(seconds, minutes, hours);
-
-	if (_lastMinute != minutes) {
-		_lastMinute = minutes;
-		_gameStateVars[0x1e] += 1;
-		_gameStateVars[0x1f] += 1;
-		executeLocalGlobalConditions(false, true, false); // Only execute "on collision" room/global conditions
-	}
-}
+void FreescapeEngine::updateTimeVariables() {}
 
 Common::Error FreescapeEngine::run() {
 	_vsyncEnabled = g_system->getFeatureState(OSystem::kFeatureVSync);
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index a2b53f3e235..3b8057127b4 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -497,6 +497,8 @@ private:
 	void initCPC();
 	void initC64();
 
+	void updateTimeVariables() override;
+
 	Common::Rect _moveFowardArea;
 	Common::Rect _moveLeftArea;
 	Common::Rect _moveRightArea;
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index d84d52ea800..4c2df08a09e 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -342,14 +342,14 @@ void DarkEngine::updateTimeVariables() {
 	int seconds, minutes, hours;
 	getTimeFromCountdown(seconds, minutes, hours);
 	if (_lastTenSeconds != seconds / 10) {
+		_gameStateVars[0x1e] += 1;
+		_gameStateVars[0x1f] += 1;
 		_lastTenSeconds = seconds / 10;
 		executeLocalGlobalConditions(false, false, true);
 	}
 
 	if (_lastMinute != minutes) {
 		_lastMinute = minutes;
-		_gameStateVars[0x1e] += 1;
-		_gameStateVars[0x1f] += 1;
 		executeLocalGlobalConditions(false, true, false);
 	}
 }
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 84f14a48b6c..36d8adefa9c 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -869,6 +869,18 @@ void DrillerEngine::drawSensorShoot(Sensor *sensor) {
 	_gfx->renderSensorShoot(1, sensor->getOrigin(), target, _viewArea);
 }
 
+void DrillerEngine::updateTimeVariables() {
+	int seconds, minutes, hours;
+	getTimeFromCountdown(seconds, minutes, hours);
+
+	if (_lastMinute != minutes) {
+		_lastMinute = minutes;
+		_gameStateVars[0x1e] += 1;
+		_gameStateVars[0x1f] += 1;
+		executeLocalGlobalConditions(false, true, false); // Only execute "on collision" room/global conditions
+	}
+}
+
 Common::Error DrillerEngine::saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave) {
 	for (auto &it : _areaMap) { // All but skip area 255
 		if (it._key == 255)


Commit: 964497ef2f28446b4184e61ffa4bbc6746aef3f5
    https://github.com/scummvm/scummvm/commit/964497ef2f28446b4184e61ffa4bbc6746aef3f5
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-01T21:29:09+02:00

Commit Message:
FREESCAPE: add skanners in dark

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/dark/dark.cpp
    engines/freescape/games/dark/dos.cpp
    engines/freescape/games/dark/zx.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 3b8057127b4..fc9155b6c46 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -525,6 +525,7 @@ public:
 
 	uint32 _initialEnergy;
 	uint32 _initialShield;
+	void addSkanner(Area *area);
 
 	void initGameState() override;
 	void borderScreen() override;
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index 4c2df08a09e..98633b3a7cd 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -178,6 +178,39 @@ bool DarkEngine::checkECD(int index) {
 	return true;
 }
 
+void DarkEngine::addSkanner(Area *area) {
+	GeometricObject *obj = nullptr;
+	int16 id;
+
+	id = 248;
+	// If first object is already added, do not re-add any
+	if (area->objectWithID(id) != nullptr)
+		return;
+
+	debugC(1, kFreescapeDebugParser, "Adding object %d to room structure", id);
+	obj = (GeometricObject *)_areaMap[255]->objectWithID(id);
+	assert(obj);
+	obj = (GeometricObject *)obj->duplicate();
+	obj->makeInvisible();
+	area->addObject(obj);
+
+	id = 249;
+	debugC(1, kFreescapeDebugParser, "Adding object %d to room structure", id);
+	obj = (GeometricObject *)_areaMap[255]->objectWithID(id);
+	assert(obj);
+	obj = (GeometricObject *)obj->duplicate();
+	obj->makeInvisible();
+	area->addObject(obj);
+
+	id = 250;
+	debugC(1, kFreescapeDebugParser, "Adding object %d to room structure", id);
+	obj = (GeometricObject *)_areaMap[255]->objectWithID(id);
+	assert(obj);
+	obj = (GeometricObject *)obj->duplicate();
+	obj->makeInvisible();
+	area->addObject(obj);
+}
+
 bool DarkEngine::checkIfGameEnded() {
 	if (_gameStateVars[kVariableDarkECD] > 0) {
 		bool destroyed = checkECD(_gameStateVars[kVariableDarkECD] - 1);
diff --git a/engines/freescape/games/dark/dos.cpp b/engines/freescape/games/dark/dos.cpp
index 8c6ca0a64ad..3e74feba46f 100644
--- a/engines/freescape/games/dark/dos.cpp
+++ b/engines/freescape/games/dark/dos.cpp
@@ -63,6 +63,7 @@ void DarkEngine::loadAssetsDOSDemo() {
 		for (auto &it : _areaMap) {
 			addWalls(it._value);
 			addECDs(it._value);
+			addSkanner(it._value);
 		}
 	} else if (_renderMode == Common::kRenderCGA) {
 		//loadBundledImages();
@@ -101,6 +102,7 @@ void DarkEngine::loadAssetsDOSFullGame() {
 		for (auto &it : _areaMap) {
 			addWalls(it._value);
 			addECDs(it._value);
+			addSkanner(it._value);
 		}
 	} else if (_renderMode == Common::kRenderCGA) {
 		loadBundledImages();
diff --git a/engines/freescape/games/dark/zx.cpp b/engines/freescape/games/dark/zx.cpp
index 09e98327d4b..b097204b39d 100644
--- a/engines/freescape/games/dark/zx.cpp
+++ b/engines/freescape/games/dark/zx.cpp
@@ -63,6 +63,7 @@ void DarkEngine::loadAssetsZXDemo() {
 	for (auto &it : _areaMap) {
 		addWalls(it._value);
 		addECDs(it._value);
+		addSkanner(it._value);
 	}
 }
 




More information about the Scummvm-git-logs mailing list