[Scummvm-cvs-logs] SF.net SVN: scummvm: [32414] scummvm/trunk/engines/drascula/talk.cpp

sev at users.sourceforge.net sev at users.sourceforge.net
Sat May 31 10:09:34 CEST 2008


Revision: 32414
          http://scummvm.svn.sourceforge.net/scummvm/?rev=32414&view=rev
Author:   sev
Date:     2008-05-31 01:09:34 -0700 (Sat, 31 May 2008)

Log Message:
-----------
Replace evil gotos with proper do-while loops.

Modified Paths:
--------------
    scummvm/trunk/engines/drascula/talk.cpp

Modified: scummvm/trunk/engines/drascula/talk.cpp
===================================================================
--- scummvm/trunk/engines/drascula/talk.cpp	2008-05-31 06:31:21 UTC (rev 32413)
+++ scummvm/trunk/engines/drascula/talk.cpp	2008-05-31 08:09:34 UTC (rev 32414)
@@ -76,32 +76,30 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		placeIgor();
+		placeDrascula();
+		copyBackground(x_igor + 17, y_igor, x_igor + 17, y_igor, 37, 24, drawSurface1, screenSurface);
 
-	placeIgor();
-	placeDrascula();
-	copyBackground(x_igor + 17, y_igor, x_igor + 17, y_igor, 37, 24, drawSurface1, screenSurface);
+		copyRect(x_talk[face], 148, x_igor + 17, y_igor, 25, 24, frontSurface, screenSurface);
 
-	copyRect(x_talk[face], 148, x_igor + 17, y_igor, 25, 24, frontSurface, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, x_igor + 26, y_igor);
 
-	if (withVoices == 0)
-		centerText(said, x_igor + 26, y_igor);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
+	} while	(!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 	placeIgor();
 	placeDrascula();
@@ -123,37 +121,35 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		placeIgor();
+		placeDrascula();
+		if (num_ejec == 6)
+			pon_hare();
 
-	placeIgor();
-	placeDrascula();
-	if (num_ejec == 6)
-		pon_hare();
+		copyBackground(x_dr, y_dr, x_dr, y_dr, 38, 31, drawSurface1, screenSurface);
+		if (num_ejec == 6)
+			copyRect(x_talk[face], 90, x_dr, y_dr, 38, 31, drawSurface2, screenSurface);
+		else
+			copyRect(x_talk[face], 90, x_dr, y_dr, 38, 31, backSurface, screenSurface);
 
-	copyBackground(x_dr, y_dr, x_dr, y_dr, 38, 31, drawSurface1, screenSurface);
-	if (num_ejec == 6)
-		copyRect(x_talk[face], 90, x_dr, y_dr, 38, 31, drawSurface2, screenSurface);
-	else
-		copyRect(x_talk[face], 90, x_dr, y_dr, 38, 31, backSurface, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, x_dr + 19, y_dr);
 
-	if (withVoices == 0)
-		centerText(said, x_dr + 19, y_dr);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 	placeIgor();
 	placeDrascula();
@@ -175,36 +171,34 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
-	updateRefresh_pre();
+		placeIgor();
+		placeDrascula();
+		if (num_ejec == 6)
+			pon_hare();
 
-	placeIgor();
-	placeDrascula();
-	if (num_ejec == 6)
-		pon_hare();
+		copyBackground(x_dr, y_dr, x_dr, y_dr, 45, 31, drawSurface1, screenSurface);
+		if (num_ejec != 6)
+			copyRect(x_talk[face], 58, x_dr + 7, y_dr, 38, 31, backSurface, screenSurface);
+		else
+			copyRect(x_talk[face], 58, x_dr + 7, y_dr, 38, 31, drawSurface2, screenSurface);
 
-	copyBackground(x_dr, y_dr, x_dr, y_dr, 45, 31, drawSurface1, screenSurface);
-	if (num_ejec != 6)
-		copyRect(x_talk[face], 58, x_dr + 7, y_dr, 38, 31, backSurface, screenSurface);
-	else
-		copyRect(x_talk[face], 58, x_dr + 7, y_dr, 38, 31, drawSurface2, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, x_dr + 19, y_dr);
 
-	if (withVoices == 0)
-		centerText(said, x_dr + 19, y_dr);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	if (num_ejec == 6)
 		updateRoom(); 
 
@@ -228,21 +222,18 @@
 	if (num_ejec == 6)
 		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-bucless:
+	do {
+		if (withVoices == 0) {
+			if (num_ejec == 1)
+				centerText(said, 156, 90);
+			else if (num_ejec == 6)
+				centerText(said, 213, 72);
+			else if (num_ejec == 5)
+				centerText(said, 173, 92);
+		}
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+	} while (!isTalkFinished(&length));
 
-	if (withVoices == 0) {
-		if (num_ejec == 1)
-			centerText(said, 156, 90);
-		else if (num_ejec == 6)
-			centerText(said, 213, 72);
-		else if (num_ejec == 5)
-			centerText(said, 173, 92);
-	}
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	if (num_ejec == 6) {
 		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
@@ -264,34 +255,31 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		if (num_ejec == 1 || num_ejec == 4)
+			placeIgor();
+		if (num_ejec == 1)
+			placeDrascula();
+		if (num_ejec == 1 || num_ejec == 6)
+			copyBackground(x_igor, y_igor, x_igor, y_igor, 29, 25, drawSurface1, screenSurface);
+		copyRect(x_talk[face], 173, x_igor, y_igor, 29, 25, frontSurface, screenSurface);
 
-	if (num_ejec == 1 || num_ejec == 4)
-		placeIgor();
-	if (num_ejec == 1)
-		placeDrascula();
-	if (num_ejec == 1 || num_ejec == 6)
-		copyBackground(x_igor, y_igor, x_igor, y_igor, 29, 25, drawSurface1, screenSurface);
-	copyRect(x_talk[face], 173, x_igor, y_igor, 29, 25, frontSurface, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, x_igor + 26, y_igor);
 
-	if (withVoices == 0)
-		centerText(said, x_igor + 26, y_igor);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	if (num_ejec == 6) {
 		updateRoom();
 	}
@@ -319,36 +307,34 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		if (num_ejec == 1) {
+			if (musicStatus() == 0)
+				playMusic(roomMusic);
+		} else if (num_ejec == 2) {
+			if (musicStatus() == 0 && flags[11] == 0 && roomMusic != 0)
+				playMusic(roomMusic);
+		}
 
-	if (num_ejec == 1) {
-		if (musicStatus() == 0)
-			playMusic(roomMusic);
-	} else if (num_ejec == 2) {
-		if (musicStatus() == 0 && flags[11] == 0 && roomMusic != 0)
-			playMusic(roomMusic);
-	}
+		face = _rnd->getRandomNumber(8);
 
-	face = _rnd->getRandomNumber(8);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 2, 121, 44, 21, 24, extraSurface, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 2, 121, 44, 21, 24, extraSurface, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 132, 45);
 
-	if (withVoices == 0)
-		centerText(said, 132, 45);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -368,40 +354,38 @@
 
 	talkInit(filename);
 
-bucless:
-	if (num_ejec != 5) {
-		face = _rnd->getRandomNumber(4);
+	do {
+		if (num_ejec != 5) {
+			face = _rnd->getRandomNumber(4);
 
-		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+			copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-		updateRefresh_pre();
+			updateRefresh_pre();
 
-		copyBackground(x_bj + 2, y_bj - 1, x_bj + 2, y_bj - 1, 27, 40,
-					drawSurface1, screenSurface);
+			copyBackground(x_bj + 2, y_bj - 1, x_bj + 2, y_bj - 1, 27, 40,
+						   drawSurface1, screenSurface);
 
-		copyRect(x_talk[face], 99, x_bj + 2, y_bj - 1, 27, 40,
-					drawSurface3, screenSurface);
-		pon_hare();
-		updateRefresh();
+			copyRect(x_talk[face], 99, x_bj + 2, y_bj - 1, 27, 40,
+					 drawSurface3, screenSurface);
+			pon_hare();
+			updateRefresh();
 
-		if (withVoices == 0)
-			centerText(said, x_bj + 7, y_bj);
+			if (withVoices == 0)
+				centerText(said, x_bj + 7, y_bj);
 
-		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+			updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-		pause(3);
-	} else {
-		updateRoom();
+			pause(3);
+		} else {
+			updateRoom();
 
-		if (withVoices == 0)
-			centerText(said, 93, 80);
+			if (withVoices == 0)
+				centerText(said, 93, 80);
 
-		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-	}
+			updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		}
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -449,81 +433,78 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(5);
 
-	face = _rnd->getRandomNumber(5);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
+		if (num_ejec == 2)
+			copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, ancho_hare, alto_talk - 1, screenSurface, drawSurface3);
+		else
+			copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
+					   (int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]),
+						   screenSurface, drawSurface3);
 
-	updateRefresh_pre();
-	if (num_ejec == 2)
-		copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, ancho_hare, alto_talk - 1, screenSurface, drawSurface3);
-	else
-		copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
-				(int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]),
-				screenSurface, drawSurface3);
+		pon_hare();
 
-	pon_hare();
+		if (num_ejec == 2) {
+			if (!strcmp(menuBackground, "99.alg") || !strcmp(menuBackground, "994.alg"))
+				copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, ancho_hare, alto_talk - 1, drawSurface3, screenSurface);
+		} else {
+			copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
+					   (int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]),
+						   drawSurface3, screenSurface);
+		}
 
-	if (num_ejec == 2) {
-		if (!strcmp(menuBackground, "99.alg") || !strcmp(menuBackground, "994.alg"))
-			copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, ancho_hare, alto_talk - 1, drawSurface3, screenSurface);
-	} else {
-		copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
-				(int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]),
-				drawSurface3, screenSurface);
-	}
-
-	if (sentido_hare == 0) {
-		if (num_ejec == 2)
-			copyRect(x_talk_izq[face], y_mask_talk, hare_x + 8, hare_y - 1, ancho_talk, alto_talk,
+		if (sentido_hare == 0) {
+			if (num_ejec == 2)
+				copyRect(x_talk_izq[face], y_mask_talk, hare_x + 8, hare_y - 1, ancho_talk, alto_talk,
 						extraSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_izq[face], y_mask_talk, hare_x + (int)((8.0f / 100) * factor_red[hare_y + alto_hare]),
+			else
+				reduce_hare_chico(x_talk_izq[face], y_mask_talk, hare_x + (int)((8.0f / 100) * factor_red[hare_y + alto_hare]),
 						hare_y, ancho_talk, alto_talk, factor_red[hare_y + alto_hare],
 						extraSurface, screenSurface);
 
-		updateRefresh();
-	} else if (sentido_hare == 1) {
-		if (num_ejec == 2)
-			copyRect(x_talk_dch[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk,
+			updateRefresh();
+		} else if (sentido_hare == 1) {
+			if (num_ejec == 2)
+				copyRect(x_talk_dch[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk,
 					extraSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_dch[face], y_mask_talk, hare_x + (int)((12.0f / 100) * factor_red[hare_y + alto_hare]),
+			else
+				reduce_hare_chico(x_talk_dch[face], y_mask_talk, hare_x + (int)((12.0f / 100) * factor_red[hare_y + alto_hare]),
 					hare_y, ancho_talk, alto_talk, factor_red[hare_y + alto_hare], extraSurface, screenSurface);
-		updateRefresh();
-	} else if (sentido_hare == 2) {
-		if (num_ejec == 2)
-			copyRect(x_talk_izq[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk,
+			updateRefresh();
+		} else if (sentido_hare == 2) {
+			if (num_ejec == 2)
+				copyRect(x_talk_izq[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk,
 					frontSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_izq[face], y_mask_talk,
+			else
+				reduce_hare_chico(x_talk_izq[face], y_mask_talk,
 						suma_1_pixel + hare_x + (int)((12.0f / 100) * factor_red[hare_y + alto_hare]),
 						hare_y, ancho_talk, alto_talk, factor_red[hare_y + alto_hare],
 						frontSurface, screenSurface);
-		updateRefresh();
-	} else if (sentido_hare == 3) {
-		if (num_ejec == 2)
-			copyRect(x_talk_dch[face], y_mask_talk, hare_x + 8, hare_y, ancho_talk, alto_talk,
+			updateRefresh();
+		} else if (sentido_hare == 3) {
+			if (num_ejec == 2)
+				copyRect(x_talk_dch[face], y_mask_talk, hare_x + 8, hare_y, ancho_talk, alto_talk,
 					frontSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_dch[face], y_mask_talk,
+			else
+				reduce_hare_chico(x_talk_dch[face], y_mask_talk,
 						suma_1_pixel + hare_x + (int)((8.0f / 100) * factor_red[hare_y + alto_hare]),
 						hare_y, ancho_talk,alto_talk, factor_red[hare_y + alto_hare],
 						frontSurface, screenSurface);
-		updateRefresh();
-	}
+			updateRefresh();
+		}
 
-	if (withVoices == 0)
-		centerText(said, hare_x, hare_y);
+		if (withVoices == 0)
+			centerText(said, hare_x, hare_y);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	pause(3);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
@@ -548,29 +529,26 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(3);
 
-	face = _rnd->getRandomNumber(3);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 139, 228, 112, 47, 60,
+					   extraSurface, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 139, 228, 112, 47, 60,
-				extraSurface, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 221, 128);
 
-	if (withVoices == 0)
-		centerText(said, 221, 128);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -604,28 +582,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 29, 177, 50, 19, 19, frontSurface, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 29, 177, 50, 19, 19, frontSurface, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 181, 54);
 
-	if (withVoices == 0)
-		centerText(said, 181, 54);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
@@ -660,30 +635,27 @@
 
 	copyBackground(vb_x + 5, 64, OBJWIDTH + 1, 0, 25, 27, drawSurface1, drawSurface3);
 
-bucless:
+	do {
+		if (sentido_vb == 1) {
+			face = _rnd->getRandomNumber(5);
+			copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	if (sentido_vb == 1) {
-		face = _rnd->getRandomNumber(5);
-		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+			pon_hare();
+			pon_vb();
 
-		pon_hare();
-		pon_vb();
+			copyBackground(OBJWIDTH + 1, 0, vb_x + 5, 64, 25, 27, drawSurface3, screenSurface);
+			copyRect(x_talk[face], 34, vb_x + 5, 64, 25, 27, frontSurface, screenSurface);
+			updateRefresh();
+		}
 
-		copyBackground(OBJWIDTH + 1, 0, vb_x + 5, 64, 25, 27, drawSurface3, screenSurface);
-		copyRect(x_talk[face], 34, vb_x + 5, 64, 25, 27, frontSurface, screenSurface);
-		updateRefresh();
-	}
+		if (withVoices == 0)
+			centerText(said, vb_x, 66);
 
-	if (withVoices == 0)
-		centerText(said, vb_x, 66);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 	if (musicStatus() == 0 && flags[11] == 0 && roomMusic != 0)
@@ -703,15 +675,14 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		updateRoom();
 
-	updateRoom();
-	if (withVoices == 0)
-		centerText(said, 150, 80);
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		if (withVoices == 0)
+			centerText(said, 150, 80);
 
-	if (!isTalkFinished(&length))
-		goto bucless;
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+	} while (!isTalkFinished(&length));
 
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
@@ -738,38 +709,36 @@
 	pos_blind[4] = 126;
 	pos_blind[5] = 149;
 
-bucless:
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
-	pos_blind[5] = 149;
-	char c = toupper(sincronia[p]);
+	do {
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		pos_blind[5] = 149;
+		char c = toupper(sincronia[p]);
 
-	if (c == '0' || c == '2' || c == '4' || c == '6')
-		pos_blind[0] = 1;
-	else
-		pos_blind[0] = 132;
+		if (c == '0' || c == '2' || c == '4' || c == '6')
+			pos_blind[0] = 1;
+		else
+			pos_blind[0] = 132;
 
-	if (c == '0' || c == '1')
-		num_cara = drawSurface3;
-	else if (c == '2' || c == '3')
-		num_cara = extraSurface;
-	else if (c == '4' || c == '5')
-		num_cara = backSurface;
-	else {
-		num_cara = frontSurface;
-		pos_blind[5] = 146;
-	}
+		if (c == '0' || c == '1')
+			num_cara = drawSurface3;
+		else if (c == '2' || c == '3')
+			num_cara = extraSurface;
+		else if (c == '4' || c == '5')
+			num_cara = backSurface;
+		else {
+			num_cara = frontSurface;
+			pos_blind[5] = 146;
+		}
 
-	copyRectClip( pos_blind, num_cara, screenSurface);
+		copyRectClip( pos_blind, num_cara, screenSurface);
 
-	if (withVoices == 0)
-		centerText(said, 310, 71);
+		if (withVoices == 0)
+			centerText(said, 310, 71);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-	pause(2);
-	p++;
-
-	if (!isTalkFinished(&length))
-		goto bucless;
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(2);
+		p++;
+	} while (!isTalkFinished(&length));
 }
 
 void DrasculaEngine::talk_hacker(const char *said, const char *filename) {
@@ -782,13 +751,11 @@
 
 	talkInit(filename);
 
-bucless:
-	if (withVoices == 0)
-		centerText(said, 156, 170);
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
+	do {
+		if (withVoices == 0)
+			centerText(said, 156, 170);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+	} while (!isTalkFinished(&length));
 }
 
 void DrasculaEngine::talk_wolf(int index) {
@@ -806,28 +773,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(8);
 
-	face = _rnd->getRandomNumber(8);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 136, 198, 81, 26, 24, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 136, 198, 81, 26, 24, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 203, 78);
 
-	if (withVoices == 0)
-		centerText(said, 203, 78);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -847,28 +811,26 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 156, 190, 64, 18, 24, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 156, 190, 64, 18, 24, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 197, 64);
 
-	if (withVoices == 0)
-		centerText(said, 197, 64);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -888,28 +850,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(7);
 
-	face = _rnd->getRandomNumber(7);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyRect(x_talk[face], 145, 145, 105, 25, 29, drawSurface3, screenSurface);
 
-	copyRect(x_talk[face], 145, 145, 105, 25, 29, drawSurface3, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 160, 105);
 
-	if (withVoices == 0)
-		centerText(said, 160, 105);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	flags[1] = 0;
 	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 	updateRefresh_pre();
@@ -927,28 +886,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(4);
 
-	face = _rnd->getRandomNumber(4);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 171, 173, 116, 25, 28, drawSurface3, screenSurface);
 
-	copyBackground(x_talk[face], 171, 173, 116, 25, 28, drawSurface3, screenSurface);
+		updateRefresh();
 
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 195, 107);
 
-	if (withVoices == 0)
-		centerText(said, 195, 107);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	flags[1] = 0;
 	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 	updateRefresh_pre();
@@ -970,28 +926,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(5);
 
-	face = _rnd->getRandomNumber(5);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 130, 151, 43, 21, 24, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 130, 151, 43, 21, 24, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 132, 45);
 
-	if (withVoices == 0)
-		centerText(said, 132, 45);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -1011,29 +964,26 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(4);
 
-	face = _rnd->getRandomNumber(4);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(65, 103, 65, 103, 49, 38, drawSurface1, screenSurface);
+		copyRect(x_talk[face], 105, 65, 103, 49, 38, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(65, 103, 65, 103, 49, 38, drawSurface1, screenSurface);
-	copyRect(x_talk[face], 105, 65, 103, 49, 38, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 104, 102);
 
-	if (withVoices == 0)
-		centerText(said, 104, 102);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -1054,31 +1004,28 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(2);
+		pantalla = _rnd->getRandomNumber(2);
 
-	face = _rnd->getRandomNumber(2);
-	pantalla = _rnd->getRandomNumber(2);
+		if (face == 0 && pantalla == 0)
+			num_cara = (char *)drawSurface3;
+		else if (pantalla == 1)
+			num_cara = (char *)frontSurface;
+		else
+			num_cara = (char *)backSurface;
 
-	if (face == 0 && pantalla == 0)
-		num_cara = (char *)drawSurface3;
-	else if (pantalla == 1)
-		num_cara = (char *)frontSurface;
-	else
-		num_cara = (char *)backSurface;
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		copyBackground(x_talk[face], 1, 45, 24, 92, 108, (byte *)num_cara, screenSurface);
 
-	copyBackground(x_talk[face], 1, 45, 24, 92, 108, (byte *)num_cara, screenSurface);
+		if (withVoices == 0)
+			centerText(said, 90, 50);
 
-	if (withVoices == 0)
-		centerText(said, 90, 50);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -1102,69 +1049,66 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = atoi(&sincronia[p]);
 
-	face = atoi(&sincronia[p]);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
-
-	updateRefresh_pre();
-	if (num_ejec == 2)
-		copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, ancho_hare, alto_talk - 1, screenSurface, drawSurface3);
-	else
-		copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
+		updateRefresh_pre();
+		if (num_ejec == 2)
+			copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, ancho_hare, alto_talk - 1, screenSurface, drawSurface3);
+		else
+			copyBackground(hare_x, hare_y, OBJWIDTH + 1, 0, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
 				(int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]), screenSurface, drawSurface3);
-	pon_hare();
-	if (num_ejec == 2) {
-		if (alto_hare != 56)
-			copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, ancho_hare, alto_talk - 1, drawSurface3, screenSurface);
-	} else
-		copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
+		pon_hare();
+		if (num_ejec == 2) {
+			if (alto_hare != 56)
+				copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, ancho_hare, alto_talk - 1, drawSurface3, screenSurface);
+		} else
+			copyBackground(OBJWIDTH + 1, 0, hare_x, hare_y, (int)(((float)ancho_hare / 100) * factor_red[hare_y + alto_hare]),
 				(int)(((float)(alto_talk - 1) / 100) * factor_red[hare_y + alto_hare]), drawSurface3, screenSurface);
 
-	if (sentido_hare == 0) {
-		if (num_ejec == 2)
-			copyRect(x_talk_izq[face], y_mask_talk, hare_x + 8, hare_y - 1, ancho_talk, alto_talk, extraSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_izq[face], y_mask_talk, (int)(hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]),
+		if (sentido_hare == 0) {
+			if (num_ejec == 2)
+				copyRect(x_talk_izq[face], y_mask_talk, hare_x + 8, hare_y - 1, ancho_talk, alto_talk, extraSurface, screenSurface);
+			else
+				reduce_hare_chico(x_talk_izq[face], y_mask_talk, (int)(hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]),
 							hare_y, ancho_talk, alto_talk, factor_red[hare_y + alto_hare], extraSurface, screenSurface);
-		updateRefresh();
-	} else if (sentido_hare == 1) {
-		if (num_ejec == 2)
-			copyRect(x_talk_dch[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk, extraSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_dch[face], y_mask_talk, (int)(hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]),
+			updateRefresh();
+		} else if (sentido_hare == 1) {
+			if (num_ejec == 2)
+				copyRect(x_talk_dch[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk, extraSurface, screenSurface);
+			else
+				reduce_hare_chico(x_talk_dch[face], y_mask_talk, (int)(hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]),
 							hare_y, ancho_talk, alto_talk, factor_red[hare_y + alto_hare], extraSurface, screenSurface);
-		updateRefresh();
-	} else if (sentido_hare == 2) {
-		if (num_ejec == 2)
-			copyRect(x_talk_izq[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk, frontSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_izq[face], y_mask_talk,
+			updateRefresh();
+		} else if (sentido_hare == 2) {
+			if (num_ejec == 2)
+				copyRect(x_talk_izq[face], y_mask_talk, hare_x + 12, hare_y, ancho_talk, alto_talk, frontSurface, screenSurface);
+			else
+				reduce_hare_chico(x_talk_izq[face], y_mask_talk,
 						(int)(suma_1_pixel + hare_x + (12.0f / 100) * factor_red[hare_y + alto_hare]), hare_y,
 						ancho_talk, alto_talk, factor_red[hare_y + alto_hare], frontSurface, screenSurface);
-		updateRefresh();
-	} else if (sentido_hare == 3) {
-		if (num_ejec == 2)
-			copyRect(x_talk_dch[face], y_mask_talk, hare_x + 8, hare_y, ancho_talk, alto_talk, frontSurface, screenSurface);
-		else
-			reduce_hare_chico(x_talk_dch[face], y_mask_talk,
+			updateRefresh();
+		} else if (sentido_hare == 3) {
+			if (num_ejec == 2)
+				copyRect(x_talk_dch[face], y_mask_talk, hare_x + 8, hare_y, ancho_talk, alto_talk, frontSurface, screenSurface);
+			else
+				reduce_hare_chico(x_talk_dch[face], y_mask_talk,
 						(int)(suma_1_pixel + hare_x + (8.0f / 100) * factor_red[hare_y + alto_hare]), hare_y,
 						ancho_talk, alto_talk, factor_red[hare_y + alto_hare], frontSurface, screenSurface);
-		updateRefresh();
-	}
+			updateRefresh();
+		}
 
-	if (withVoices == 0)
-		centerText(said, hare_x, hare_y);
+		if (withVoices == 0)
+			centerText(said, hare_x, hare_y);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	p++;
-	pause(3);
+		p++;
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	if (num_ejec == 1 && musicStatus() == 0 && flags[11] == 0)
 		playMusic(roomMusic);
 	if (num_ejec == 2 && musicStatus() == 0 && flags[11] == 0 && roomMusic != 0)
@@ -1181,23 +1125,20 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = (face == 1) ? 0 : 1;
 
-	face = (face == 1) ? 0 : 1;
+		flags[19] = face;
+		updateRoom();
 
-	flags[19] = face;
-	updateRoom();
+		if (withVoices == 0)
+			centerText(said, 263, 69);
 
-	if (withVoices == 0)
-		centerText(said, 263, 69);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(4);
+	} while (!isTalkFinished(&length));
 
-	pause(4);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	flags[19] = cara_antes;
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
@@ -1216,18 +1157,15 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		updateRoom();
+		if (withVoices == 0)
+			centerText(said, 87, 66);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+	} while (!isTalkFinished(&length));
 
 	updateRoom();
-	if (withVoices == 0)
-		centerText(said, 87, 66);
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
-	updateRoom();
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
 
 void DrasculaEngine::talk_igor_seated(int index) {
@@ -1245,28 +1183,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(3);
 
-	face = _rnd->getRandomNumber(3);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 109, 207, 92, 21, 23, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 109, 207, 92, 21, 23, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 221, 102);
 
-	if (withVoices == 0)
-		centerText(said, 221, 102);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -1286,28 +1221,25 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		_rnd->getRandomNumber(3);
 
-	_rnd->getRandomNumber(3);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
 
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		updateRefresh_pre();
 
-	updateRefresh_pre();
+		copyBackground(x_talk[face], 78, 199, 94, 38, 27, drawSurface3, screenSurface);
+		pon_hare();
+		updateRefresh();
 
-	copyBackground(x_talk[face], 78, 199, 94, 38, 27, drawSurface3, screenSurface);
-	pon_hare();
-	updateRefresh();
+		if (withVoices == 0)
+			centerText(said, 221, 102);
 
-	if (withVoices == 0)
-		centerText(said, 221, 102);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
+	} while (!isTalkFinished(&length));
 
-	pause(3);
-
-	if (!isTalkFinished(&length))
-		goto bucless;
-
 	updateRoom();
 	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 }
@@ -1322,29 +1254,26 @@
 
 	talkInit(filename);
 
-bucless:
+	do {
+		face = _rnd->getRandomNumber(3);
+		copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
+		copyBackground(interf_x[l] + 24, interf_y[l], 0, 45, 39, 31, drawSurface2, screenSurface);
+		copyBackground(x_talk[face], 1, 171, 68, 45, 48, drawSurface2, screenSurface);
+		l++;
+		if (l == 7)
+			l = 0;
 
-	face = _rnd->getRandomNumber(3);
-	copyBackground(0, 0, 0, 0, 320, 200, drawSurface1, screenSurface);
-	copyBackground(interf_x[l] + 24, interf_y[l], 0, 45, 39, 31, drawSurface2, screenSurface);
-	copyBackground(x_talk[face], 1, 171, 68, 45, 48, drawSurface2, screenSurface);
-	l++;
-	if (l == 7)
-		l = 0;
+		if (withVoices == 0)
+			centerText(said, 191, 69);
 
-	if (withVoices == 0)
-		centerText(said, 191, 69);
+		updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
 
-	updateScreen(0, 0, 0, 0, 320, 200, screenSurface);
+		pause(3);
 
-	pause(3);
-
-	byte key = getScan();
-	if (key == Common::KEYCODE_ESCAPE)
-		term_int = 1;
-
-	if (!isTalkFinished(&length))
-		goto bucless;
+		byte key = getScan();
+		if (key == Common::KEYCODE_ESCAPE)
+			term_int = 1;
+	} while (!isTalkFinished(&length));
 }
 
 } // End of namespace Drascula


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list