[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