[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