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

aquadran at users.sourceforge.net aquadran at users.sourceforge.net
Wed Aug 1 21:31:37 CEST 2007


Revision: 28388
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28388&view=rev
Author:   aquadran
Date:     2007-08-01 12:31:36 -0700 (Wed, 01 Aug 2007)

Log Message:
-----------
more changes

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

Modified: scummvm/trunk/engines/drascula/drascula.cpp
===================================================================
--- scummvm/trunk/engines/drascula/drascula.cpp	2007-08-01 18:14:10 UTC (rev 28387)
+++ scummvm/trunk/engines/drascula/drascula.cpp	2007-08-01 19:31:36 UTC (rev 28388)
@@ -1588,17 +1588,17 @@
 	VUELCA_PANTALLA(73, 63, 73, 63, 177, 97, dir_zona_pantalla);
 
 	for (;;) {
-		nivel_master = 72 + 61 - (12/*Master*/ * 4);
-		nivel_voc = 72 + 61 - (12/*Voc*/ * 4);
-		nivel_cd = 72 + 61 - (10/*CD*/ * 4);
+		nivel_master = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16) * 4);
+		nivel_voc = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16) * 4);
+		nivel_cd = 72 + 61 - ((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16) * 4);
 
 		refresca_pantalla();
 
 		DIBUJA_BLOQUE(1, 56, 73, 63, 177, 97, dir_mesa, dir_zona_pantalla);
 
-		DIBUJA_FONDO(183, 56, 82, nivel_master, 39, 2 + (12/*Master*/ * 4), dir_mesa, dir_zona_pantalla);
-		DIBUJA_FONDO(183, 56, 138, nivel_voc, 39, 2 + (12/*Voc*/ * 4), dir_mesa, dir_zona_pantalla);
-		DIBUJA_FONDO(183, 56, 194, nivel_cd, 39, 2 + (10/*CD*/ * 4), dir_mesa, dir_zona_pantalla);
+		DIBUJA_FONDO(183, 56, 82, nivel_master, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16) * 4), dir_mesa, dir_zona_pantalla);
+		DIBUJA_FONDO(183, 56, 138, nivel_voc, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16) * 4), dir_mesa, dir_zona_pantalla);
+		DIBUJA_FONDO(183, 56, 194, nivel_cd, 39, 2 + ((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16) * 4), dir_mesa, dir_zona_pantalla);
 
 		cursor_mesa();
 
@@ -1610,30 +1610,30 @@
 			break;
 		if (boton_izq == 1) {
 			if (x_raton > 80 && x_raton < 121) {
-// TODO
-//				if (y_raton < nivel_master && Master < 15)
-//					Master++;
-//				if (y_raton > nivel_master && Master > 0)
-//					Master--;
-//				SetMasterVolume(Master);
+				int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16;
+				if (y_raton < nivel_master && vol < 15)
+					vol++;
+				if (y_raton > nivel_master && vol > 0)
+					vol--;
+				_mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, vol * 16);
 			}
 
 			if (x_raton > 136 && x_raton < 178) {
-// TODO
-//				if (y_raton < nivel_voc && Voc < 15)
-//					Voc++;
-//				if (y_raton > nivel_voc && Voc > 0)
-//					Voc--;
-//				SetVocVolume(Voc);
+				int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 16;
+				if (y_raton < nivel_voc && vol < 15)
+					vol++;
+				if (y_raton > nivel_voc && vol > 0)
+					vol--;
+				_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, vol * 16);
 			}
 
 			if (x_raton > 192 && x_raton < 233) {
-// TODO
-//				if (y_raton < nivel_cd && CD < 15)
-//					CD++;
-//				if (y_raton > nivel_cd && CD > 0)
-//					CD--;
-//				SetCDVolume(CD);
+				int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16;
+				if (y_raton < nivel_cd && vol < 15)
+					vol++;
+				if (y_raton > nivel_cd && vol > 0)
+					vol--;
+				_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, vol * 16);
 			}
 		}
 
@@ -1646,16 +1646,16 @@
 	char nombres[10][23];
 	char fichero[13];
 	int n, n2, num_sav, y = 27;
-	FILE *sav;
+	Common::InSaveFile *sav;
 
 	borra_pantalla();
 
-	if ((sav = fopen("saves.epa", "r")) == NULL) {
+	if (!(sav = _saveFileMan->openForLoading("saves.epa"))) {
 		error("Can't open saves.epa file.");
 	}
 	for (n = 0; n < NUM_SAVES; n++)
-		fscanf(sav, "%s", nombres[n]);
-	fclose(sav);
+		sav->read(nombres[n], 23);
+	delete sav;
 
 	lee_dibujos("savescr.alg");
 	descomprime_dibujo(dir_dibujo1, MEDIA);
@@ -1708,13 +1708,14 @@
 						if (n == 9)
 							strcpy(fichero, "gsave10");
 						para_grabar(fichero);
-						// TODO
-						if ((sav = fopen("saves.epa", "w")) == NULL) {
-							error("no puedo abrir el archivo de partidas.");
+						Common::OutSaveFile *tsav;
+						if (!(tsav = _saveFileMan->openForSaving("saves.epa"))) {
+							error("Can't open saves.epa file.");
 						}
 						for (n = 0; n < NUM_SAVES; n++)
-							fprintf(sav, "%s\n", nombres[n]);
-						fclose(sav);
+							tsav->write(nombres[n], 23);
+						tsav->finalize();
+						delete tsav;
 					}
 				}
 
@@ -1765,12 +1766,14 @@
 				break;
 			} else if (x_raton > 208 && y_raton > 123 && x_raton < 282 && y_raton < 149 && hay_seleccion == 1) {
 				para_grabar(fichero);
-				if ((sav = fopen("saves.epa", "w")) == NULL) {
-					error("no puedo abrir el archivo de partidas.");
+				Common::OutSaveFile *tsav;
+				if (!(tsav = _saveFileMan->openForSaving("saves.epa"))) {
+					error("Can't open saves.epa file.");
 				}
 				for (n = 0; n < NUM_SAVES; n++)
-					fprintf(sav, "%s\n", nombres[n]);
-				fclose(sav);
+					tsav->write(nombres[n], 23);
+				tsav->finalize();
+				delete tsav;
 			} else if (x_raton > 168 && y_raton > 154 && x_raton < 242 && y_raton < 180)
 				break;
 			else if (hay_seleccion == 0) {
@@ -2245,7 +2248,6 @@
 	int NFrames = 1;
 	int cnt = 2;
 
-	TimeMed = CLOCKS_PER_SEC / FPS;
 	AuxBuffLast = (byte *)malloc(65000);
 	AuxBuffDes = (byte *)malloc(65000);
 
@@ -2267,7 +2269,7 @@
 	_system->updateScreen();
 	set_dac(cPal);
 	memcpy(AuxBuffLast, AuxBuffDes, 64000);
-	WaitForNext(TimeMed);
+	WaitForNext(FPS);
 	while (cnt < NFrames) {
 		FileIn.read(&Leng, sizeof(Leng));
 		AuxBuffOrg = (byte *)malloc(Leng);
@@ -2280,7 +2282,7 @@
 		}
 		_system->copyRectToScreen((const byte *)VGA, 320, 0, 0, 320, 200);
 		_system->updateScreen();
-		WaitForNext(TimeMed);
+		WaitForNext(FPS);
 		cnt++;
 		byte key = getscan();
 		if (key == 0x01)
@@ -2320,7 +2322,7 @@
 }
 
 void DrasculaEngine::pausa(int cuanto) {
-	_system->delayMillis(cuanto * 25); // was originaly 2
+	_system->delayMillis(cuanto * 30); // was originaly 2
 }
 
 void DrasculaEngine::habla_dr_grande(const char *dicho, const char *filename) {
@@ -2526,6 +2528,7 @@
 
 	tiempol = _system->getMillis();
 	tiempou = (unsigned int)tiempol / 2;
+	_rnd->setSeed(tiempou);
 
 	buffer_teclado();
 
@@ -3172,6 +3175,9 @@
 }
 
 void DrasculaEngine::canal_p(const char *fich){
+	return;
+	// TODO
+
 	Common::File ald2, ald3;
 
 	char fich2[13];
@@ -3184,7 +3190,6 @@
 		error("no puedo abrir el archivo codificado");
 	}
 
-	// TODO
 	ald2.open(fich2, Common::File::kFileWriteMode);
 	if (!ald2.isOpen()) {
 		error("no puedo abrir el archivo destino");
@@ -3198,7 +3203,6 @@
 
 	ald2.close();
 	ald3.close();
-	// TODO
 	remove(fich);
 	rename(fich2, fich);
 }
@@ -3421,7 +3425,7 @@
 	}
 
 	if (x < 7)
-		print_abc(texto_icono,x_obj[x] - 2, y_obj[x] - 7);
+		print_abc(texto_icono, x_obj[x] - 2, y_obj[x] - 7);
 }
 
 void DrasculaEngine::barra_menu() {
@@ -3900,17 +3904,15 @@
 	setvgapalette256((byte *)dac);
 }
 
-void DrasculaEngine::WaitForNext(long TimeLen) {
-	TimeLast = clock();
-	while (clock() < (TimeLast + TimeLen)) {}
-	TimeLast = clock();
+void DrasculaEngine::WaitForNext(int FPS) {
+	_system->delayMillis(1000 / FPS);
 }
 
 float DrasculaEngine::vez() {
-	return _system->getMillis();
+	return _system->getMillis() / 20; // originaly was 1
 }
 
-void DrasculaEngine::reduce_hare_chico(int xx1,int yy1, int xx2,int yy2, int ancho,int alto, int factor, byte *dir_inicio, byte *dir_fin) {
+void DrasculaEngine::reduce_hare_chico(int xx1, int yy1, int xx2, int yy2, int ancho, int alto, int factor, byte *dir_inicio, byte *dir_fin) {
 	float suma_x, suma_y;
 	int n, m;
 	float pixel_x, pixel_y;
@@ -4079,31 +4081,34 @@
 }
 
 void DrasculaEngine::graba_partida(char nom_game[]) {
-	FILE *scu;
+	Common::OutSaveFile *out;
 	int l;
 
-	// TODO
-	if ((scu = fopen(nom_game, "w")) == NULL) {
+	if (!(out = _saveFileMan->openForSaving(nom_game))) {
 		error("no puedo abrir el archivo");
 	}
-	fprintf(scu, "%d\n", num_ejec);
-	fprintf(scu, "%s\n", datos_actuales);
-	fprintf(scu, "%d\n", hare_x);
-	fprintf(scu, "%d\n", hare_y);
-	fprintf(scu, "%d\n", sentido_hare);
+	out->writeSint32LE(num_ejec);
+	out->write(datos_actuales, 13);
+	out->writeSint32LE(hare_x);
+	out->writeSint32LE(hare_y);
+	out->writeSint32LE(sentido_hare);
 
 	for (l = 1; l < 43; l++) {
-		fprintf(scu,"%d\n", objetos_que_tengo[l]);
+		out->writeSint32LE(objetos_que_tengo[l]);
 	}
 
 	for (l = 0; l < NUM_BANDERAS; l++) {
-		fprintf(scu, "%d\n", flags[l]);
+		out->writeSint32LE(flags[l]);
 	}
 
-	fprintf(scu, "%d\n", lleva_objeto);
-	fprintf(scu, "%d\n", objeto_que_lleva);
+	out->writeSint32LE(lleva_objeto);
+	out->writeSint32LE(objeto_que_lleva);
 
-	fclose(scu);
+	out->finalize();
+	if (out->ioFailed())
+		warning("Can't write file '%s'. (Disk full?)", nom_game);
+
+	delete out;
 	canal_p(nom_game);
 }
 
@@ -4872,7 +4877,7 @@
 	byte *soundData = (byte *)malloc(soundSize);
 	sku->seek(32);
 	sku->read(soundData, soundSize);
-	_mixer->playRaw(Audio::Mixer::kPlainSoundType, &_soundHandle, soundData, soundSize - 64,
+	_mixer->playRaw(Audio::Mixer::kSFXSoundType, &_soundHandle, soundData, soundSize - 64,
 					11025, Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_UNSIGNED);
 }
 

Modified: scummvm/trunk/engines/drascula/drascula.h
===================================================================
--- scummvm/trunk/engines/drascula/drascula.h	2007-08-01 18:14:10 UTC (rev 28387)
+++ scummvm/trunk/engines/drascula/drascula.h	2007-08-01 19:31:36 UTC (rev 28388)
@@ -575,13 +575,9 @@
 	int GlobalSpeed;
 	int LastFrame;
 
-
-	long TimeLast;
-	long TimeMed;
-
 	byte *carga_pcx(byte *NamePcc);
 	void set_dac(byte *dac);
-	void WaitForNext(long TimeMed);
+	void WaitForNext(int FPS);
 	float vez();
 	void reduce_hare_chico(int, int, int, int, int, int, int, byte *, byte *);
 	char codifica(char);


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