[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