[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