[Scummvm-git-logs] scummvm master -> eff4de3ba9ec3da1563044afdcec85d8fd86d97a
mduggan
mgithub at guarana.org
Sun May 3 08:27:34 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ef13c8cf1b ULTIMA8: Clean up remorse menu gump
eff4de3ba9 ULTIMA8: Slightly nicer remorse audio process
Commit: ef13c8cf1bc7d4f7273f9a3ec2c9c247381dda20
https://github.com/scummvm/scummvm/commit/ef13c8cf1bc7d4f7273f9a3ec2c9c247381dda20
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-03T17:26:32+09:00
Commit Message:
ULTIMA8: Clean up remorse menu gump
Changed paths:
engines/ultima/ultima8/gumps/menu_gump.cpp
engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
engines/ultima/ultima8/gumps/remorse_menu_gump.h
diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index 26b11ff668..2cec13fedc 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -275,7 +275,7 @@ void MenuGump::inputName() {
if (GAME_IS_U8)
gump = new MenuGump(true);
else
- gump = new RemorseMenuGump(true);
+ gump = new RemorseMenuGump();
gump->InitGump(0);
gump->setRelativePosition(CENTER);
}
diff --git a/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp b/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
index 1df91b152a..ed63608d93 100644
--- a/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
@@ -51,16 +51,12 @@ namespace Ultima8 {
DEFINE_RUNTIME_CLASSTYPE_CODE(RemorseMenuGump, ModalGump)
-RemorseMenuGump::RemorseMenuGump(bool nameEntryMode_)
+RemorseMenuGump::RemorseMenuGump()
: ModalGump(0, 0, 640, 480, 0, FLAG_DONT_SAVE) {
- _nameEntryMode = nameEntryMode_;
Mouse *mouse = Mouse::get_instance();
mouse->pushMouseCursor();
- if (!_nameEntryMode)
- mouse->setMouseCursor(Mouse::MOUSE_HAND);
- else
- mouse->setMouseCursor(Mouse::MOUSE_NONE);
+ mouse->setMouseCursor(Mouse::MOUSE_HAND);
// Save old music state
MusicProcess *musicprocess = MusicProcess::get_instance();
@@ -179,34 +175,19 @@ void RemorseMenuGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sca
bool RemorseMenuGump::OnKeyDown(int key, int mod) {
if (Gump::OnKeyDown(key, mod)) return true;
- if (!_nameEntryMode) {
-
- if (key == Common::KEYCODE_ESCAPE) {
- // FIXME: this check should probably be in Game or GUIApp
- MainActor *av = getMainActor();
- if (av && !av->hasActorFlags(Actor::ACT_DEAD))
- Close(); // don't allow closing if dead/game over
- } else if (key >= Common::KEYCODE_1 && key <= Common::KEYCODE_9) {
- selectEntry(key - Common::KEYCODE_1 + 1);
- }
-
+ if (key == Common::KEYCODE_ESCAPE) {
+ // FIXME: this check should probably be in Game or GUIApp
+ MainActor *av = getMainActor();
+ if (av && !av->hasActorFlags(Actor::ACT_DEAD))
+ Close(); // don't allow closing if dead/game over
+ } else if (key >= Common::KEYCODE_1 && key <= Common::KEYCODE_6) {
+ selectEntry(key - Common::KEYCODE_1 + 1);
}
return true;
}
void RemorseMenuGump::ChildNotify(Gump *child, uint32 message) {
- if (child->IsOfType<EditWidget>() && message == EditWidget::EDIT_ENTER) {
- EditWidget *editwidget = p_dynamic_cast<EditWidget *>(child);
- assert(editwidget);
- Std::string name = editwidget->getText();
- if (!name.empty()) {
- MainActor *av = getMainActor();
- av->setName(name);
- Close();
- }
- }
-
if (child->IsOfType<ButtonWidget>() && message == ButtonWidget::BUTTON_CLICK) {
selectEntry(child->GetIndex());
}
@@ -219,11 +200,12 @@ void RemorseMenuGump::selectEntry(int entry) {
settingman->get("quotes", quotes);
switch (entry) {
- case 1: // Intro
+ case 1: // New Game
Game::get_instance()->playIntroMovie(true);
break;
case 2:
- case 3: // Read/Write Diary
+ case 3: // Load/Save Game
+ // FIXME: Need a different save/load gump for crusader
U8SaveGump::showLoadSaveGump(this, entry == 3);
break;
case 4: {
@@ -238,12 +220,6 @@ void RemorseMenuGump::selectEntry(int entry) {
case 6: // Quit
QuitGump::verifyQuit();
break;
- case 7: // Quotes
- if (quotes) Game::get_instance()->playQuotes();
- break;
- case 8: // End Game
- if (endgame) Game::get_instance()->playEndgameMovie(true);
- break;
default:
break;
}
diff --git a/engines/ultima/ultima8/gumps/remorse_menu_gump.h b/engines/ultima/ultima8/gumps/remorse_menu_gump.h
index 77a5c72e7c..920a18515b 100644
--- a/engines/ultima/ultima8/gumps/remorse_menu_gump.h
+++ b/engines/ultima/ultima8/gumps/remorse_menu_gump.h
@@ -35,7 +35,7 @@ class RemorseMenuGump : public ModalGump {
public:
ENABLE_RUNTIME_CLASSTYPE()
- RemorseMenuGump(bool nameEntryMode = false);
+ RemorseMenuGump();
~RemorseMenuGump() override;
// Init the gump, call after construction
@@ -50,7 +50,6 @@ public:
void ChildNotify(Gump *child, uint32 message) override;
protected:
- bool _nameEntryMode;
virtual void selectEntry(int entry);
};
Commit: eff4de3ba9ec3da1563044afdcec85d8fd86d97a
https://github.com/scummvm/scummvm/commit/eff4de3ba9ec3da1563044afdcec85d8fd86d97a
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-03T17:27:02+09:00
Commit Message:
ULTIMA8: Slightly nicer remorse audio process
Changed paths:
engines/ultima/ultima8/audio/remorse_music_process.cpp
engines/ultima/ultima8/audio/remorse_music_process.h
diff --git a/engines/ultima/ultima8/audio/remorse_music_process.cpp b/engines/ultima/ultima8/audio/remorse_music_process.cpp
index f20f1abf45..25a96d888c 100644
--- a/engines/ultima/ultima8/audio/remorse_music_process.cpp
+++ b/engines/ultima/ultima8/audio/remorse_music_process.cpp
@@ -66,6 +66,9 @@ RemorseMusicProcess::RemorseMusicProcess() : MusicProcess(), _currentTrack(0), _
RemorseMusicProcess::~RemorseMusicProcess() {
if (_playingStream) {
+ Audio::Mixer *mixer = Ultima8Engine::get_instance()->_mixer;
+ assert(mixer);
+ mixer->stopHandle(_soundHandle);
delete _playingStream;
}
}
@@ -97,6 +100,7 @@ void RemorseMusicProcess::saveTrackState() {
void RemorseMusicProcess::restoreTrackState() {
_currentTrack = _savedTrack;
+ _savedTrack = 0;
playMusic_internal(_currentTrack);
}
@@ -106,15 +110,17 @@ void RemorseMusicProcess::playMusic_internal(int track) {
return;
}
- if (track == _currentTrack)
+ if (track == _currentTrack && _playingStream &&
+ !_playingStream->endOfStream())
+ // Already playing what we want.
return;
Audio::Mixer *mixer = Ultima8Engine::get_instance()->_mixer;
assert(mixer);
-
mixer->stopHandle(_soundHandle);
_soundHandle = Audio::SoundHandle();
- delete _playingStream;
+ if (_playingStream)
+ delete _playingStream;
if (track > 0) {
// TODO: It's a bit ugly having this here. Should be in GameData.
@@ -142,7 +148,7 @@ void RemorseMusicProcess::run() {
return;
}
// hit end of stream, play it again.
- // TODO: Probably this doesn't perfectly loop, should do something a bit nicer..
+ // TODO: This doesn't loop to the correct spot, should do something a bit nicer..
playMusic_internal(_currentTrack);
}
diff --git a/engines/ultima/ultima8/audio/remorse_music_process.h b/engines/ultima/ultima8/audio/remorse_music_process.h
index 1394f3b32c..4a7662c5bd 100644
--- a/engines/ultima/ultima8/audio/remorse_music_process.h
+++ b/engines/ultima/ultima8/audio/remorse_music_process.h
@@ -65,20 +65,20 @@ public:
ENABLE_RUNTIME_CLASSTYPE()
//! Play some background music. Does not change the current track if combat music is active. If another track is currently queued, just queues this track for play.
- void playMusic(int track);
+ void playMusic(int track) override;
//! Play some combat music - the last played track will be remembered
- void playCombatMusic(int track);
+ void playCombatMusic(int track) override;
//! Queue a track to start once the current one finishes
- void queueMusic(int track);
+ void queueMusic(int track) override;
//! Clear any queued track (does not affect currently playing track)
- void unqueueMusic();
+ void unqueueMusic() override;
//! Restore the last requested non-combat track (eg, at the end of combat)
- void restoreMusic();
+ void restoreMusic() override;
//! Save the current track state - used when the menu is opened
- void saveTrackState();
+ void saveTrackState() override;
//! Bring back the track state from before it was put on hold
- void restoreTrackState();
+ void restoreTrackState() override;
INTRINSIC(I_playMusic);
INTRINSIC(I_musicStop);
More information about the Scummvm-git-logs
mailing list