[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