[Scummvm-git-logs] scummvm master -> e05948bafa17ec4daeb8a988a51de01f69b58fc8

djsrv dservilla at gmail.com
Mon Jun 15 14:31:48 UTC 2020


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:
e05948bafa DIRECTOR: LINGO: Add ArchiveType enum


Commit: e05948bafa17ec4daeb8a988a51de01f69b58fc8
    https://github.com/scummvm/scummvm/commit/e05948bafa17ec4daeb8a988a51de01f69b58fc8
Author: djsrv (dservilla at gmail.com)
Date: 2020-06-15T10:29:43-04:00

Commit Message:
DIRECTOR: LINGO: Add ArchiveType enum

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-events.cpp
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo.cpp
    engines/director/resource.cpp
    engines/director/score-loading.cpp
    engines/director/score.cpp
    engines/director/types.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 0a20e5da72..eeb265c534 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -519,7 +519,7 @@ void LB::b_value(int nargs) {
 	}
 	Common::String code = "scummvm_returnNumber " + expr;
 	// Compile the code to an anonymous function and call it
-	ScriptContext *sc = g_lingo->addCode(code.c_str(), -1, kNoneScript, 0);
+	ScriptContext *sc = g_lingo->addCode(code.c_str(), kArchNone, kNoneScript, 0);
 	Symbol sym = sc->functions[0];
 	LC::call(sym, 0);
 	delete sc;
@@ -1637,7 +1637,7 @@ void LB::b_installMenu(int nargs) {
 	}
 
 	// TODO: Menu callbacks should probably not be in the movie's lingo archive
-	g_lingo->addCode(handlers.c_str(), 0, kMovieScript, 1337);
+	g_lingo->addCode(handlers.c_str(), kArchMain, kMovieScript, 1337);
 }
 
 Common::String Lingo::genMenuHandler(int *commandId, Common::String &command) {
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 5f64b79f6a..06c79c959e 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -102,8 +102,8 @@ int Lingo::getEventCount() {
 
 void Lingo::setPrimaryEventHandler(LEvent event, const Common::String &code) {
 	debugC(3, kDebugLingoExec, "setting primary event handler (%s)", _eventHandlerTypes[event]);
-	_archives[0].primaryEventHandlers[event] = code;
-	addCode(code.c_str(), 0, kGlobalScript, event);
+	_archives[kArchMain].primaryEventHandlers[event] = code;
+	addCode(code.c_str(), kArchMain, kGlobalScript, event);
 }
 
 void Lingo::primaryEventHandler(LEvent event) {
@@ -326,8 +326,8 @@ void Lingo::processEvent(LEvent event, ScriptType st, int entityId, int channelI
 	if (!_eventHandlerTypes.contains(event))
 		error("processEvent: Unknown event %d for entity %d", event, entityId);
 
-	if (_archives[0].eventHandlers.contains(ENTITY_INDEX(event, entityId)) ||
-		_archives[1].eventHandlers.contains(ENTITY_INDEX(event, entityId))) {
+	if (_archives[kArchMain].eventHandlers.contains(ENTITY_INDEX(event, entityId)) ||
+		_archives[kArchShared].eventHandlers.contains(ENTITY_INDEX(event, entityId))) {
 		debugC(1, kDebugEvents, "Lingo::processEvent(%s, %s, %d), _eventHandler", _eventHandlerTypes[event], scriptType2str(st), entityId);
 		executeHandler(_eventHandlerTypes[event]); // D4+ Events
 	} else if (_vm->getVersion() < 4 && event == kEventNone && getScriptContext(_archiveIndex, st, entityId)) {
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index bc0f65ed7d..0af229ccb0 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -378,15 +378,15 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheKeyDownScript:
 		d.type = STRING;
-		if (_archives[0].primaryEventHandlers.contains(kEventKeyDown))
-			d.u.s = new Common::String(_archives[0].primaryEventHandlers[kEventKeyDown]);
+		if (_archives[kArchMain].primaryEventHandlers.contains(kEventKeyDown))
+			d.u.s = new Common::String(_archives[kArchMain].primaryEventHandlers[kEventKeyDown]);
 		else
 			d.u.s = new Common::String();
 		break;
 	case kTheKeyUpScript:
 		d.type = STRING;
-		if (_archives[0].primaryEventHandlers.contains(kEventKeyUp))
-			d.u.s = new Common::String(_archives[0].primaryEventHandlers[kEventKeyUp]);
+		if (_archives[kArchMain].primaryEventHandlers.contains(kEventKeyUp))
+			d.u.s = new Common::String(_archives[kArchMain].primaryEventHandlers[kEventKeyUp]);
 		else
 			d.u.s = new Common::String();
 		break;
@@ -480,8 +480,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheMouseDownScript:
 		d.type = STRING;
-		if (_archives[0].primaryEventHandlers.contains(kEventMouseDown))
-			d.u.s = new Common::String(_archives[0].primaryEventHandlers[kEventMouseDown]);
+		if (_archives[kArchMain].primaryEventHandlers.contains(kEventMouseDown))
+			d.u.s = new Common::String(_archives[kArchMain].primaryEventHandlers[kEventMouseDown]);
 		else
 			d.u.s = new Common::String();
 		break;
@@ -499,8 +499,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheMouseUpScript:
 		d.type = STRING;
-		if (_archives[0].primaryEventHandlers.contains(kEventMouseUp))
-			d.u.s = new Common::String(_archives[0].primaryEventHandlers[kEventMouseUp]);
+		if (_archives[kArchMain].primaryEventHandlers.contains(kEventMouseUp))
+			d.u.s = new Common::String(_archives[kArchMain].primaryEventHandlers[kEventMouseUp]);
 		else
 			d.u.s = new Common::String();
 		break;
@@ -563,8 +563,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheTimeoutScript:
 		d.type = STRING;
-		if (_archives[0].primaryEventHandlers.contains(kEventTimeout))
-			d.u.s = new Common::String(_archives[0].primaryEventHandlers[kEventTimeout]);
+		if (_archives[kArchMain].primaryEventHandlers.contains(kEventTimeout))
+			d.u.s = new Common::String(_archives[kArchMain].primaryEventHandlers[kEventTimeout]);
 		else
 			d.u.s = new Common::String();
 		break;
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 1f0dd82ad2..b43aa539f7 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -52,7 +52,7 @@ Symbol::Symbol() {
 	argNames = nullptr;
 	varNames = nullptr;
 	ctx = nullptr;
-	archiveIndex = 0;
+	archiveIndex = kArchMain;
 }
 
 Symbol::Symbol(const Symbol &s) {
@@ -157,7 +157,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
 
 	_dontPassEvent = false;
 
-	_archiveIndex = 0;
+	_archiveIndex = kArchMain;
 
 	_perFrameHook = Datum();
 
@@ -203,12 +203,12 @@ Symbol Lingo::getHandler(const Common::String &name) {
 	Symbol result;
 	if (!_eventHandlerTypeIds.contains(name)) {
 		// local scripts
-		if (_archives[0].functionHandlers.contains(name))
-			return _archives[0].functionHandlers[name];
+		if (_archives[kArchMain].functionHandlers.contains(name))
+			return _archives[kArchMain].functionHandlers[name];
 
 		// shared scripts
-		if (_archives[1].functionHandlers.contains(name))
-			return _archives[1].functionHandlers[name];
+		if (_archives[kArchShared].functionHandlers.contains(name))
+			return _archives[kArchShared].functionHandlers[name];
 
 		if (_builtins.contains(name))
 			return _builtins[name];
@@ -218,12 +218,12 @@ Symbol Lingo::getHandler(const Common::String &name) {
 
 	uint32 entityIndex = ENTITY_INDEX(_eventHandlerTypeIds[name], _currentEntityId);
 	// local scripts
-	if (_archives[0].eventHandlers.contains(entityIndex))
-		return _archives[0].eventHandlers[entityIndex];
+	if (_archives[kArchMain].eventHandlers.contains(entityIndex))
+		return _archives[kArchMain].eventHandlers[entityIndex];
 
 	// shared scripts
-	if (_archives[1].eventHandlers.contains(entityIndex))
-		return _archives[1].eventHandlers[entityIndex];
+	if (_archives[kArchShared].eventHandlers.contains(entityIndex))
+		return _archives[kArchShared].eventHandlers[entityIndex];
 
 	return result;
 }
@@ -998,7 +998,7 @@ void Lingo::runTests() {
 			debug(">> Compiling file %s of size %d, id: %d", fileList[i].c_str(), size, counter);
 
 			_hadError = false;
-			addCode(script, 0, kMovieScript, counter);
+			addCode(script, kArchMain, kMovieScript, counter);
 
 			if (!debugChannelSet(-1, kDebugCompileOnly)) {
 				if (!_hadError)
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index ae85dc053a..ca19d552c6 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -79,7 +79,7 @@ void DirectorEngine::loadEXE(const Common::String movie) {
 	if (iniStream) {
 		char *script = (char *)calloc(iniStream->size() + 1, 1);
 		iniStream->read(script, iniStream->size());
-		_lingo->addCode(script, 0, kMovieScript, 0);
+		_lingo->addCode(script, kArchMain, kMovieScript, 0);
 		_lingo->processEvent(kEventStartUp);
 		free(script);
 	} else {
diff --git a/engines/director/score-loading.cpp b/engines/director/score-loading.cpp
index 5a44fe95ee..17b92468c9 100644
--- a/engines/director/score-loading.cpp
+++ b/engines/director/score-loading.cpp
@@ -78,7 +78,7 @@ void Score::setArchive(Archive *archive) {
 }
 
 bool Score::loadArchive(bool isSharedCast) {
-	_lingoArchive = isSharedCast ? 1 : 0;
+	_lingoArchive = isSharedCast ? kArchShared : kArchMain;
 
 	Common::Array<uint16> clutList = _movieArchive->getResourceIDList(MKTAG('C', 'L', 'U', 'T'));
 	Common::SeekableSubReadStreamEndian *r = nullptr;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 0c381b9fc1..3562f1b529 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -45,7 +45,7 @@ Score::Score(DirectorEngine *vm) {
 	_backSurface = nullptr;
 	_backSurface2 = nullptr;
 	_lingo = _vm->getLingo();
-	_lingoArchive = 0;
+	_lingoArchive = kArchMain;
 	_soundManager = _vm->getSoundManager();
 	_currentMouseDownSpriteId = 0;
 	_currentClickOnSpriteId = 0;
diff --git a/engines/director/types.h b/engines/director/types.h
index a2c9cdecb8..34367fabb1 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -238,6 +238,12 @@ enum {
 	kCursorMouseUp
 };
 
+enum ArchiveType {
+	kArchNone = -1,
+	kArchMain = 0,
+	kArchShared = 1
+};
+
 struct Datum;
 struct PCell;
 typedef Common::Array<Datum> DatumArray;




More information about the Scummvm-git-logs mailing list