[Scummvm-git-logs] scummvm master -> 74f50757b07fa51c415f5bdf270301fe01f8a04d
neuromancer
noreply at scummvm.org
Wed Nov 16 10:40:41 UTC 2022
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
955431a736 FREESCAPE: better validation of sensor objects in castle
478dab8aa9 FREESCAPE: completed table of rotation angles in driller
74f50757b0 FREESCAPE: refactored demo mode event handling
Commit: 955431a7362b48cd90f00ea793253cdd17fb239c
https://github.com/scummvm/scummvm/commit/955431a7362b48cd90f00ea793253cdd17fb239c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-16T11:41:40+01:00
Commit Message:
FREESCAPE: better validation of sensor objects in castle
Changed paths:
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 3f46edc9de6..f22251c4b18 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -217,6 +217,7 @@ Object *FreescapeEngine::load8bitObject(Common::SeekableReadStream *file) {
Common::String conditionSource;
if (isCastle()) { // TODO
+ assert(byteSizeOfObject == 0);
return new Sensor(
objectID,
32 * position,
Commit: 478dab8aa971f8b7565f2ce5a10a1ae73ac894da
https://github.com/scummvm/scummvm/commit/478dab8aa971f8b7565f2ce5a10a1ae73ac894da
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-16T11:41:40+01:00
Commit Message:
FREESCAPE: completed table of rotation angles in driller
Changed paths:
engines/freescape/games/driller.cpp
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index a5511ee9495..ef8a92b90a0 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -49,7 +49,11 @@ DrillerEngine::DrillerEngine(OSystem *syst, const ADGameDescription *gd) : Frees
_playerHeights.push_back(112);
_angleRotations.push_back(5);
- _angleRotations.push_back(9.5);
+ _angleRotations.push_back(10);
+ _angleRotations.push_back(15);
+ _angleRotations.push_back(30);
+ _angleRotations.push_back(45);
+ _angleRotations.push_back(90);
_playerHeight = _playerHeights[_playerHeightNumber];
_playerWidth = 12;
Commit: 74f50757b07fa51c415f5bdf270301fe01f8a04d
https://github.com/scummvm/scummvm/commit/74f50757b07fa51c415f5bdf270301fe01f8a04d
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-16T11:41:40+01:00
Commit Message:
FREESCAPE: refactored demo mode event handling
Changed paths:
engines/freescape/freescape.cpp
engines/freescape/freescape.h
engines/freescape/games/driller.cpp
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 98195b1b02b..8be09bd1b03 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -249,7 +249,7 @@ void FreescapeEngine::generateInput() {
if (_currentDemoInputCode >= 0x16 && _currentDemoInputCode <= 0x1a) {
event = decodeDOSMouseEvent(_currentDemoInputCode, _currentDemoInputRepetition);
- g_system->getEventManager()->pushEvent(event);
+ _demoEvents.push_back(event);
g_system->delayMillis(10);
_currentDemoInputRepetition = 0;
} else if (_currentDemoInputCode == 0x7f) {
@@ -260,7 +260,7 @@ void FreescapeEngine::generateInput() {
event.type = Common::EVENT_KEYDOWN;
event.kbd.keycode = (Common::KeyCode)decodeDOSKey(_currentDemoInputCode);
event.customType = 0xde00;
- g_system->getEventManager()->pushEvent(event);
+ _demoEvents.push_back(event);
debugC(1, kFreescapeDebugMove, "Pushing key: %x with repetition %d", event.kbd.keycode, _currentDemoInputRepetition);
g_system->delayMillis(100);
_currentDemoInputRepetition--;
@@ -276,27 +276,34 @@ void FreescapeEngine::generateInput() {
event.type = Common::EVENT_MOUSEMOVE;
event.mouse = Common::Point(mouseX, mouseY);
event.customType = 0xde00;
- g_system->getEventManager()->pushEvent(event);
byte nextKeyCode = _demoData[_demoIndex++];
if (nextKeyCode == 0x30) {
+ Common::Event spaceEvent;
+ spaceEvent.type = Common::EVENT_KEYDOWN;
+ spaceEvent.kbd.keycode = Common::KEYCODE_SPACE;
+ spaceEvent.customType = 0xde00;
+
+ _demoEvents.push_back(spaceEvent);
+ _demoEvents.push_back(event); // Mouse pointer is moved
event.type = Common::EVENT_LBUTTONDOWN; // Keep same event fields
- g_system->getEventManager()->pushEvent(event);
+ _demoEvents.push_back(event); // Mouse is clicked
+ _demoEvents.push_back(spaceEvent);
+ nextKeyCode = _demoData[_demoIndex++];
+ }
+
+ while (nextKeyCode != 0) {
+ event = Common::Event();
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = (Common::KeyCode)decodeAmigaAtariKey(nextKeyCode);
+ debugC(1, kFreescapeDebugMove, "Pushing key: %x", event.kbd.keycode);
+ event.customType = 0xde00;
+ _demoEvents.push_back(event);
nextKeyCode = _demoData[_demoIndex++];
- } else {
- while (nextKeyCode != 0) {
- event = Common::Event();
- event.type = Common::EVENT_KEYDOWN;
- event.kbd.keycode = (Common::KeyCode)decodeAmigaAtariKey(nextKeyCode);
- debugC(1, kFreescapeDebugMove, "Pushing key: %x", event.kbd.keycode);
- event.customType = 0xde00;
- g_system->getEventManager()->pushEvent(event);
- nextKeyCode = _demoData[_demoIndex++];
- }
}
assert(!nextKeyCode);
- g_system->delayMillis(50);
+ g_system->delayMillis(100);
}
void FreescapeEngine::processInput() {
@@ -305,6 +312,14 @@ void FreescapeEngine::processInput() {
_lastFrame = currentFrame;
Common::Event event;
Common::Point mousePos;
+
+ if (_demoMode && !_demoEvents.empty()) {
+ g_system->getEventManager()->purgeMouseEvents();
+ g_system->getEventManager()->purgeKeyboardEvents();
+ g_system->getEventManager()->pushEvent(_demoEvents.front());
+ _demoEvents.remove_at(0);
+ }
+
while (g_system->getEventManager()->pollEvent(event)) {
if (_demoMode) {
if (event.customType != 0xde00)
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 0d4c58657e1..9ebd6cc98d7 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -129,10 +129,13 @@ public:
void swapPalette(uint16 areaID);
Common::HashMap<uint16, byte *> _paletteByArea;
void loadColorPalette();
+
+ // Demo
Common::Array<byte> _demoData;
int _demoIndex;
int _currentDemoInputCode;
int _currentDemoInputRepetition;
+ Common::Array<Common::Event> _demoEvents;
Common::Point _currentDemoMousePosition;
void loadDemoData(Common::SeekableReadStream *file, int offset, int size);
int decodeAmigaAtariKey(int code);
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index ef8a92b90a0..978b3751238 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -238,7 +238,7 @@ void DrillerEngine::loadAssetsDemo() {
error("Unsupported demo for Driller");
_demoMode = true;
- _angleRotationIndex = 1;
+ _angleRotationIndex = 0;
}
void DrillerEngine::loadAssetsFullGame() {
More information about the Scummvm-git-logs
mailing list