[Scummvm-git-logs] scummvm master -> fe542f2dd71418509a666c42001ae002c67a70e9
bluegr
bluegr at gmail.com
Mon Nov 16 21:15:32 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e42bb39504 STARTREK: Add new console commands "bg" and "dumpfile"
fe542f2dd7 STARTREK: Started implementing bridge functions. Some cleanup
Commit: e42bb395040eed9c111d88c4cd4704996e5b4c59
https://github.com/scummvm/scummvm/commit/e42bb395040eed9c111d88c4cd4704996e5b4c59
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2020-11-16T23:14:59+02:00
Commit Message:
STARTREK: Add new console commands "bg" and "dumpfile"
Changed paths:
engines/startrek/console.cpp
engines/startrek/console.h
diff --git a/engines/startrek/console.cpp b/engines/startrek/console.cpp
index 87d26f5d85..19e3ace766 100644
--- a/engines/startrek/console.cpp
+++ b/engines/startrek/console.cpp
@@ -20,8 +20,9 @@
*
*/
-#include "startrek/console.h"
+#include "common/file.h"
#include "gui/debugger.h"
+#include "startrek/console.h"
#include "startrek/resource.h"
#include "startrek/room.h"
#include "startrek/startrek.h"
@@ -32,6 +33,8 @@ Console::Console(StarTrekEngine *vm) : GUI::Debugger(), _vm(vm) {
registerCmd("room", WRAP_METHOD(Console, Cmd_Room));
registerCmd("actions", WRAP_METHOD(Console, Cmd_Actions));
registerCmd("text", WRAP_METHOD(Console, Cmd_Text));
+ registerCmd("bg", WRAP_METHOD(Console, Cmd_Bg));
+ registerCmd("dumpfile", WRAP_METHOD(Console, Cmd_DumpFile));
}
Console::~Console() {
@@ -110,6 +113,44 @@ bool Console::Cmd_Text(int argc, const char **argv) {
return true;
}
+bool Console::Cmd_Bg(int argc, const char **argv) {
+ if (argc < 2) {
+ debugPrintf("Usage: %s <background image name>\n", argv[0]);
+ return true;
+ }
+
+ _vm->_gfx->setBackgroundImage(argv[1]);
+ _vm->_gfx->copyBackgroundScreen();
+ _vm->_system->updateScreen();
+
+ return false;
+}
+
+bool Console::Cmd_DumpFile(int argc, const char **argv) {
+ if (argc < 2) {
+ debugPrintf("Usage: %s <file name>\n", argv[0]);
+ return true;
+ }
+
+ debugPrintf("Dumping %s...\n", argv[1]);
+
+ Common::MemoryReadStreamEndian *stream = _vm->_resource->loadFile(argv[1]);
+ uint32 size = stream->size();
+ byte *data = new byte[size];
+ stream->read(data, size);
+ delete stream;
+
+ Common::DumpFile out;
+ out.open(argv[1]);
+ out.write(data, size);
+ out.flush();
+ out.close();
+ delete[] data;
+
+ return true;
+}
+
+
Common::String Console::EventToString(uint32 action) {
const char *actions[] = {
"Tick",
diff --git a/engines/startrek/console.h b/engines/startrek/console.h
index 555fbe9712..28d1890576 100644
--- a/engines/startrek/console.h
+++ b/engines/startrek/console.h
@@ -40,6 +40,8 @@ private:
bool Cmd_Room(int argc, const char **argv);
bool Cmd_Actions(int argc, const char **argv);
bool Cmd_Text(int argc, const char **argv);
+ bool Cmd_Bg(int argc, const char **argv);
+ bool Cmd_DumpFile(int argc, const char **argv);
Common::String EventToString(uint32 action);
Common::String ItemToString(byte index);
Commit: fe542f2dd71418509a666c42001ae002c67a70e9
https://github.com/scummvm/scummvm/commit/fe542f2dd71418509a666c42001ae002c67a70e9
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2020-11-16T23:14:59+02:00
Commit Message:
STARTREK: Started implementing bridge functions. Some cleanup
Changed paths:
A engines/startrek/bridge.cpp
engines/startrek/awaymission.cpp
engines/startrek/intro.cpp
engines/startrek/module.mk
engines/startrek/room.cpp
engines/startrek/startrek.cpp
engines/startrek/startrek.h
diff --git a/engines/startrek/awaymission.cpp b/engines/startrek/awaymission.cpp
index 16af10c152..acb75d09fa 100644
--- a/engines/startrek/awaymission.cpp
+++ b/engines/startrek/awaymission.cpp
@@ -165,7 +165,7 @@ void StarTrekEngine::initAwayCrewPositions(int warpEntryIndex) {
_warpHotspotsActive = true;
break;
case 6:
- error("initAwayCrewPositions(6) unimplemented");
+ loadBridgeActors();
break;
default:
warning("Invalid parameter (%d) to initAwayCrewPositions", warpEntryIndex);
diff --git a/engines/startrek/bridge.cpp b/engines/startrek/bridge.cpp
new file mode 100644
index 0000000000..d11af6aa23
--- /dev/null
+++ b/engines/startrek/bridge.cpp
@@ -0,0 +1,87 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/iwfile.h"
+#include "startrek/resource.h"
+#include "startrek/room.h"
+#include "startrek/startrek.h"
+
+namespace StarTrek {
+
+void StarTrekEngine::initBridge(bool b) {
+ _gfx->loadPalette("bridge");
+ _sound->loadMusicFile("bridge");
+
+ initStarfieldPosition();
+ // TODO: starfield
+
+ loadBridge();
+};
+
+void StarTrekEngine::loadBridge() {
+ initStarfield(72, 30, 247, 102, 0);
+ // TODO
+ //initStarfieldSprite();
+
+ _gfx->setBackgroundImage("bridge");
+ _gfx->loadPri("bridge");
+ _gfx->copyBackgroundScreen();
+ _system->updateScreen();
+
+ loadBridgeActors();
+ //sub_1312C(); // TODO
+
+ // TODO
+ //initStarfieldSprite();
+ //initStarfieldSprite();
+ //initStarfieldSprite();
+ //initStarfieldSprite();
+ //initStarfieldSprite();
+}
+
+void StarTrekEngine::loadBridgeActors() {
+ loadActorAnim(0, "bstndki", 0, 4, 256);
+ loadActorAnim(1, "bstndkp", 0, 0, 256);
+ loadActorAnim(6, "bstnduh", 0, 0, 256);
+ loadActorAnim(5, "bstndch", 0, 0, 256);
+ loadActorAnim(4, "bstndsu", 0, 0, 256);
+ loadActorAnim(7, "bstndsc", 0, 0, 256);
+ loadActorAnim(2, "xstndmc", 0, 0, 256);
+}
+
+void StarTrekEngine::cleanupBridge() {
+ // TODO
+ // if (!v_starfieldInitialized)
+ // sub_12691()
+ // else
+ // clearScreenAndDelSeveralSprites()
+ // v_mouseControllingShip = 0
+ // v_keyboardControlsMouse = 1
+}
+
+void StarTrekEngine::runBridge() {
+ //while (_gameMode == GAMEMODE_BRIDGE && !_resetGameMode) {
+
+ //}
+}
+
+} // End of namespace StarTrek
diff --git a/engines/startrek/intro.cpp b/engines/startrek/intro.cpp
index 64e462e574..26a3550e55 100644
--- a/engines/startrek/intro.cpp
+++ b/engines/startrek/intro.cpp
@@ -28,6 +28,8 @@ namespace StarTrek {
void StarTrekEngine::playIntro() {
// TODO: .MT audio file
+ _frameIndex = 0;
+
initStarfieldPosition();
initStarfield(10, 20, 309, 169, 128);
diff --git a/engines/startrek/module.mk b/engines/startrek/module.mk
index b169b15fef..067edfa345 100644
--- a/engines/startrek/module.mk
+++ b/engines/startrek/module.mk
@@ -4,6 +4,7 @@ MODULE_OBJS = \
actors.o \
awaymission.o \
bitmap.o \
+ bridge.o \
common.o \
console.o \
events.o \
diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp
index 9e7d2e9bc7..61526ea921 100644
--- a/engines/startrek/room.cpp
+++ b/engines/startrek/room.cpp
@@ -691,8 +691,6 @@ void Room::endMission(int16 score, int16 arg1, int16 arg2) {
break;
}
}
-
- _vm->_roomIndexToLoad = 0;
}
void Room::showGameOverMenu() { // TODO: takes an optional parameter?
diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp
index 56e471aaae..0462fc0813 100644
--- a/engines/startrek/startrek.cpp
+++ b/engines/startrek/startrek.cpp
@@ -133,38 +133,29 @@ Common::Error StarTrekEngine::run() {
_gfx->setMouseBitmap("pushbtn");
_gfx->toggleMouse(true);
- bool shouldPlayIntro = true;
bool loadedSave = false;
if (ConfMan.hasKey("save_slot")) {
if (!loadGame(ConfMan.getInt("save_slot")))
error("Failed to load savegame %d", ConfMan.getInt("save_slot"));
- shouldPlayIntro = false;
loadedSave = true;
- _roomIndexToLoad = -1;
}
if (!loadedSave) {
- if (shouldPlayIntro) {
- _frameIndex = 0;
- playIntro();
- }
-
- _frameIndex = 0;
-
- _gameMode = -1;
- _lastGameMode = -1;
- }
-
- if (loadedSave)
+ playIntro();
+ runGameMode(GAMEMODE_BEAMDOWN, false);
+ } else {
+ _roomIndexToLoad = -1;
runGameMode(_gameMode, true);
- else
- runGameMode(GAMEMODE_AWAYMISSION, false);
+ }
+
return Common::kNoError;
}
Common::Error StarTrekEngine::runGameMode(int mode, bool resume) {
if (!resume) { // Only run this if not just resuming from a savefile
+ _frameIndex = 0;
+ _lastGameMode = -1;
_gameMode = mode;
_sound->stopAllVocSounds();
@@ -236,7 +227,7 @@ Common::Error StarTrekEngine::runGameMode(int mode, bool resume) {
switch (_gameMode) {
case GAMEMODE_BRIDGE:
popNextEvent(&event);
- //runBridge();
+ runBridge();
break;
case GAMEMODE_AWAYMISSION:
diff --git a/engines/startrek/startrek.h b/engines/startrek/startrek.h
index 2fbe93078b..8441fd168a 100644
--- a/engines/startrek/startrek.h
+++ b/engines/startrek/startrek.h
@@ -232,8 +232,11 @@ public:
void runTransportSequence(const Common::String &name);
// Bridge
- void initBridge(bool b) {}; // TODO
- void cleanupBridge() {}; // TODO
+ void initBridge(bool b);
+ void loadBridge();
+ void loadBridgeActors();
+ void cleanupBridge();
+ void runBridge();
void playMovie(Common::String filename);
void playMovieMac(Common::String filename);
More information about the Scummvm-git-logs
mailing list