[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