[Scummvm-git-logs] scummvm master -> 21778dcb8089dd2e76520dea1fe2edb1097f4402

yuv422 yuv422 at users.noreply.github.com
Fri Mar 20 12:18:07 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:
21778dcb80 DRAGONS: Added power meters to thumb wrestling mini game


Commit: 21778dcb8089dd2e76520dea1fe2edb1097f4402
    https://github.com/scummvm/scummvm/commit/21778dcb8089dd2e76520dea1fe2edb1097f4402
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-03-20T23:16:57+11:00

Commit Message:
DRAGONS: Added power meters to thumb wrestling mini game

Changed paths:
    engines/dragons/font.cpp
    engines/dragons/minigame2.cpp
    engines/dragons/specialopcodes.cpp


diff --git a/engines/dragons/font.cpp b/engines/dragons/font.cpp
index 4f42beca0b..3f4f7453f4 100644
--- a/engines/dragons/font.cpp
+++ b/engines/dragons/font.cpp
@@ -231,6 +231,7 @@ void FontManager::drawTextDialogBox(uint32 x1, uint32 y1, uint32 x2, uint32 y2)
 	drawBoxChar(x2, y1, kTileIndexTopRight);
 	drawBoxChar(x1, y2, kTileIndexBottomLeft);
 	drawBoxChar(x2, y2, kTileIndexBottomRight);
+	_numTextEntries++;
 }
 
 void FontManager::clearTextDialog(uint32 x1, uint32 y1, uint32 x2, uint32 y2) {
diff --git a/engines/dragons/minigame2.cpp b/engines/dragons/minigame2.cpp
index d992ce6901..26bd63e802 100644
--- a/engines/dragons/minigame2.cpp
+++ b/engines/dragons/minigame2.cpp
@@ -24,6 +24,7 @@
 #include "dragons/actorresource.h"
 #include "dragons/dragons.h"
 #include "dragons/dragonini.h"
+#include "dragons/font.h"
 #include "dragons/talk.h"
 #include "dragons/inventory.h"
 #include "dragons/scene.h"
@@ -40,7 +41,6 @@ static const uint16 unkArray[5] = {
 };
 
 void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
-	//uint16 uVar1;
 	short sVar2;
 	short sVar3;
 	bool shouldExit;
@@ -56,10 +56,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	Actor *loungealotThumb;
 	Actor *uVar12;
 	Actor *uVar13;
-	Actor *uVar14;
-	Actor *uVar15;
-	//uint16 uVar16;
-	//uint16 uVar17;
+	Actor *flickerPortrait;
+	Actor *loungealotPortrait;
 	uint uVar18;
 	//uint uVar19;
 	//int iVar20;
@@ -189,8 +187,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	uVar13 = _vm->_actorManager->loadActor(0x13, (uint)(uint16)actorSequenceIdTbl[(uint)_dat_80093cb8 * 3 + (uint)_dat_80093cc0],
 										   flickerArm->_x_pos,
 										   flickerArm->_y_pos, 4);
-	uVar14 = _vm->_actorManager->loadActor(0x27, 0, 0x10, 0xac, 4);
-	uVar15 = _vm->_actorManager->loadActor(0x27, 1, 0x10, 0x8c, 4);
+	flickerPortrait = _vm->_actorManager->loadActor(0x27, 0, 0x10, 0xac, 4);
+	loungealotPortrait = _vm->_actorManager->loadActor(0x27, 1, 0x10, 0x8c, 4);
 	loungealotBigPunchActor->setFlag(ACTOR_FLAG_100);
 	loungealotHeadActor->setFlag(ACTOR_FLAG_100);
 	loungealotLeftUpperArm->setFlag(ACTOR_FLAG_100);
@@ -200,8 +198,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	loungealotThumb->setFlag(ACTOR_FLAG_100);
 	uVar12->setFlag(ACTOR_FLAG_100);
 	uVar13->setFlag(ACTOR_FLAG_100);
-	uVar14->setFlag(ACTOR_FLAG_100);
-	uVar15->setFlag(ACTOR_FLAG_100);
+	flickerPortrait->setFlag(ACTOR_FLAG_100);
+	loungealotPortrait->setFlag(ACTOR_FLAG_100);
 
 	loungealotBigPunchActor->_priorityLayer = 6;
 	flickerArm->_priorityLayer = 5;
@@ -212,13 +210,13 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	loungealotLeftUpperArm->_priorityLayer = 2;
 	loungealotHeadActor->_priorityLayer = 2;
 	loungealotLegActor->_priorityLayer = 1;
-	uVar14->_priorityLayer = 0;
-	uVar15->_priorityLayer = 0;
-	//TODO
-//	uVar16 = AddFlatShadedQuad(0x28, 0xa8, 0x67, 0xa8, 0x67, 0xaf, 0x28, 0xaf, 0x1f, 7, 0);
-//	uVar17 = AddFlatShadedQuad(0x28, 0x88, 0x67, 0x88, 0x67, 0x8f, 0x28, 0x8f, 0x3e0, 7, 0);
-//	(&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] & 0xfffe;
-//	(&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] & 0xfffe;
+	flickerPortrait->_priorityLayer = 0;
+	loungealotPortrait->_priorityLayer = 0;
+	FlatQuad *flickerPowerMeter = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x28, 0xa8, 0x67, 0xa8, 0x67, 0xaf, 0x28, 0xaf, 0x1f, 7, 0));
+	FlatQuad *loungealotPowerMeter = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x28, 0x88, 0x67, 0x88, 0x67, 0x8f, 0x28, 0x8f, 0x3e0, 7, 0));
+	flickerPowerMeter->flags &= ~1u;
+	loungealotPowerMeter->flags &= ~1u;
+
 //	EnableVSyncEvent();
 	loungealotHeadActor->setFlag(ACTOR_FLAG_1);
 	loungealotLeftUpperArm->setFlag(ACTOR_FLAG_1);
@@ -254,7 +252,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 
 		if ((_dat_80093c9c != 0) && !_vm->isFlagSet(ENGINE_FLAG_8000)) {
 			loungealotHeadActor->updateSequence(0);
-			//TODO _vm->_talk->clearTextDialog((uint)_dat_8008e7e8, (uint)_dat_8008e844, (uint)_dat_8008e848, (uint)_dat_8008e874);
+			_vm->_fontManager->clearText();
 			_dat_80093c9c = 0;
 		}
 		if (_dat_80093c94 != 0) {
@@ -289,43 +287,38 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 		}
 
 		if (local_27a == 0) {
-//	TODO		(&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] & 0xfffe;
+			flickerPowerMeter->flags &= ~1u;
 		} else {
-			/* TODO
-			(&DAT_8008316c)[(uint)uVar16 * 0xb] = local_27a + 0x27;
-			(&DAT_80083168)[(uint)uVar16 * 0xb] = local_27a + 0x27;
-			(&DAT_80083176)[(uint)uVar16 * 0xb] =
-					(uint16)(((int)((uint)local_27a - 1) >> 1) << 5) |
-					(uint16)(((int)(0x40 - (uint)local_27a) >> 1) << 10);
-			(&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] | 1;
-			 */
+			flickerPowerMeter->points[1].x = local_27a + 0x27;
+			flickerPowerMeter->points[3].x = local_27a + 0x27;
+			flickerPowerMeter->colour = (uint16)(((int)((uint)local_27a - 1) >> 1) << 5) |
+										(uint16)(((int)(0x40 - (uint)local_27a) >> 1) << 10);
+			flickerPowerMeter->flags |= 1;
 		}
 		if (local_278 == 0) {
-			//TODO (&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] & 0xfffe;
+			loungealotPowerMeter->flags &= ~1u;
 			if ((local_27a != 0) || (local_258 != 0)) goto LAB_800907c4;
 		} else {
-			/*TODO
-			(&DAT_8008316c)[(uint)uVar17 * 0xb] = local_278 + 0x27;
-			(&DAT_80083168)[(uint)uVar17 * 0xb] = local_278 + 0x27;
-			(&DAT_80083176)[(uint)uVar17 * 0xb] =
-					(uint16)(((int)((uint)local_278 - 1) >> 1) << 5) |
-					(uint16)(((int)(0x40 - (uint)local_278) >> 1) << 10);
-			(&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] | 1;
-			 */
+			loungealotPowerMeter->points[1].x = local_278 + 0x27;
+			loungealotPowerMeter->points[3].x = local_278 + 0x27;
+			loungealotPowerMeter->colour = (uint16)(((int)((uint)local_278 - 1) >> 1) << 5) |
+										   (uint16)(((int)(0x40 - (uint)local_278) >> 1) << 10);
+			loungealotPowerMeter->flags |= 1;
+
 			LAB_800907c4:
 			if (!bVar4) {
-				//TODO drawTextDialogBox(4, 0x14, 0xd, 0x16, 1);
-				//TODO drawTextDialogBox(4, 0x10, 0xd, 0x12, 1);
-				uVar14->_priorityLayer = 6;
-				uVar15->_priorityLayer = 6;
+				_vm->_fontManager->drawTextDialogBox(4, 0x14, 0xd, 0x16);
+				_vm->_fontManager->drawTextDialogBox(4, 0x10, 0xd, 0x12);
+				flickerPortrait->_priorityLayer = 6;
+				loungealotPortrait->_priorityLayer = 6;
 				bVar4 = true;
 			}
 		}
 		if ((((local_278 == 0) && (local_27a == 0)) && (local_258 == 0)) && (bVar4)) {
-			// TODO clearTextDialog(4, 0x14, 0xd, 0x16);
-			// TODO clearTextDialog(4, 0x10, 0xd, 0x12);
-			uVar14->_priorityLayer = 0;
-			uVar15->_priorityLayer = 0;
+			_vm->_fontManager->clearTextDialog(4, 0x14, 0xd, 0x16);
+			_vm->_fontManager->clearTextDialog(4, 0x10, 0xd, 0x12);
+			flickerPortrait->_priorityLayer = 0;
+			loungealotPortrait->_priorityLayer = 0;
 			bVar4 = false;
 		}
 
@@ -418,8 +411,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 							_vm->waitForFrames(1);
 							_vm->_screen->loadPalette(0, paletteData);
 							_vm->_screen->loadPalette(1, paletteData);
-//	TODO						clearTextDialog((uint)_dat_8008e7e8, (uint)_dat_8008e844, (uint)_dat_8008e848,
-//										 (uint)_dat_8008e874);
+							_vm->_fontManager->clearText();
 							//punched in the face.
 							break;
 						}
@@ -687,6 +679,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	} while (true);
 
 //	fade_related_calls_with_1f();
+	_vm->_fontManager->clearText();
 	_vm->_sound->PauseCDMusic();
 //	DisableVSyncEvent();
 	_vm->_dragonINIResource->getRecord(0)->x = 0x91;
@@ -695,8 +688,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 	_vm->_dragonINIResource->getRecord(0x123)->y = 0x9b;
 	_vm->_screen->loadPalette(1, _vm->_cursor->getPalette());
 	_vm->setupPalette1();
-	//TODO FUN_80035e74((uint)uVar17);
-	//TODO FUN_80035e74((uint)uVar16);
+	_vm->_screen->clearAllFlatQuads();
 	_vm->_dragonINIResource->setFlickerRecord(flicker);
 	_vm->_inventory->setState(originalInventoryType);
 	flicker->objectState = local_258 + -1;
@@ -717,9 +709,9 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 //	EnableVSyncEvent();
 	if (param_3 == 0) {
 //		fade_related_calls_with_1f();
-//		TODO ClearFlatShadedQuads(0);
-		uVar14->clearFlag(ACTOR_FLAG_40);
-		uVar15->clearFlag(ACTOR_FLAG_40);
+		_vm->_screen->clearAllFlatQuads();
+		flickerPortrait->clearFlag(ACTOR_FLAG_40);
+		loungealotPortrait->clearFlag(ACTOR_FLAG_40);
 		_vm->reset_screen_maybe();
 	} else {
 		_vm->reset_screen_maybe();
@@ -733,12 +725,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
 
 void Minigame2::fun_80093aec_dialog(uint32 textId, int16 x, int16 y) {
 	uint16 auStack4024 [2000];
-//TODO
-//	if ((((_dat_8008e7e8_dialogBox_x1 != 0) || (_dat_8008e848_dialogBox_x2 != 0)) ||
-//		 (_dat_8008e844_dialogBox_y1 != 0)) || (_dat_8008e874_dialogBox_y2 != 0)) {
-//		_vm->_talk->clearTextDialog((uint)_dat_8008e7e8_dialogBox_x1, (uint)_dat_8008e844_dialogBox_y1,
-//					 (uint)_dat_8008e848_dialogBox_x2, (uint)_dat_8008e874_dialogBox_y2);
-//	}
+	_vm->_fontManager->clearText();
 	_vm->_talk->loadText(textId, auStack4024, 2000);
 	_vm->_talk->displayDialogAroundPoint(auStack4024, x, y, 0, 0, textId);
 	_dat_80093c9c = 1;
diff --git a/engines/dragons/specialopcodes.cpp b/engines/dragons/specialopcodes.cpp
index e36ff57481..9ad65bc1e3 100644
--- a/engines/dragons/specialopcodes.cpp
+++ b/engines/dragons/specialopcodes.cpp
@@ -1329,80 +1329,78 @@ void SpecialOpcodes::mapTransition(uint16 mode) {
 			0x2d, 0x30, 0x31
 	};
 
-	bool hasDoneFade = false;
-	uint16 state = _vm->getINI(0x1e)->objectState;
-	if (state == 0) {
-		state = 0xc;
+	uint16 targetLocation = _vm->getINI(0x1e)->objectState;
+	if (targetLocation == 0) {
+		targetLocation = 0xc;
 		for (int i = 1; i < 0xd; i++) {
 			if (_vm->_scene->_mapTransitionEffectSceneID < mapSceneIdTbl[i]) {
-				state = i - 1;
+				targetLocation = i - 1;
 				break;
 			}
 		}
 	}
 
-	_vm->_cursor->updatePosition(mapLookupTbl[state * 2], mapLookupTbl[state * 2 + 1]);
+	_vm->_cursor->updatePosition(mapLookupTbl[targetLocation * 2], mapLookupTbl[targetLocation * 2 + 1]);
 	_vm->setFlags(ENGINE_FLAG_20);
 
-	int32 uVar14 = (_vm->_cursor->_y << 0x10) >> 4;
-	int32 uVar6 = (DRAGONS_SCREEN_HEIGHT - _vm->_cursor->_y) * 0x10000 >> 4;
-	int32 uVar2 = _vm->_cursor->_x;
-	int32 uVar3 = (DRAGONS_SCREEN_WIDTH - uVar2) * 0x10000 >> 4;
+	int16 cursorX = _vm->_cursor->_x;
+	int16 cursorY = _vm->_cursor->_y;
+
+	int32 topIncrement = (cursorY << 0x10) >> 4;
+	int32 bottomIncrement = (DRAGONS_SCREEN_HEIGHT - cursorY) * 0x10000 >> 4;
+	int32 rightIncrement = (DRAGONS_SCREEN_WIDTH - cursorX) * 0x10000 >> 4;
 
 	if (mode == 0) { //Close map
 		FlatQuad *topQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0x140,0,0x140,0,0,0,1,4,0));
 		FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,200,0x140,200,0x140,200,0,200,1,4,0));
 		FlatQuad *leftQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0,0,0,200,0,200,1,4,0));
 		FlatQuad *rightQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x140,0,0x140,0,0x140,200,0x140,200,1,4,0));
-		int32 iVar10 = topQuad->points[3].y << 0x10;
-		int32 iVar13 = bottomQuad->points[0].y << 0x10;
-		int32 iVar11 = rightQuad->points[0].x << 0x10;
-		int32 iVar12 = leftQuad->points[1].x << 0x10;
-
-
-
-		while (iVar10 < (_vm->_cursor->_y << 0x10)) {
-			iVar10 = iVar10 + uVar14;
-			iVar13 = iVar13 - uVar6;
-			iVar12 = iVar12 + uVar2 * 0x1000;
-			topQuad->points[3].y = iVar10 >> 0x10;
-			topQuad->points[2].y = iVar10 >> 0x10;
-			bottomQuad->points[0].y = iVar13 >> 0x10;
-			bottomQuad->points[1].y = iVar13 >> 0x10;
-			leftQuad->points[1].x = iVar12 >> 0x10;
-			leftQuad->points[3].x = iVar12 >> 0x10;
-			iVar11 = iVar11 - uVar3;
-			rightQuad->points[0].x = iVar11 >> 0x10;
-			rightQuad->points[2].x = iVar11 >> 0x10;
+		int32 topY = topQuad->points[3].y << 0x10;
+		int32 bottomY = bottomQuad->points[0].y << 0x10;
+		int32 rightX = rightQuad->points[0].x << 0x10;
+		int32 leftX = leftQuad->points[1].x << 0x10;
+
+		while (topY < (cursorY << 0x10)) {
+			topY = topY + topIncrement;
+			bottomY = bottomY - bottomIncrement;
+			leftX = leftX + cursorX * 0x1000;
+			topQuad->points[3].y = topY >> 0x10;
+			topQuad->points[2].y = topY >> 0x10;
+			bottomQuad->points[0].y = bottomY >> 0x10;
+			bottomQuad->points[1].y = bottomY >> 0x10;
+			leftQuad->points[1].x = leftX >> 0x10;
+			leftQuad->points[3].x = leftX >> 0x10;
+			rightX = rightX - rightIncrement;
+			rightQuad->points[0].x = rightX >> 0x10;
+			rightQuad->points[2].x = rightX >> 0x10;
 			_vm->waitForFrames(1);
 		}
 
 		// fade_related_calls_with_1f();
 	} else if (mode == 1) { // Open map
-		int16 cursorX = _vm->_cursor->_x;
-		int16 cursorY = _vm->_cursor->_y;
 		FlatQuad *topQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0x140,0,0x140,cursorY,0,cursorY,1,4,0));
-		FlatQuad *topQuad1 = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,cursorY,0x140,cursorY,0x140,200,0,200,1,4,0));
-		FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,cursorX,0,cursorX,200,0,200,1,4,0));
+		FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0, cursorY, 0x140, cursorY, 0x140, 200, 0, 200, 1, 4, 0));
+		FlatQuad *leftQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0, 0, cursorX, 0, cursorX, 200, 0, 200, 1, 4, 0));
 		FlatQuad *rightQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(cursorX,0,0x140,0,0x140,200,cursorX,200,1,4,0));
-		int32 iVar10 = topQuad->points[3].y << 0x10;
-		int32 iVar11 = topQuad1->points[0].y << 0x10;
-		int32 iVar12 = bottomQuad->points[1].x << 0x10;
-		int32 iVar13 = rightQuad->points[0].x << 0x10;
+		int32 topY = topQuad->points[3].y << 0x10;
+		int32 bottomY = bottomQuad->points[0].y << 0x10;
+		int32 leftX = leftQuad->points[1].x << 0x10;
+		int32 rightX = rightQuad->points[0].x << 0x10;
 		_vm->waitForFrames(2);
-		while (0 < iVar10) {
-			iVar10 = iVar10 - uVar14;
-			iVar11 = iVar11 + uVar6;
-			iVar12 = iVar12 + uVar2 * -0x1000;
-			topQuad->points[3].y = iVar10 >> 0x10;
-			topQuad->points[2].y = iVar10 >> 0x10;
-			topQuad1->points[0].y = iVar11 >> 0x10;
-			topQuad1->points[1].y = iVar11 >> 0x10;
-			bottomQuad->points[1].x = iVar12 >> 0x10;
-			bottomQuad->points[3].x = iVar12 >> 0x10;
-			iVar13 = iVar13 + uVar3;
-			rightQuad->points[0].x = iVar13 >> 0x10;
-			rightQuad->points[2].x = iVar13 >> 0x10;
+		bool hasDoneFade = false;
+		while (0 < topY) {
+			topY = topY - topIncrement;
+			bottomY = bottomY + bottomIncrement;
+			leftX = leftX + cursorX * -0x1000;
+			topQuad->points[3].y = topY >> 0x10;
+			topQuad->points[2].y = topY >> 0x10;
+			bottomQuad->points[0].y = bottomY >> 0x10;
+			bottomQuad->points[1].y = bottomY >> 0x10;
+			leftQuad->points[1].x = leftX >> 0x10;
+			leftQuad->points[3].x = leftX >> 0x10;
+			rightX = rightX + rightIncrement;
+			rightQuad->points[0].x = rightX >> 0x10;
+			rightQuad->points[2].x = rightX >> 0x10;
 			_vm->waitForFrames(1);
 			if (!hasDoneFade) {
 				// call_fade_related_1f();




More information about the Scummvm-git-logs mailing list