[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