[Scummvm-git-logs] scummvm master -> 93d42071e6392f54692c168c0954dbd7229ffb6f

sev- sev at scummvm.org
Tue Aug 4 21:37:01 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:
519ef9d172 DIRECTOR: LINGO: Implement 'the frameLabel'
93d42071e6 DIRECTOR: LINGO: Tidy up 'the' code


Commit: 519ef9d172ace0d59b790e81c7d790a462b1e786
    https://github.com/scummvm/scummvm/commit/519ef9d172ace0d59b790e81c7d790a462b1e786
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-04T23:36:41+02:00

Commit Message:
DIRECTOR: LINGO: Implement 'the frameLabel'

Changed paths:
    engines/director/lingo/lingo-the.cpp
    engines/director/score.cpp
    engines/director/score.h


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index d689e76859..0345719335 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -426,7 +426,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		d.u.i = _vm->getCurrentMovie()->getScore()->getCurrentFrame();
 		break;
 	case kTheFrameLabel:
-		getTheEntitySTUB(kTheFrameLabel);
+		d.type = STRING;
+		d.u.s = _vm->getCurrentMovie()->getScore()->getFrameLabel(_vm->getCurrentMovie()->getScore()->getCurrentFrame());
 		break;
 	case kTheFrameScript:
 		getTheEntitySTUB(kTheFrameScript);
@@ -887,7 +888,7 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		_floatPrecisionFormat = Common::String::format("%%.%df", _floatPrecision);
 		break;
 	case kTheFrameLabel:
-		setTheEntitySTUB(kTheFrameLabel);
+		setTheEntityReadOnly(kTheFrameLabel);
 		break;
 	case kTheFrameScript:
 		setTheEntitySTUB(kTheFrameScript);
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 033d3d0d0b..0d14f7e55a 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -142,6 +142,17 @@ Common::String *Score::getLabelList() {
 	return res;
 }
 
+Common::String *Score::getFrameLabel(uint id) {
+	for (Common::SortedArray<Label *>::iterator i = _labels->begin(); i != _labels->end(); ++i) {
+		if ((*i)->number == id) {
+			return new Common::String((*i)->name);
+			break;
+		}
+	}
+
+	return new Common::String;
+}
+
 void Score::setStartToLabel(Common::String &label) {
 	uint16 num = getLabel(label);
 
diff --git a/engines/director/score.h b/engines/director/score.h
index c6a5fd78ab..a1155ec64c 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -74,6 +74,7 @@ public:
 	static int compareLabels(const void *a, const void *b);
 	uint16 getLabel(Common::String &label);
 	Common::String *getLabelList();
+	Common::String *getFrameLabel(uint id);
 	void setStartToLabel(Common::String &label);
 	void gotoLoop();
 	void gotoNext();


Commit: 93d42071e6392f54692c168c0954dbd7229ffb6f
    https://github.com/scummvm/scummvm/commit/93d42071e6392f54692c168c0954dbd7229ffb6f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-08-04T23:36:41+02:00

Commit Message:
DIRECTOR: LINGO: Tidy up 'the' code

Changed paths:
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 0345719335..3f9a5eadc7 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -342,15 +342,17 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	}
 
 	Datum d;
+	Movie *movie = _vm->getCurrentMovie();
 
-	if (!_vm->getCurrentMovie()) {
+	if (!movie) {
 		warning("Lingo::getTheEntity(): Movie is missing");
 		d.type = VOID;
 
 		return d;
 	}
 
-	LingoArchive *mainArchive = _vm->getCurrentMovie()->getMainLingoArch();
+	LingoArchive *mainArchive = movie->getMainLingoArch();
+	Score *score = movie->getScore();
 
 	switch (entity) {
 	case kTheActorList:
@@ -380,13 +382,13 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kTheClickLoc:
 		d.u.farr = new DatumArray;
 
-		d.u.farr->push_back(_vm->getCurrentMovie()->_lastClickPos.x);
-		d.u.farr->push_back(_vm->getCurrentMovie()->_lastClickPos.y);
+		d.u.farr->push_back(movie->_lastClickPos.x);
+		d.u.farr->push_back(movie->_lastClickPos.y);
 		d.type = POINT;
 		break;
 	case kTheClickOn:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_currentClickOnSpriteId;
+		d.u.i = movie->_currentClickOnSpriteId;
 		break;
 	case kTheColorDepth:
 		// bpp. 1, 2, 4, 8, 32
@@ -399,11 +401,11 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheCommandDown:
 		d.type = INT;
-		d.u.i = (_vm->getCurrentMovie()->_keyFlags & Common::KBD_META) ? 1 : 0;
+		d.u.i = (movie->_keyFlags & Common::KBD_META) ? 1 : 0;
 		break;
 	case kTheControlDown:
 		d.type = INT;
-		d.u.i = (_vm->getCurrentMovie()->_keyFlags & Common::KBD_CTRL) ? 1 : 0;
+		d.u.i = (movie->_keyFlags & Common::KBD_CTRL) ? 1 : 0;
 		break;
 	case kTheDate:
 		d = getTheDate(field);
@@ -423,22 +425,22 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheFrame:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->getScore()->getCurrentFrame();
+		d.u.i = score->getCurrentFrame();
 		break;
 	case kTheFrameLabel:
 		d.type = STRING;
-		d.u.s = _vm->getCurrentMovie()->getScore()->getFrameLabel(_vm->getCurrentMovie()->getScore()->getCurrentFrame());
+		d.u.s = score->getFrameLabel(score->getCurrentFrame());
 		break;
 	case kTheFrameScript:
 		getTheEntitySTUB(kTheFrameScript);
 		break;
 	case kTheFramePalette:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->getScore()->getCurrentPalette();
+		d.u.i = score->getCurrentPalette();
 		break;
 	case kTheFrameTempo:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->getScore()->_currentFrameRate;
+		d.u.i = score->_currentFrameRate;
 		break;
 	case kTheFreeBlock:
 	case kTheFreeBytes:
@@ -459,11 +461,11 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheKey:
 		d.type = STRING;
-		d.u.s = new Common::String(_vm->getCurrentMovie()->_key);
+		d.u.s = new Common::String(movie->_key);
 		break;
 	case kTheKeyCode:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_keyCode;
+		d.u.i = movie->_keyCode;
 		break;
 	case kTheKeyDownScript:
 		d.type = STRING;
@@ -481,27 +483,27 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheLabelList:
 		d.type = STRING;
-		d.u.s = _vm->getCurrentMovie()->getScore()->getLabelList();
+		d.u.s = score->getLabelList();
 		break;
 	case kTheLastClick:
 		d.type = INT;
-		d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastClickTime;
+		d.u.i = _vm->getMacTicks() - movie->_lastClickTime;
 		break;
 	case kTheLastEvent:
 		d.type = INT;
-		d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastEventTime;
+		d.u.i = _vm->getMacTicks() - movie->_lastEventTime;
 		break;
 	case kTheLastFrame:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->getScore()->_frames.size() - 1;
+		d.u.i = score->_frames.size() - 1;
 		break;
 	case kTheLastKey:
 		d.type = INT;
-		d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastKeyTime;
+		d.u.i = _vm->getMacTicks() - movie->_lastKeyTime;
 		break;
 	case kTheLastRoll:
 		d.type = INT;
-		d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastRollTime;
+		d.u.i = _vm->getMacTicks() - movie->_lastRollTime;
 		break;
 	case kTheMachineType:
 		// 1 - Macintosh 512Ke			D2
@@ -565,10 +567,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kTheMouseCast:
 		{
 			Common::Point pos = g_director->getCurrentStage()->getMousePos();
-			Score *sc = _vm->getCurrentMovie()->getScore();
-			uint16 spriteId = sc->getSpriteIDFromPos(pos);
+			uint16 spriteId = score->getSpriteIDFromPos(pos);
 			d.type = INT;
-			d.u.i = sc->getSpriteById(spriteId)->_castId;
+			d.u.i = score->getSpriteById(spriteId)->_castId;
 			if (d.u.i == 0)
 				d.u.i = -1;
 		}
@@ -618,7 +619,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kTheMovie:
 	case kTheMovieName:
 		d.type = STRING;
-		d.u.s = new Common::String(_vm->getCurrentMovie()->getMacName());
+		d.u.s = new Common::String(movie->getMacName());
 		break;
 	case kTheMovieFileFreeSize:
 		d.type = INT;
@@ -626,7 +627,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheMovieFileSize:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->getArchive()->getFileSize();
+		d.u.i = movie->getArchive()->getFileSize();
 		break;
 	case kTheMoviePath:
 	case kThePathName:
@@ -640,7 +641,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheOptionDown:
 		d.type = INT;
-		d.u.i = (_vm->getCurrentMovie()->_keyFlags & Common::KBD_ALT) ? 1 : 0;
+		d.u.i = (movie->_keyFlags & Common::KBD_ALT) ? 1 : 0;
 		break;
 	case kThePauseState:
 		getTheEntitySTUB(kThePauseState);
@@ -690,8 +691,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		getTheEntitySTUB(kTheSearchPath);
 		break;
 	case kTheSelection:
-		if (_vm->getCurrentMovie()->_currentEditableTextChannel) {
-			Channel *channel = _vm->getCurrentMovie()->getScore()->_channels[_vm->getCurrentMovie()->_currentEditableTextChannel];
+		if (movie->_currentEditableTextChannel) {
+			Channel *channel = score->_channels[movie->_currentEditableTextChannel];
 
 			if (channel->_widget) {
 				d.type = STRING;
@@ -701,8 +702,8 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheSelEnd:
 	case kTheSelStart:
-		if (_vm->getCurrentMovie()->_currentEditableTextChannel) {
-			Channel *channel = _vm->getCurrentMovie()->getScore()->_channels[_vm->getCurrentMovie()->_currentEditableTextChannel];
+		if (movie->_currentEditableTextChannel) {
+			Channel *channel = score->_channels[movie->_currentEditableTextChannel];
 
 			if (channel->_widget) {
 				d.type = INT;
@@ -712,7 +713,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheShiftDown:
 		d.type = INT;
-		d.u.i = (_vm->getCurrentMovie()->_keyFlags & Common::KBD_SHIFT) ? 1 : 0;
+		d.u.i = (movie->_keyFlags & Common::KBD_SHIFT) ? 1 : 0;
 		break;
 	case kTheSoundEnabled:
 		getTheEntitySTUB(kTheSoundEnabled);
@@ -746,22 +747,22 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheStageBottom:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_movieRect.bottom;
+		d.u.i = movie->_movieRect.bottom;
 		break;
 	case kTheStageColor:
 		getTheEntitySTUB(kTheStageColor);
 		break;
 	case kTheStageLeft:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_movieRect.left;
+		d.u.i = movie->_movieRect.left;
 		break;
 	case kTheStageRight:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_movieRect.right;
+		d.u.i = movie->_movieRect.right;
 		break;
 	case kTheStageTop:
 		d.type = INT;
-		d.u.i = _vm->getCurrentMovie()->_movieRect.top;
+		d.u.i = movie->_movieRect.top;
 		break;
 	case kTheStillDown:
 		d.type = INT;
@@ -801,7 +802,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheTimer:
 		d.type = INT;
-		d.u.i = _vm->getMacTicks() - _vm->getCurrentMovie()->_lastTimerReset;
+		d.u.i = _vm->getMacTicks() - movie->_lastTimerReset;
 		break;
 	case kTheTrace:
 		getTheEntitySTUB(kTheTrace);
@@ -842,6 +843,9 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		debugC(3, kDebugLingoExec, "Lingo::setTheEntity(%s, %s, %s, %s)", entity2str(entity), id.asString(true).c_str(), field2str(field), d.asString(true).c_str());
 	}
 
+	Movie *movie = _vm->getCurrentMovie();
+	Score *score = movie->getScore();
+
 	switch (entity) {
 	case kTheActorList:
 		setTheEntitySTUB(kTheActorList);
@@ -912,10 +916,10 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 			g_lingo->_itemDelimiter = d.asString()[0];
 		break;
 	case kTheKeyDownScript:
-		_vm->getCurrentMovie()->setPrimaryEventHandler(kEventKeyDown, d.asString());
+		movie->setPrimaryEventHandler(kEventKeyDown, d.asString());
 		break;
 	case kTheKeyUpScript:
-		_vm->getCurrentMovie()->setPrimaryEventHandler(kEventKeyUp, d.asString());
+		movie->setPrimaryEventHandler(kEventKeyUp, d.asString());
 		break;
 	case kTheMenu:
 		setTheEntitySTUB(kTheMenu);
@@ -924,10 +928,10 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		setTheEntitySTUB(kTheMenuItem);
 		break;
 	case kTheMouseDownScript:
-		_vm->getCurrentMovie()->setPrimaryEventHandler(kEventMouseDown, d.asString());
+		movie->setPrimaryEventHandler(kEventMouseDown, d.asString());
 		break;
 	case kTheMouseUpScript:
-		_vm->getCurrentMovie()->setPrimaryEventHandler(kEventMouseUp, d.asString());
+		movie->setPrimaryEventHandler(kEventMouseUp, d.asString());
 		break;
 	case kThePerFrameHook:
 		_perFrameHook = d;
@@ -949,16 +953,16 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		_vm->setVersion(d.asInt());
 		break;
 	case kTheSelEnd:
-		if (_vm->getCurrentMovie()->_currentEditableTextChannel != 0) {
-			Channel *channel = _vm->getCurrentMovie()->getScore()->getChannelById(_vm->getCurrentMovie()->_currentEditableTextChannel);
+		if (movie->_currentEditableTextChannel != 0) {
+			Channel *channel = score->getChannelById(movie->_currentEditableTextChannel);
 
 			if (channel->_widget)
 				(((Graphics::MacText *)channel->_widget)->setSelection(d.asInt(), false));
 		}
 		break;
 	case kTheSelStart:
-		if (_vm->getCurrentMovie()->_currentEditableTextChannel != 0) {
-			Channel *channel = _vm->getCurrentMovie()->getScore()->getChannelById(_vm->getCurrentMovie()->_currentEditableTextChannel);
+		if (movie->_currentEditableTextChannel != 0) {
+			Channel *channel = score->getChannelById(movie->_currentEditableTextChannel);
 
 			if (channel->_widget)
 				(((Graphics::MacText *)channel->_widget)->setSelection(d.asInt(), true));
@@ -997,8 +1001,8 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		g_director->getCurrentStage()->setStageColor(d.asInt());
 
 		// Queue an immediate update of the stage
-		if (! _vm->getCurrentMovie()->getScore()->getNextFrame())
-			_vm->getCurrentMovie()->getScore()->setCurrentFrame( _vm->getCurrentMovie()->getScore()->getCurrentFrame());
+		if (!score->getNextFrame())
+			score->setCurrentFrame(score->getCurrentFrame());
 		break;
 	case kTheSwitchColorDepth:
 		setTheEntitySTUB(kTheSwitchColorDepth);
@@ -1019,7 +1023,7 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 		setTheEntitySTUB(kTheTimeoutPlay);
 		break;
 	case kTheTimeoutScript:
-		_vm->getCurrentMovie()->setPrimaryEventHandler(kEventTimeout, d.asString());
+		movie->setPrimaryEventHandler(kEventTimeout, d.asString());
 		break;
 	case kTheTimer:
 		setTheEntitySTUB(kTheTimer);




More information about the Scummvm-git-logs mailing list