[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