[Scummvm-git-logs] scummvm master -> ce7cdd11b8bd05adbd1472c39ba2d15f0f1e8403
ysj1173886760
42030331+ysj1173886760 at users.noreply.github.com
Fri Aug 6 12:44:21 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ce7cdd11b8 DIRECTOR: use comma to split the parameter of start-movie. implement loading startup movie.
Commit: ce7cdd11b8bd05adbd1472c39ba2d15f0f1e8403
https://github.com/scummvm/scummvm/commit/ce7cdd11b8bd05adbd1472c39ba2d15f0f1e8403
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-08-06T20:44:02+08:00
Commit Message:
DIRECTOR: use comma to split the parameter of start-movie. implement loading startup movie.
Changed paths:
engines/director/director.h
engines/director/metaengine.cpp
engines/director/resource.cpp
diff --git a/engines/director/director.h b/engines/director/director.h
index fc00fb8f6e..8ac86cf1ef 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -97,6 +97,7 @@ struct MovieReference {
struct StartMovie {
Common::String startMovie;
int16 startFrame;
+ Common::String startupPath;
};
struct PaletteV4 {
@@ -201,6 +202,7 @@ public:
Movie *getCurrentMovie() const;
void setCurrentMovie(Movie *movie);
Common::String getCurrentPath() const;
+ Common::String getStartupPath() const;
// graphics.cpp
bool hasFeature(EngineFeature f) const override;
diff --git a/engines/director/metaengine.cpp b/engines/director/metaengine.cpp
index 35bbd85b98..d7c6656875 100644
--- a/engines/director/metaengine.cpp
+++ b/engines/director/metaengine.cpp
@@ -72,7 +72,12 @@ StartMovie DirectorEngine::getStartMovie() const {
if (ConfMan.hasKey("start_movie")) {
Common::String option = ConfMan.get("start_movie");
int atPos = option.findLastOf("@");
- startMovie.startMovie = option.substr(0, atPos);
+ if ((uint)atPos == Common::String::npos) {
+ int commaPos = option.findLastOf(",");
+ startMovie.startMovie = option.substr(0, commaPos);
+ } else {
+ startMovie.startMovie = option.substr(0, atPos);
+ }
if (Common::punycode_hasprefix(startMovie.startMovie))
startMovie.startMovie = Common::punycode_decodepath(startMovie.startMovie);
@@ -84,6 +89,21 @@ StartMovie DirectorEngine::getStartMovie() const {
return startMovie;
}
+Common::String DirectorEngine::getStartupPath() const {
+ if (ConfMan.hasKey("start_movie")) {
+ Common::String option = ConfMan.get("start_movie");
+
+ int atPos = option.findLastOf(",");
+ if ((uint)atPos == Common::String::npos)
+ return "";
+
+ Common::String tail = option.substr(atPos + 1, option.size());
+ if (tail.size() > 0)
+ return tail;
+ }
+ return "";
+}
+
bool DirectorEngine::hasFeature(EngineFeature f) const {
return false;
//(f == kSupportsReturnToLauncher);
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index d17d719f09..b95f43053a 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -74,6 +74,19 @@ Common::Error Window::loadInitialMovie() {
Common::String sharedCastPath = getSharedCastPath();
if (!sharedCastPath.empty() && !sharedCastPath.equalsIgnoreCase(movie))
_currentMovie->loadSharedCastsFrom(sharedCastPath);
+
+ // load startup movie
+ Common::String startupPath = g_director->getStartupPath();
+ if (!startupPath.empty()) {
+ Archive *arc = g_director->createArchive();
+ if (arc->openFile(startupPath)) {
+ _currentMovie->setArchive(arc);
+ _currentMovie->loadArchive();
+ } else {
+ warning("Window::LoadInitialMovie: failed to load startup movie");
+ }
+ }
+
_currentMovie->setArchive(_mainArchive);
// XLibs are usually loaded in the initial movie.
More information about the Scummvm-git-logs
mailing list