[Scummvm-git-logs] scummvm master -> a3e64f2d64df35f0ca6ca113924da85d4cf22eef
neuromancer
noreply at scummvm.org
Mon Jul 13 12:24:29 UTC 2026
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
921b8f33b3 COLONY: allow to use ESC to break free from animations
56a5e10bc8 COLONY: adjusted bar position for mac color
4f6d2fbfcb COLONY: more adjusts for the bar position in mac color
a3e64f2d64 COLONY: added missing effect in mac
Commit: 921b8f33b362a1a2468ad8bec9fcedcc87b3df43
https://github.com/scummvm/scummvm/commit/921b8f33b362a1a2468ad8bec9fcedcc87b3df43
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-07-13T14:21:48+02:00
Commit Message:
COLONY: allow to use ESC to break free from animations
Changed paths:
engines/colony/animation.cpp
diff --git a/engines/colony/animation.cpp b/engines/colony/animation.cpp
index 98fdba9fb25..4636d660682 100644
--- a/engines/colony/animation.cpp
+++ b/engines/colony/animation.cpp
@@ -605,9 +605,11 @@ void ColonyEngine::playAnimation() {
debugC(5, kColonyDebugAnimation, "Animation Mouse: %d, %d", logical.x, logical.y);
} else if (event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_START) {
if (event.customType == kActionEscape) {
- openMainMenuDialog();
- _gfx->computeScreenViewport();
- needsDraw = true;
+ // Exit the animation like right-click/Return. Opening the
+ // main menu here instead would be a dead end: save/load
+ // are disabled while _animationRunning is set.
+ debugC(1, kColonyDebugAnimation, "Animation: ESC exit");
+ _animationRunning = false;
}
} else if (event.type == Common::EVENT_KEYDOWN) {
if (event.kbd.keycode == Common::KEYCODE_RETURN) {
Commit: 56a5e10bc8204c5066d2fd9539d7c60b498fa39f
https://github.com/scummvm/scummvm/commit/56a5e10bc8204c5066d2fd9539d7c60b498fa39f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-07-13T14:21:48+02:00
Commit Message:
COLONY: adjusted bar position for mac color
Changed paths:
engines/colony/ui.cpp
diff --git a/engines/colony/ui.cpp b/engines/colony/ui.cpp
index 5b0cf0516d2..00eff139f11 100644
--- a/engines/colony/ui.cpp
+++ b/engines/colony/ui.cpp
@@ -627,19 +627,38 @@ void ColonyEngine::drawDashboardMac() {
if (_armor > 0 && _pictPower) {
// power.c draws the bars with QuickDraw MoveTo/LineTo after shifting
// the PICT rect. GL line rasterization does not cover the same pixels,
- // so draw the observed 18x2 bar strips explicitly.
- const int infoLeft = _powerRect.left - 1;
- const int bot = _powerRect.bottom - 27; // power.c: bot = info.bottom - 27
-
- for (int i = 0; i < 3; i++) {
- // Reference B&W frame: columns start at x 10, 33, 56; bars are
- // inset by 2 pixels on each side: x 12..29, 35..52, 58..75.
- const int lft = 3 + infoLeft + i * 23;
- for (int j = 0; j < ePower[i] && j < 20; j++) {
- const int ln = bot - 3 * j;
- if (ln <= _powerRect.top)
- break;
- _gfx->fillRect(Common::Rect(lft + 1, ln - 1, lft + 19, ln + 1), colBlue);
+ // so draw the observed bar strips explicitly.
+ if (macColor) {
+ // Color power.c DrawInfo(): lft = 3 + info.left + i*23 with the
+ // shifted info rect's local origin at engine x = _powerRect.left + 3;
+ // strips are MoveTo(lft+1)..LineTo(lft+16) = 16px wide.
+ const int infoLeft = _powerRect.left + 3;
+ const int bot = _powerRect.bottom - 27; // power.c: bot = info.bottom - 27
+
+ for (int i = 0; i < 3; i++) {
+ const int lft = 3 + infoLeft + i * 23;
+ for (int j = 0; j < ePower[i] && j < 20; j++) {
+ const int ln = bot - 3 * j;
+ if (ln <= _powerRect.top)
+ break;
+ _gfx->fillRect(Common::Rect(lft + 1, ln - 1, lft + 17, ln + 1), colBlue);
+ }
+ }
+ } else {
+ // The B&W art uses other sizes than the color source. Reference B&W
+ // frame: columns start at x 10, 33, 56; bars are inset by 2 pixels
+ // on each side: x 12..29, 35..52, 58..75 (18px wide).
+ const int infoLeft = _powerRect.left - 1;
+ const int bot = _powerRect.bottom - 27; // power.c: bot = info.bottom - 27
+
+ for (int i = 0; i < 3; i++) {
+ const int lft = 3 + infoLeft + i * 23;
+ for (int j = 0; j < ePower[i] && j < 20; j++) {
+ const int ln = bot - 3 * j;
+ if (ln <= _powerRect.top)
+ break;
+ _gfx->fillRect(Common::Rect(lft + 1, ln - 1, lft + 19, ln + 1), colBlue);
+ }
}
}
}
Commit: 4f6d2fbfcb35e6a0dca34b8f73e71101bb4f8106
https://github.com/scummvm/scummvm/commit/4f6d2fbfcb35e6a0dca34b8f73e71101bb4f8106
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-07-13T14:21:48+02:00
Commit Message:
COLONY: more adjusts for the bar position in mac color
Changed paths:
engines/colony/ui.cpp
diff --git a/engines/colony/ui.cpp b/engines/colony/ui.cpp
index 00eff139f11..4f41a4b0752 100644
--- a/engines/colony/ui.cpp
+++ b/engines/colony/ui.cpp
@@ -599,10 +599,16 @@ void ColonyEngine::drawDashboardMac() {
}
// power.c: SetRect(&info, -2, -2, xSize-2, ySize-2); DrawPicture(inf, &info)
+ // â art pixel (2,2) sits at the window origin, so color blits at -2.
+ // The B&W path keeps its screenshot-calibrated +1 offset.
// In the original B&W game, GetPicture(-32752) returns null when !armor,
// so DrawPicture is a no-op â the window just shows white fill.
- if (_pictPower)
- drawPictAt(_pictPower, _powerRect.left + 1, _powerRect.top + 1);
+ if (_pictPower) {
+ if (macColor)
+ drawPictAt(_pictPower, _powerRect.left - 2, _powerRect.top - 2);
+ else
+ drawPictAt(_pictPower, _powerRect.left + 1, _powerRect.top + 1);
+ }
if (!macColor) {
// Match the B&W Window Manager shadow as pixels. The shadow is
@@ -630,10 +636,10 @@ void ColonyEngine::drawDashboardMac() {
// so draw the observed bar strips explicitly.
if (macColor) {
// Color power.c DrawInfo(): lft = 3 + info.left + i*23 with the
- // shifted info rect's local origin at engine x = _powerRect.left + 3;
- // strips are MoveTo(lft+1)..LineTo(lft+16) = 16px wide.
- const int infoLeft = _powerRect.left + 3;
- const int bot = _powerRect.bottom - 27; // power.c: bot = info.bottom - 27
+ // shifted info rect's local origin at engine x = _powerRect.left
+ // (PICT blitted at -2); strips MoveTo(lft+1)..LineTo(lft+16) = 16px.
+ const int infoLeft = _powerRect.left;
+ const int bot = _powerRect.bottom - 30; // power.c: bot = info.bottom - 27
for (int i = 0; i < 3; i++) {
const int lft = 3 + infoLeft + i * 23;
Commit: a3e64f2d64df35f0ca6ca113924da85d4cf22eef
https://github.com/scummvm/scummvm/commit/a3e64f2d64df35f0ca6ca113924da85d4cf22eef
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-07-13T14:21:48+02:00
Commit Message:
COLONY: added missing effect in mac
Changed paths:
engines/colony/interaction.cpp
diff --git a/engines/colony/interaction.cpp b/engines/colony/interaction.cpp
index bd6ad01bd42..a1ed60d3366 100644
--- a/engines/colony/interaction.cpp
+++ b/engines/colony/interaction.cpp
@@ -484,7 +484,39 @@ void ColonyEngine::destroyRobot(int num) {
_robotArray[gx][gy] = 0;
}
}
- _sound->play(Sound::kExplode);
+ // Mac shoot.c: InvertRect(&Clip) strobe while the explosion sound
+ // plays (16 inversions with sound off). DOS SHOOT.C has no flash.
+ if (isMacRenderMode()) {
+ auto invertViewport = [this]() {
+ _gfx->setXorMode(true);
+ _gfx->fillRect(_screenR, 0xFFFFFF);
+ _gfx->setXorMode(false);
+ _gfx->copyToScreen();
+ _system->updateScreen();
+ };
+ const uint32 kFlipMs = 40;
+ int flips = 0;
+ if (!_soundOn) {
+ for (; flips < 16 && !shouldQuit(); flips++) {
+ invertViewport();
+ _system->delayMillis(kFlipMs);
+ }
+ } else {
+ _sound->play(Sound::kExplode);
+ const uint32 start = _system->getMillis();
+ while (!shouldQuit() && _sound->isPlaying() &&
+ _system->getMillis() - start < 1200) {
+ invertViewport();
+ _system->delayMillis(kFlipMs);
+ flips++;
+ }
+ _sound->stop();
+ }
+ if (flips & 1)
+ invertViewport();
+ } else {
+ _sound->play(Sound::kExplode);
+ }
copyOverflowObjectToSlot(num);
debugC(1, kColonyDebugCombat, "Robot %d destroyed!", num);
} else {
More information about the Scummvm-git-logs
mailing list