[Scummvm-git-logs] scummvm master -> 4a72c0398b03e9d71a76b569ccd73cb98bce653b

yuv422 noreply at scummvm.org
Mon Oct 28 07:02:53 UTC 2024


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:
4a72c0398b DARKSEED: Add death music. Add runDrekethSequence().


Commit: 4a72c0398b03e9d71a76b569ccd73cb98bce653b
    https://github.com/scummvm/scummvm/commit/4a72c0398b03e9d71a76b569ccd73cb98bce653b
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2024-10-28T18:02:44+11:00

Commit Message:
DARKSEED: Add death music. Add runDrekethSequence().

Changed paths:
    engines/darkseed/animation.cpp
    engines/darkseed/animation.h
    engines/darkseed/darkseed.cpp
    engines/darkseed/darkseed.h
    engines/darkseed/sound.cpp
    engines/darkseed/sound.h
    engines/darkseed/usecode.cpp


diff --git a/engines/darkseed/animation.cpp b/engines/darkseed/animation.cpp
index 7bc6874ab04..b8bd44c541b 100644
--- a/engines/darkseed/animation.cpp
+++ b/engines/darkseed/animation.cpp
@@ -55,11 +55,10 @@ void Animation::setupOtherNspAnimation(int nspAnimIdx, int animId) {
 		_player->_position.y = 94;
 		break;
 	case 3:
-		// TODO
-		//		if ((_SoundDevice != '\x01') && ((char)g_engine->_currentDay == '\x03')) {
-		//			LoadModeSong(7);
-		//			PlaySound(0,6,-1);
-		//		}
+		if (g_engine->_currentDay == 3) {
+			g_engine->_sound->playMusic(MusicId::kDth);
+			g_engine->playSound(0,6,-1);
+		}
 		_scaleSequence = true;
 		break;
 	case 4:
@@ -666,7 +665,7 @@ void Animation::updateAnimation() {
 				}
 			}
 		} else {
-			//			LoadModeSong(7); TODO
+			g_engine->_sound->playMusic(MusicId::kDth);
 			g_engine->playSound(0, 6, -1);
 			stuffPlayer();
 		}
@@ -1118,6 +1117,88 @@ void Animation::stuffPlayer() {
 	g_engine->_sprites.clearSpriteDrawList();
 	g_engine->_cursor.showCursor(true);
 	g_engine->_cutscene.play('Z');
+	g_engine->_sound->stopMusic();
+}
+
+void Animation::runDrekethSequence() {
+	bool updateCounter = false;
+	int counter = 0;
+	if (!g_engine->isCdVersion()) {
+		g_engine->_sound->playMusic(MusicId::kDth);
+	}
+
+	g_engine->_console->printTosText(2);
+	g_engine->_console->draw();
+	while (counter < 6) {
+		g_engine->_sprites.clearSpriteDrawList();
+
+		const Sprite &drekethBaseSprite = g_engine->_room->_locationSprites.getSpriteAt(15);
+		const Sprite &openingAnimation = g_engine->_room->_locationSprites.getSpriteAt(counter);
+		g_engine->_sprites.addSpriteToDrawList(346, 133, &drekethBaseSprite, 255, drekethBaseSprite._width, drekethBaseSprite._height, false);
+		g_engine->_sprites.addSpriteToDrawList(395, 133, &openingAnimation, 255, openingAnimation._width, openingAnimation._height, false);
+		adddrekbutt();
+
+		g_engine->_sprites.drawSprites();
+
+		g_engine->_screen->makeAllDirty();
+		g_engine->_screen->update();
+
+		updateCounter = !updateCounter;
+		if (updateCounter) {
+			counter++;
+		}
+		g_engine->waitxticks(1);
+	}
+
+	while (counter < 9) {
+		g_engine->_sprites.clearSpriteDrawList();
+
+		const Sprite &grabMikeSprite = g_engine->_room->_locationSprites.getSpriteAt(counter);
+		g_engine->_sprites.addSpriteToDrawList(346, 133, &grabMikeSprite, 255, grabMikeSprite._width, grabMikeSprite._height, false);
+		adddrekbutt();
+
+		g_engine->_sprites.drawSprites();
+
+		g_engine->_screen->makeAllDirty();
+		g_engine->_screen->update();
+
+		updateCounter = !updateCounter;
+		if (updateCounter) {
+			counter++;
+			if (counter == 7) {
+				g_engine->playSound(19, 5, -1);
+			}
+		}
+		g_engine->waitxticks(1);
+	}
+
+	while (counter < 13) {
+		g_engine->_sprites.clearSpriteDrawList();
+
+		const Sprite &drekethBaseSprite = g_engine->_room->_locationSprites.getSpriteAt(14);
+		const Sprite &closingAnimation = g_engine->_room->_locationSprites.getSpriteAt(counter);
+		g_engine->_sprites.addSpriteToDrawList(346, 175, &drekethBaseSprite, 255, drekethBaseSprite._width, drekethBaseSprite._height, false);
+		g_engine->_sprites.addSpriteToDrawList(346, 133, &closingAnimation, 255, closingAnimation._width, closingAnimation._height, false);
+		adddrekbutt();
+
+		g_engine->_sprites.drawSprites();
+
+		g_engine->_screen->makeAllDirty();
+		g_engine->_screen->update();
+
+		updateCounter = !updateCounter;
+		if (updateCounter) {
+			counter++;
+		}
+		g_engine->waitxticks(1);
+	}
+	stuffPlayer();
+}
+
+void Animation::adddrekbutt() {
+	const Sprite &drekButt = g_engine->_room->_locationSprites.getSpriteAt(16);
+	g_engine->_sprites.addSpriteToDrawList(466, 133, &drekButt, 255, drekButt._width, drekButt._height, false);
+
 }
 
 static constexpr uint8 libList[100] = {
diff --git a/engines/darkseed/animation.h b/engines/darkseed/animation.h
index aed1f4a56ad..e2a8bd165d6 100644
--- a/engines/darkseed/animation.h
+++ b/engines/darkseed/animation.h
@@ -42,6 +42,9 @@ public:
 
 	int _nsp_sprite_scaling_y_position = 0;
 
+public:
+	explicit Animation(Player *player, Objects &objectVar) : _player(player), _objectVar(objectVar) {}
+
 	void updateAnimation();
 
 	void advanceAnimationFrame(int nspAminIdx);
@@ -50,11 +53,12 @@ public:
 	void sargoAnim();
 	void keeperAdmin();
 	void stuffPlayer();
+	void runDrekethSequence();
 	void libAnim(bool pickingUpReservedBook);
 
-public:
-	explicit Animation(Player *player, Objects &objectVar) : _player(player), _objectVar(objectVar) {}
 	void setupOtherNspAnimation(int nspAnimIdx, int animId);
+private:
+	void adddrekbutt();
 };
 
 } // End of namespace Darkseed
diff --git a/engines/darkseed/darkseed.cpp b/engines/darkseed/darkseed.cpp
index 263c41cc88f..34704c1df10 100644
--- a/engines/darkseed/darkseed.cpp
+++ b/engines/darkseed/darkseed.cpp
@@ -190,7 +190,7 @@ void DarkseedEngine::gameLoop() {
 						playSound(21, 5, -1);
 					}
 					if (_objectVar[56] == 6) {
-//						LoadModeSong(7);
+						_sound->playMusic(MusicId::kDth);
 						playSound(0, 6, -1);
 						_animation->stuffPlayer();
 					}
@@ -2395,7 +2395,7 @@ void DarkseedEngine::runObjects() {
 	}
 	if (((_objectVar.getObjectRunningCode(58) != 0) && (_objectVar[21] == 0)) && (_room->_roomNumber == 55)) {
 		if (_player->_position.x == 369) {
-			runDrekethSequence();
+			_animation->runDrekethSequence();
 		}
 		if (_player->_heroMoving && _player->_walkTarget.x > 309) {
 			_player->_walkTarget = {369, 219};
@@ -2479,10 +2479,6 @@ void DarkseedEngine::movePlayerToDelbert() {
 	}
 }
 
-void DarkseedEngine::runDrekethSequence() {
-	error("implement runDrekethSequence()"); // TODO
-}
-
 void DarkseedEngine::delbertThrowStick(int16 spriteNum) {
 	if (_animation->_frameAdvanced && spriteNum == 8) {
 		Common::Point stickPos = {265, 150};
diff --git a/engines/darkseed/darkseed.h b/engines/darkseed/darkseed.h
index 4e191547ece..b62f0493e5f 100644
--- a/engines/darkseed/darkseed.h
+++ b/engines/darkseed/darkseed.h
@@ -250,7 +250,6 @@ private:
 	void closeShops();
 	void initDelbertAtSide();
 	void movePlayerToDelbert();
-	void runDrekethSequence();
 	void delbertThrowStick(int16 spriteNum);
 	void leavePackage();
 };
diff --git a/engines/darkseed/sound.cpp b/engines/darkseed/sound.cpp
index 2008193ad23..ccb44b89653 100644
--- a/engines/darkseed/sound.cpp
+++ b/engines/darkseed/sound.cpp
@@ -171,6 +171,11 @@ void Sound::stopMusic() {
 	_musicPlayer->stop();
 }
 
+void Sound::killAllSound() {
+	stopMusic();
+}
+
+
 void Sound::syncSoundSettings() {
 	_musicPlayer->syncSoundSettings();
 }
diff --git a/engines/darkseed/sound.h b/engines/darkseed/sound.h
index e90662e9854..75237d85923 100644
--- a/engines/darkseed/sound.h
+++ b/engines/darkseed/sound.h
@@ -81,6 +81,7 @@ public:
 	void playMusic(Common::String const &filename, bool loop = false);
 	void stopMusic();
 	void syncSoundSettings();
+	void killAllSound();
 };
 
 } // namespace Darkseed
diff --git a/engines/darkseed/usecode.cpp b/engines/darkseed/usecode.cpp
index 6cc0071f203..037b1860ca1 100644
--- a/engines/darkseed/usecode.cpp
+++ b/engines/darkseed/usecode.cpp
@@ -513,13 +513,13 @@ void Darkseed::UseCode::useCode(int objNum) {
 				if (((_objectVar[49] == 0) || (1 < _objectVar[62])) || (g_engine->_currentDay != 2)) {
 					if (((_objectVar[49] == 0) || (1 < _objectVar[62])) || (g_engine->_currentDay != 3)) {
 						if (_objectVar[62] < 101) {
-							//							LoadModeSong(9);
+							g_engine->_sound->playMusic(MusicId::kRadio);
 							g_engine->playSound(0, 6, -1);
 							_objectVar[62] = 101;
 							_console->addTextLine("You turn on the music.");
 						} else if (_objectVar[62] == 101) {
-							//							KillAllSound();
-							//							TerminateRoomSong();
+							g_engine->_sound->killAllSound();
+							g_engine->_sound->stopMusic();
 							_objectVar[62] = 100;
 							_console->addTextLine("You turn off the music.");
 						}




More information about the Scummvm-git-logs mailing list