[Scummvm-git-logs] scummvm master -> c6a9f85bb8d57655614201eda3b2db419d0f2501

dreammaster paulfgilbert at gmail.com
Sat Feb 29 01:57:53 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:
a062c44a4e ULTIMA8: Reset palette when showing menu
c6a9f85bb8 ULTIMA8: Fix style of for loops


Commit: a062c44a4e6d5dcdba0012d7524b80a42f32b27f
    https://github.com/scummvm/scummvm/commit/a062c44a4e6d5dcdba0012d7524b80a42f32b27f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-02-28T17:57:49-08:00

Commit Message:
ULTIMA8: Reset palette when showing menu

If the avatar dies while tripping on mushrooms or the menu is opened
when the palette is changed (eg, during a scripted fight with the
guards where the screen blackens) then the tombstone and menu palette
are also changed.

This resets the palette temporarily while showing the menu, and
permanently on avatar death.

Changed paths:
    engines/ultima/ultima8/graphics/palette_manager.cpp
    engines/ultima/ultima8/graphics/palette_manager.h
    engines/ultima/ultima8/gumps/menu_gump.cpp
    engines/ultima/ultima8/gumps/menu_gump.h
    engines/ultima/ultima8/world/actors/avatar_death_process.cpp


diff --git a/engines/ultima/ultima8/graphics/palette_manager.cpp b/engines/ultima/ultima8/graphics/palette_manager.cpp
index c33c390fe0..69dba48029 100644
--- a/engines/ultima/ultima8/graphics/palette_manager.cpp
+++ b/engines/ultima/ultima8/graphics/palette_manager.cpp
@@ -155,6 +155,15 @@ void PaletteManager::untransformPalette(PalIndex index) {
 	transformPalette(index, matrix);
 }
 
+bool PaletteManager::getTransformMatrix(int16 matrix[12], PalIndex index) {
+	Palette *pal = getPalette(index);
+
+	if (!pal) return false;
+
+	for (int i = 0; i < 12; i++) matrix[i] = pal->_matrix[i];
+	return true;
+}
+
 void PaletteManager::getTransformMatrix(int16 matrix[12], PalTransforms trans) {
 	switch (trans) {
 	// Normal untransformed palette
diff --git a/engines/ultima/ultima8/graphics/palette_manager.h b/engines/ultima/ultima8/graphics/palette_manager.h
index 3739809ef6..6be518807c 100644
--- a/engines/ultima/ultima8/graphics/palette_manager.h
+++ b/engines/ultima/ultima8/graphics/palette_manager.h
@@ -62,6 +62,9 @@ public:
 	//! reset the transformation matrix of a palette
 	void untransformPalette(PalIndex index);
 
+	//! Get the current TransformMatrix for the given index
+	bool getTransformMatrix(int16 matrix[12], PalIndex index);
+
 	// Get a TransformMatrix from a PalTransforms value (-4.11 fixed)
 	static void getTransformMatrix(int16 matrix[12],
 	                               PalTransforms trans);
diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index b232c28d3c..975c20a78f 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -40,6 +40,7 @@
 #include "ultima/ultima8/graphics/fonts/font.h"
 #include "ultima/ultima8/graphics/fonts/rendered_text.h"
 #include "ultima/ultima8/graphics/fonts/font_manager.h"
+#include "ultima/ultima8/graphics/palette_manager.h"
 #include "ultima/ultima8/conf/setting_manager.h"
 #include "ultima/ultima8/audio/music_process.h"
 #include "ultima/ultima8/gumps/widgets/edit_widget.h"
@@ -69,15 +70,21 @@ MenuGump::MenuGump(bool nameEntryMode_)
 	MusicProcess *musicprocess = MusicProcess::get_instance();
 	if (musicprocess) _oldMusicTrack = musicprocess->getTrack();
 	else _oldMusicTrack = 0;
+	// Save old palette transform
+	PaletteManager *palman = PaletteManager::get_instance();
+	palman->getTransformMatrix(_oldPalTransform, PaletteManager::Pal_Game);
+	palman->untransformPalette(PaletteManager::Pal_Game);
 }
 
 MenuGump::~MenuGump() {
 }
 
 void MenuGump::Close(bool no_del) {
-	// Restore old music state
+	// Restore old music state and palette
 	MusicProcess *musicprocess = MusicProcess::get_instance();
 	if (musicprocess) musicprocess->playMusic(_oldMusicTrack);
+	PaletteManager *palman = PaletteManager::get_instance();
+	palman->transformPalette(PaletteManager::Pal_Game, _oldPalTransform);
 
 	Mouse *mouse = Mouse::get_instance();
 	mouse->popMouseCursor();
diff --git a/engines/ultima/ultima8/gumps/menu_gump.h b/engines/ultima/ultima8/gumps/menu_gump.h
index 48c932626b..199458edfc 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.h
+++ b/engines/ultima/ultima8/gumps/menu_gump.h
@@ -56,6 +56,7 @@ public:
 protected:
 	bool _nameEntryMode;
 	int _oldMusicTrack;
+	int16 _oldPalTransform[12];
 
 	virtual void selectEntry(int entry);
 };
diff --git a/engines/ultima/ultima8/world/actors/avatar_death_process.cpp b/engines/ultima/ultima8/world/actors/avatar_death_process.cpp
index 7c01b60ed8..908318e0d2 100644
--- a/engines/ultima/ultima8/world/actors/avatar_death_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_death_process.cpp
@@ -29,6 +29,7 @@
 #include "ultima/ultima8/kernel/kernel.h"
 #include "ultima/ultima8/gumps/main_menu_process.h"
 #include "ultima/ultima8/gumps/gump_notify_process.h"
+#include "ultima/ultima8/graphics/palette_manager.h"
 #include "ultima/ultima8/audio/music_process.h"
 #include "ultima/ultima8/world/get_object.h"
 
@@ -63,6 +64,9 @@ void AvatarDeathProcess::run() {
 		return;
 	}
 
+	PaletteManager *palman = PaletteManager::get_instance();
+	palman->untransformPalette(PaletteManager::Pal_Game);
+
 	ReadableGump *gump = new ReadableGump(1, 27, 11,
 	                                      _TL_("HERE LIES*THE AVATAR*REST IN PEACE"));
 	gump->InitGump(0);


Commit: c6a9f85bb8d57655614201eda3b2db419d0f2501
    https://github.com/scummvm/scummvm/commit/c6a9f85bb8d57655614201eda3b2db419d0f2501
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-02-28T17:57:49-08:00

Commit Message:
ULTIMA8: Fix style of for loops

Changed paths:
    engines/ultima/ultima8/graphics/palette_manager.cpp


diff --git a/engines/ultima/ultima8/graphics/palette_manager.cpp b/engines/ultima/ultima8/graphics/palette_manager.cpp
index 69dba48029..79b850d880 100644
--- a/engines/ultima/ultima8/graphics/palette_manager.cpp
+++ b/engines/ultima/ultima8/graphics/palette_manager.cpp
@@ -71,7 +71,8 @@ void PaletteManager::resetTransforms() {
 		Palette *pal = _palettes[i];
 		if (!pal) continue;
 		pal->_transform = Transform_None;
-		for (int j = 0; j < 12; j++) pal->_matrix[j] = matrix[j];
+		for (int j = 0; j < 12; j++)
+			pal->_matrix[j] = matrix[j];
 		_renderSurface->CreateNativePalette(pal); // convert to native format
 	}
 }
@@ -140,7 +141,8 @@ void PaletteManager::transformPalette(PalIndex index, int16 matrix[12]) {
 
 	if (!pal) return;
 
-	for (int i = 0; i < 12; i++) pal->_matrix[i] = matrix[i];
+	for (int i = 0; i < 12; i++)
+		pal->_matrix[i] = matrix[i];
 	_renderSurface->CreateNativePalette(pal); // convert to native format
 }
 
@@ -160,7 +162,8 @@ bool PaletteManager::getTransformMatrix(int16 matrix[12], PalIndex index) {
 
 	if (!pal) return false;
 
-	for (int i = 0; i < 12; i++) matrix[i] = pal->_matrix[i];
+	for (int i = 0; i < 12; i++)
+		matrix[i] = pal->_matrix[i];
 	return true;
 }
 




More information about the Scummvm-git-logs mailing list