[Scummvm-git-logs] scummvm master -> a0e816370b21b61ab9083b3b2018e79ab327b64a
neuromancer
noreply at scummvm.org
Wed Nov 30 11:36:00 UTC 2022
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:
ae0620cbf4 FREESCAPE: make sure thumbnail image is always created from the screen
4c969c7c47 FREESCAPE: basic implementation of code that restart the game in driller
3f2fd5d703 FREESCAPE: reset player height when restart game in driller
a0e816370b FREESCAPE: relocated the code that process demo inputs
Commit: ae0620cbf412ef4625d6ac22c5a5a5981b33f806
https://github.com/scummvm/scummvm/commit/ae0620cbf412ef4625d6ac22c5a5a5981b33f806
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-30T12:36:49+01:00
Commit Message:
FREESCAPE: make sure thumbnail image is always created from the screen
Changed paths:
engines/freescape/gfx.cpp
engines/freescape/gfx.h
engines/freescape/gfx_opengl.cpp
engines/freescape/gfx_opengl.h
engines/freescape/gfx_tinygl.cpp
engines/freescape/gfx_tinygl.h
engines/freescape/metaengine.cpp
diff --git a/engines/freescape/gfx.cpp b/engines/freescape/gfx.cpp
index 10bbed2385c..1db3b8fb7f6 100644
--- a/engines/freescape/gfx.cpp
+++ b/engines/freescape/gfx.cpp
@@ -100,6 +100,17 @@ bool Renderer::getRGBAt(uint8 index, uint8 &r, uint8 &g, uint8 &b) {
return true;
}
+void Renderer::flipVertical(Graphics::Surface *s) {
+ for (int y = 0; y < s->h / 2; ++y) {
+ // Flip the lines
+ byte *line1P = (byte *)s->getBasePtr(0, y);
+ byte *line2P = (byte *)s->getBasePtr(0, s->h - y - 1);
+
+ for (int x = 0; x < s->pitch; ++x)
+ SWAP(line1P[x], line2P[x]);
+ }
+}
+
void Renderer::convertImageFormatIfNecessary(Graphics::Surface *surface) {
if (!surface)
return;
diff --git a/engines/freescape/gfx.h b/engines/freescape/gfx.h
index 1b5cd7b2dde..2ddddce6b42 100644
--- a/engines/freescape/gfx.h
+++ b/engines/freescape/gfx.h
@@ -113,7 +113,7 @@ public:
virtual void updateProjectionMatrix(float fov, float nearClipPlane, float farClipPlane) = 0;
Math::Matrix4 getMvpMatrix() const { return _mvpMatrix; }
-
+ virtual Graphics::Surface *getScreenshot() = 0;
void flipVertical(Graphics::Surface *s);
int _screenW;
diff --git a/engines/freescape/gfx_opengl.cpp b/engines/freescape/gfx_opengl.cpp
index bbb90caada2..488b1dab103 100644
--- a/engines/freescape/gfx_opengl.cpp
+++ b/engines/freescape/gfx_opengl.cpp
@@ -298,4 +298,18 @@ void OpenGLRenderer::drawFloor(uint8 color) {
void OpenGLRenderer::flipBuffer() {}
+Graphics::Surface *OpenGLRenderer::getScreenshot() {
+ Common::Rect screen = viewport();
+
+ Graphics::Surface *s = new Graphics::Surface();
+ s->create(screen.width(), screen.height(), OpenGLTexture::getRGBAPixelFormat());
+
+ glReadPixels(screen.left, screen.top, screen.width(), screen.height(), GL_RGBA, GL_UNSIGNED_BYTE, s->getPixels());
+
+ flipVertical(s);
+
+ return s;
+}
+
+
} // End of namespace Freescape
diff --git a/engines/freescape/gfx_opengl.h b/engines/freescape/gfx_opengl.h
index 4cefff98832..aa3669a8f38 100644
--- a/engines/freescape/gfx_opengl.h
+++ b/engines/freescape/gfx_opengl.h
@@ -79,6 +79,8 @@ public:
virtual void flipBuffer() override;
virtual void drawFloor(uint8 color) override;
+
+ virtual Graphics::Surface *getScreenshot() override;
};
} // End of namespace Freescape
diff --git a/engines/freescape/gfx_tinygl.cpp b/engines/freescape/gfx_tinygl.cpp
index 421a8391b10..0af00934fa3 100644
--- a/engines/freescape/gfx_tinygl.cpp
+++ b/engines/freescape/gfx_tinygl.cpp
@@ -255,4 +255,15 @@ void TinyGLRenderer::flipBuffer() {
}
}
+Graphics::Surface *TinyGLRenderer::getScreenshot() {
+ Graphics::Surface glBuffer;
+ TinyGL::getSurfaceRef(glBuffer);
+
+ Graphics::Surface *s = new Graphics::Surface();
+ s->create(_screenW, _screenH, TinyGLTexture::getRGBAPixelFormat());
+ s->copyFrom(glBuffer);
+
+ return s;
+}
+
} // End of namespace Freescape
diff --git a/engines/freescape/gfx_tinygl.h b/engines/freescape/gfx_tinygl.h
index f358ae29cd2..e5a6f3d480e 100644
--- a/engines/freescape/gfx_tinygl.h
+++ b/engines/freescape/gfx_tinygl.h
@@ -65,6 +65,7 @@ public:
virtual void flipBuffer() override;
virtual void drawFloor(uint8 color) override;
+ virtual Graphics::Surface *getScreenshot() override;
};
} // End of namespace Freescape
diff --git a/engines/freescape/metaengine.cpp b/engines/freescape/metaengine.cpp
index ecb7796d666..a21b3eeb93d 100644
--- a/engines/freescape/metaengine.cpp
+++ b/engines/freescape/metaengine.cpp
@@ -20,10 +20,14 @@
*/
#include "common/translation.h"
+#include "graphics/thumbnail.h"
+#include "graphics/scaler.h"
+
#include "freescape/freescape.h"
#include "freescape/detection.h"
+
static const ADExtraGuiOptionsMap optionsList[] = {
{
GAMEOPTION_PRERECORDED_SOUNDS,
@@ -84,6 +88,7 @@ public:
}
Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const override;
+ void getSavegameThumbnail(Graphics::Surface &thumb) override;
};
Common::Error FreescapeMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const {
@@ -101,6 +106,21 @@ Common::Error FreescapeMetaEngine::createInstance(OSystem *syst, Engine **engine
return Common::kNoError;
}
+void FreescapeMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
+ Freescape::FreescapeEngine *engine = (Freescape::FreescapeEngine *)g_engine;
+ Graphics::Surface *savedScreen = engine->_gfx->getScreenshot();
+ assert(savedScreen);
+ Graphics::Surface *scaledSavedScreen = scale(*savedScreen, kThumbnailWidth, kThumbnailHeight2);
+ assert(scaledSavedScreen);
+ thumb.copyFrom(*scaledSavedScreen);
+
+ scaledSavedScreen->free();
+ delete scaledSavedScreen;
+
+ savedScreen->free();
+ delete savedScreen;
+}
+
namespace Freescape {
bool FreescapeEngine::isDemo() const {
Commit: 4c969c7c47586436acf700825634af1086b6dd88
https://github.com/scummvm/scummvm/commit/4c969c7c47586436acf700825634af1086b6dd88
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-30T12:36:49+01:00
Commit Message:
FREESCAPE: basic implementation of code that restart the game in driller
Changed paths:
engines/freescape/area.cpp
engines/freescape/area.h
engines/freescape/freescape.cpp
engines/freescape/freescape.h
engines/freescape/games/driller.cpp
engines/freescape/loaders/8bitBinaryLoader.cpp
engines/freescape/objects/geometricobject.cpp
engines/freescape/objects/object.h
diff --git a/engines/freescape/area.cpp b/engines/freescape/area.cpp
index e3e5ef57e41..0de9a796f0a 100644
--- a/engines/freescape/area.cpp
+++ b/engines/freescape/area.cpp
@@ -175,6 +175,36 @@ void Area::unremapColor(int index) {
_colorRemaps.clear(index);
}
+void Area::resetArea() {
+ debugC(1, kFreescapeDebugMove, "Resetting area name: %s", _name.c_str());
+ _colorRemaps.clear();
+ if (_objectsByID) {
+ for (auto &it : *_objectsByID) {
+ Object *obj = it._value;
+ if (obj->isDestroyed())
+ obj->restore();
+
+ if (obj->isInitiallyInvisible())
+ obj->makeInvisible();
+ else
+ obj->makeVisible();
+ }
+ }
+ if (_entrancesByID) {
+ for (auto &it : *_entrancesByID) {
+ Object *obj = it._value;
+ if (obj->isDestroyed())
+ obj->restore();
+
+ if (obj->isInitiallyInvisible())
+ obj->makeInvisible();
+ else
+ obj->makeVisible();
+ }
+ }
+}
+
+
void Area::draw(Freescape::Renderer *gfx) {
gfx->clear(_skyColor);
assert(_drawableObjects.size() > 0);
diff --git a/engines/freescape/area.h b/engines/freescape/area.h
index 78537689c39..1c71490efa2 100644
--- a/engines/freescape/area.h
+++ b/engines/freescape/area.h
@@ -59,6 +59,7 @@ public:
void addObject(Object *obj);
void addStructure(Area *global);
void removeObject(int16 id);
+ void resetArea();
Common::Array<Common::String> _conditionSources;
Common::Array<FCLInstructionVector> _conditions;
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 1d1003cefa9..c1f7f797c3b 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -124,6 +124,7 @@ FreescapeEngine::FreescapeEngine(OSystem *syst, const ADGameDescription *gd)
_gfx = nullptr;
_timerStarted = false;
+ _initialCountdown = 0;
_countdown = 0;
_ticks = 0;
_frameLimiter = nullptr;
@@ -587,7 +588,13 @@ Common::Error FreescapeEngine::run() {
_gfx->flipBuffer();
g_system->updateScreen();
- while (!shouldQuit() && !endGame) {
+ while (!shouldQuit()) {
+ if (endGame) {
+ initGameState();
+ gotoArea(_startArea, _startEntrance);
+ endGame = false;
+ }
+
bool frameRedrawed = checkSensors();
if (!frameRedrawed)
@@ -848,6 +855,7 @@ static void countdownCallback(void *refCon) {
bool FreescapeEngine::startCountdown(uint32 delay) {
_countdown = delay;
+ _ticks = 0;
_timerStarted = true;
uint32 oneTick = 1000000 / 50;
return g_system->getTimerManager()->installTimerProc(&countdownCallback, oneTick, (void *)this, "countdown");
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 6144c0af106..7c01db85a57 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -318,6 +318,7 @@ public:
bool startCountdown(uint32 delay);
void removeTimers();
bool _timerStarted;
+ int _initialCountdown;
int _countdown;
int _ticks;
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index 058df2f30a1..d534de1c41e 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -782,11 +782,19 @@ void DrillerEngine::removeDrill(Area *area) {
}
void DrillerEngine::initGameState() {
+ _flyMode = false;
+ _lastMousePos = Common::Point(0, 0);
+ _yaw = 0;
+ _pitch = 0;
+
for (int i = 0; i < k8bitMaxVariable; i++) // TODO: check maximum variable
_gameStateVars[i] = 0;
for (auto &it : _areaMap) {
+ it._value->resetArea();
_gameStateBits[it._key] = 0;
+ if (_drilledAreas[it._key] != kDrillerNoRig)
+ removeDrill(it._value);
_drilledAreas[it._key] = kDrillerNoRig;
}
@@ -799,8 +807,8 @@ void DrillerEngine::initGameState() {
_gameStateVars[k8bitVariableEnergyDrillerJet] = _initialJetEnergy;
_gameStateVars[k8bitVariableShieldDrillerJet] = _initialJetShield;
- if (_countdown > 0)
- startCountdown(_countdown);
+ removeTimers();
+ startCountdown(_initialCountdown);
}
bool DrillerEngine::checkIfGameEnded() {
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index ab5b1f0ef4c..89d44ca586c 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -513,24 +513,24 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse
Common::String n;
n += char(readField(file, 8));
n += char(readField(file, 8));
- _countdown = _countdown + 3600 * atoi(n.c_str());
+ _initialCountdown =_initialCountdown + 3600 * atoi(n.c_str());
n.clear();
n += char(readField(file, 8));
assert(n == ":");
n.clear();
n += char(readField(file, 8));
n += char(readField(file, 8));
- _countdown = _countdown + 60 * atoi(n.c_str());
+ _initialCountdown = _initialCountdown + 60 * atoi(n.c_str());
n.clear();
n += char(readField(file, 8));
assert(n == ":");
n.clear();
n += char(readField(file, 8));
n += char(readField(file, 8));
- _countdown = _countdown + atoi(n.c_str());
+ _initialCountdown = _initialCountdown + atoi(n.c_str());
if (_useExtendedTimer)
- _countdown = 359999; // 99:59:59
+ _initialCountdown = 359999; // 99:59:59
}
if (isAmiga() || isAtariST())
diff --git a/engines/freescape/objects/geometricobject.cpp b/engines/freescape/objects/geometricobject.cpp
index fc0168b590d..b39c35b1f33 100644
--- a/engines/freescape/objects/geometricobject.cpp
+++ b/engines/freescape/objects/geometricobject.cpp
@@ -124,7 +124,12 @@ GeometricObject::GeometricObject(
_flags = flags_;
if (isDestroyed()) // If the object is destroyed, restore it
- _flags = _flags & ~0x20;
+ restore();
+
+ if (isInitiallyInvisible())
+ makeInvisible();
+ else
+ makeVisible();
_objectID = objectID_;
_origin = origin_;
diff --git a/engines/freescape/objects/object.h b/engines/freescape/objects/object.h
index 54b5ce54f38..a21b844b28a 100644
--- a/engines/freescape/objects/object.h
+++ b/engines/freescape/objects/object.h
@@ -67,12 +67,14 @@ public:
virtual bool isPlanar() { return false; }
virtual void scale(int factor) = 0;
- bool isInvisible() { return _flags & 0x80; }
- void makeInvisible() { _flags = _flags | 0x80; }
- void makeVisible() { _flags = _flags & ~0x80; }
+ bool isInvisible() { return _flags & 0x40; }
+ void makeInvisible() { _flags = _flags | 0x40; }
+ void makeVisible() { _flags = _flags & ~0x40; }
+ bool isInitiallyInvisible() { return _flags & 0x80; }
bool isDestroyed() { return _flags & 0x20; }
void destroy() { _flags = _flags | 0x20; }
- void toggleVisibility() { _flags = _flags ^ 0x80; }
+ void restore() { _flags = _flags & ~0x20; }
+ void toggleVisibility() { _flags = _flags ^ 0x40; }
virtual ~Object() {}
virtual Object *duplicate() = 0;
Commit: 3f2fd5d7036832f705f65c3f599839acf636d451
https://github.com/scummvm/scummvm/commit/3f2fd5d7036832f705f65c3f599839acf636d451
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-30T12:36:49+01:00
Commit Message:
FREESCAPE: reset player height when restart game in driller
Changed paths:
engines/freescape/games/driller.cpp
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index d534de1c41e..d61d3716739 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -807,6 +807,8 @@ void DrillerEngine::initGameState() {
_gameStateVars[k8bitVariableEnergyDrillerJet] = _initialJetEnergy;
_gameStateVars[k8bitVariableShieldDrillerJet] = _initialJetShield;
+ _playerHeightNumber = 1;
+ _playerHeight = _playerHeights[_playerHeightNumber];
removeTimers();
startCountdown(_initialCountdown);
}
Commit: a0e816370b21b61ab9083b3b2018e79ab327b64a
https://github.com/scummvm/scummvm/commit/a0e816370b21b61ab9083b3b2018e79ab327b64a
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-30T12:36:49+01:00
Commit Message:
FREESCAPE: relocated the code that process demo inputs
Changed paths:
A engines/freescape/demo.cpp
R engines/freescape/keyboard.cpp
engines/freescape/freescape.cpp
engines/freescape/freescape.h
engines/freescape/module.mk
diff --git a/engines/freescape/keyboard.cpp b/engines/freescape/demo.cpp
similarity index 54%
rename from engines/freescape/keyboard.cpp
rename to engines/freescape/demo.cpp
index 4ef5652cc3f..fc6cb1845eb 100644
--- a/engines/freescape/keyboard.cpp
+++ b/engines/freescape/demo.cpp
@@ -23,6 +23,80 @@
namespace Freescape {
+void FreescapeEngine::generateDemoInput() {
+ Common::Event event;
+ if (isDOS()) {
+
+ if (_currentDemoInputRepetition == 0) {
+ _currentDemoInputRepetition = 1;
+ _currentDemoInputCode = _demoData[_demoIndex++];
+ if (_currentDemoInputCode & 0x80) {
+ _currentDemoInputRepetition = (_currentDemoInputCode & 0x7F) /*+ 1*/;
+ //if (_currentDemoInputRepetition == 1)
+ // _currentDemoInputRepetition = 255;
+ _currentDemoInputCode = _demoData[_demoIndex++];
+ }
+ }
+
+ if (_currentDemoInputCode >= 0x16 && _currentDemoInputCode <= 0x1a) {
+ event = decodeDOSMouseEvent(_currentDemoInputCode, _currentDemoInputRepetition);
+ _demoEvents.push_back(event);
+ g_system->delayMillis(10);
+ _currentDemoInputRepetition = 0;
+ } else if (_currentDemoInputCode == 0x7f) {
+ // NOP
+ _currentDemoInputRepetition--;
+ } else {
+ event = Common::Event();
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = (Common::KeyCode)decodeDOSKey(_currentDemoInputCode);
+ event.customType = 0xde00;
+ _demoEvents.push_back(event);
+ debugC(1, kFreescapeDebugMove, "Pushing key: %x with repetition %d", event.kbd.keycode, _currentDemoInputRepetition);
+ g_system->delayMillis(100);
+ _currentDemoInputRepetition--;
+ }
+
+ return;
+ }
+
+ int mouseX = _demoData[_demoIndex++] << 1;
+ int mouseY = _demoData[_demoIndex++];
+ debugC(1, kFreescapeDebugMove, "Mouse moved to: %d, %d", mouseX, mouseY);
+
+ event.type = Common::EVENT_MOUSEMOVE;
+ event.mouse = Common::Point(mouseX, mouseY);
+ event.customType = 0xde00;
+
+ 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
+ _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++];
+ }
+ assert(!nextKeyCode);
+ g_system->delayMillis(100);
+}
+
Common::Event FreescapeEngine::decodeDOSMouseEvent(int index, int repetition) {
Common::Event event;
event.type = Common::EVENT_MOUSEMOVE;
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index c1f7f797c3b..55af4ebc7a5 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -314,80 +314,6 @@ void FreescapeEngine::drawFrame() {
void FreescapeEngine::pressedKey(const int keycode) {}
-void FreescapeEngine::generateInput() {
- Common::Event event;
- if (isDOS()) {
-
- if (_currentDemoInputRepetition == 0) {
- _currentDemoInputRepetition = 1;
- _currentDemoInputCode = _demoData[_demoIndex++];
- if (_currentDemoInputCode & 0x80) {
- _currentDemoInputRepetition = (_currentDemoInputCode & 0x7F) /*+ 1*/;
- //if (_currentDemoInputRepetition == 1)
- // _currentDemoInputRepetition = 255;
- _currentDemoInputCode = _demoData[_demoIndex++];
- }
- }
-
- if (_currentDemoInputCode >= 0x16 && _currentDemoInputCode <= 0x1a) {
- event = decodeDOSMouseEvent(_currentDemoInputCode, _currentDemoInputRepetition);
- _demoEvents.push_back(event);
- g_system->delayMillis(10);
- _currentDemoInputRepetition = 0;
- } else if (_currentDemoInputCode == 0x7f) {
- // NOP
- _currentDemoInputRepetition--;
- } else {
- event = Common::Event();
- event.type = Common::EVENT_KEYDOWN;
- event.kbd.keycode = (Common::KeyCode)decodeDOSKey(_currentDemoInputCode);
- event.customType = 0xde00;
- _demoEvents.push_back(event);
- debugC(1, kFreescapeDebugMove, "Pushing key: %x with repetition %d", event.kbd.keycode, _currentDemoInputRepetition);
- g_system->delayMillis(100);
- _currentDemoInputRepetition--;
- }
-
- return;
- }
-
- int mouseX = _demoData[_demoIndex++] << 1;
- int mouseY = _demoData[_demoIndex++];
- debugC(1, kFreescapeDebugMove, "Mouse moved to: %d, %d", mouseX, mouseY);
-
- event.type = Common::EVENT_MOUSEMOVE;
- event.mouse = Common::Point(mouseX, mouseY);
- event.customType = 0xde00;
-
- 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
- _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++];
- }
- assert(!nextKeyCode);
- g_system->delayMillis(100);
-}
-
void FreescapeEngine::processInput() {
float currentFrame = g_system->getMillis();
float deltaTime = 20.0;
@@ -601,7 +527,7 @@ Common::Error FreescapeEngine::run() {
drawFrame();
if (_demoMode)
- generateInput();
+ generateDemoInput();
processInput();
_gfx->flipBuffer();
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 7c01db85a57..83850d439bd 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -170,7 +170,7 @@ public:
bool _shootMode;
bool _noClipMode;
void processInput();
- void generateInput();
+ void generateDemoInput();
virtual void pressedKey(const int keycode);
void move(CameraMovement direction, uint8 scale, float deltaTime);
void changePlayerHeight(int index);
diff --git a/engines/freescape/module.mk b/engines/freescape/module.mk
index e9ef9e42f02..7329c11c833 100644
--- a/engines/freescape/module.mk
+++ b/engines/freescape/module.mk
@@ -2,6 +2,7 @@ MODULE := engines/freescape
MODULE_OBJS := \
area.o \
+ demo.o \
freescape.o \
games/castle.o \
games/dark.o \
@@ -9,7 +10,6 @@ MODULE_OBJS := \
games/eclipse.o \
games/palettes.o \
gfx.o \
- keyboard.o \
loaders/8bitBinaryLoader.o \
language/8bitDetokeniser.o \
language/instruction.o \
More information about the Scummvm-git-logs
mailing list