[Scummvm-git-logs] scummvm master -> 6132a66adb5c5fbf2be958c7ae69cb479bed79d9
dreammaster
noreply at scummvm.org
Tue Feb 14 05:21:37 UTC 2023
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8e829a1faf MM: MM1: Switch highlighted char in character info dialog
03965ec13b MM: MM1: Set appropriate portraits for default party
dece027be7 MM: MM1: Reload face sprites after using sex reversal pool
6132a66adb MM: MM1: Include character sex in Char Info dialog
Commit: 8e829a1faf07bb1b6dabf2f668a7a5220ba16e2f
https://github.com/scummvm/scummvm/commit/8e829a1faf07bb1b6dabf2f668a7a5220ba16e2f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-13T20:41:32-08:00
Commit Message:
MM: MM1: Switch highlighted char in character info dialog
Changed paths:
engines/mm/mm1/views_enh/character_info.cpp
engines/mm/mm1/views_enh/game.cpp
engines/mm/mm1/views_enh/game_party.cpp
diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index 70391fad70c..e00afba8c79 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -82,8 +82,8 @@ CharacterInfo::CharacterInfo() :
bool CharacterInfo::msgFocus(const FocusMessage &msg) {
_viewIcon.load("view.icn");
- MetaEngine::setKeybindingMode(
- KeybindingMode::KBMODE_PARTY_MENUS);
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_PARTY_MENUS);
+ g_events->findView("GameParty")->draw();
_cursorCell = 0;
showCursor(true);
@@ -151,6 +151,7 @@ bool CharacterInfo::msgAction(const ActionMessage &msg) {
msg._action <= KEYBIND_VIEW_PARTY6) {
g_globals->_currCharacter = &g_globals->_party[
msg._action - KEYBIND_VIEW_PARTY1];
+ g_events->findView("GameParty")->draw();
redraw();
return true;
}
diff --git a/engines/mm/mm1/views_enh/game.cpp b/engines/mm/mm1/views_enh/game.cpp
index 241edaf137b..09a23b9fcae 100644
--- a/engines/mm/mm1/views_enh/game.cpp
+++ b/engines/mm/mm1/views_enh/game.cpp
@@ -45,6 +45,8 @@ Game::Game() : TextView("Game"),
bool Game::msgFocus(const FocusMessage &msg) {
MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_NORMAL);
+ g_globals->_currCharacter = nullptr;
+
return TextView::msgFocus(msg);
}
diff --git a/engines/mm/mm1/views_enh/game_party.cpp b/engines/mm/mm1/views_enh/game_party.cpp
index 913bc8b32da..64e29d44227 100644
--- a/engines/mm/mm1/views_enh/game_party.cpp
+++ b/engines/mm/mm1/views_enh/game_party.cpp
@@ -90,6 +90,10 @@ void GameParty::draw() {
if (g_globals->_currCharacter == &c)
g_globals->_globalSprites.draw(&s, 8, Common::Point(CHAR_FACES_X[idx] - 1, 5));
}
+
+ // Sprite drawing doesn't automatically mark the drawn areas,
+ // so manually flag the entire area as dirty
+ s.markAllDirty();
}
} // namespace ViewsEnh
Commit: 03965ec13bdf842d06b1e63a4c4f1d967e7acd69
https://github.com/scummvm/scummvm/commit/03965ec13bdf842d06b1e63a4c4f1d967e7acd69
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-13T21:14:06-08:00
Commit Message:
MM: MM1: Set appropriate portraits for default party
Changed paths:
engines/mm/mm1/data/character.cpp
engines/mm/mm1/data/character.h
engines/mm/mm1/data/roster.cpp
engines/mm/mm1/data/roster.h
diff --git a/engines/mm/mm1/data/character.cpp b/engines/mm/mm1/data/character.cpp
index d867789e69c..76d49db4819 100644
--- a/engines/mm/mm1/data/character.cpp
+++ b/engines/mm/mm1/data/character.cpp
@@ -159,7 +159,7 @@ Character::Character() : PrimaryAttributes() {
Common::fill(&_flags[0], &_flags[14], 0);
}
-void Character::synchronize(Common::Serializer &s) {
+void Character::synchronize(Common::Serializer &s, int portraitNum) {
char name[16];
if (s.isSaving()) {
// Save the name in uppercase to match original
@@ -228,9 +228,17 @@ void Character::synchronize(Common::Serializer &s) {
s.syncAsByte(_alignmentCtr);
s.syncBytes(_flags, 14);
s.syncAsByte(_portrait);
+ if (s.isLoading() && portraitNum != -1)
+ _portrait = portraitNum;
- if (s.isLoading() && g_engine->isEnhanced()) {
- Common::String cname = Common::String::format("char%02d.fac", _portrait + 1);
+ if (s.isLoading() && g_engine->isEnhanced())
+ loadFaceSprites();
+}
+
+void Character::loadFaceSprites() {
+ if (_portrait != 0xff) {
+ Common::String cname = Common::String::format("char%02d.fac",
+ _portrait * 2 + (_sex == MALE ? 0 : 1) + 1);
_faceSprites.load(cname);
}
}
diff --git a/engines/mm/mm1/data/character.h b/engines/mm/mm1/data/character.h
index 095c6309ab8..a994118cfbb 100644
--- a/engines/mm/mm1/data/character.h
+++ b/engines/mm/mm1/data/character.h
@@ -471,8 +471,10 @@ struct Character : public PrimaryAttributes {
/**
* Handles save/loading a character
+ * @param portraitNum Override for portrait to use for
+ * a character being loaded from the game defaults
*/
- void synchronize(Common::Serializer &s);
+ void synchronize(Common::Serializer &s, int portraitNum = -1);
/**
* Equality test
@@ -552,6 +554,11 @@ struct Character : public PrimaryAttributes {
*/
size_t getPerformanceTotal() const;
+ /**
+ * Loads the face sprites for the character
+ */
+ void loadFaceSprites();
+
/**
* Returns the color to use in enhanced mode to
* represent the color of a character attribute
diff --git a/engines/mm/mm1/data/roster.cpp b/engines/mm/mm1/data/roster.cpp
index 10d1ce4fe02..fac87f97193 100644
--- a/engines/mm/mm1/data/roster.cpp
+++ b/engines/mm/mm1/data/roster.cpp
@@ -29,9 +29,13 @@
namespace MM {
namespace MM1 {
-void Roster::synchronize(Common::Serializer &s) {
+static byte DEFAULT_PORTRAITS[6] = { 0, 11, 9, 7, 4, 3 };
+
+void Roster::synchronize(Common::Serializer &s, bool isLoadingDefaults) {
for (int i = 0; i < ROSTER_COUNT; ++i)
- _items[i].synchronize(s);
+ _items[i].synchronize(s, s.isLoading() && isLoadingDefaults ?
+ (i < 6 ? DEFAULT_PORTRAITS[i] : 0xff) : -1
+ );
for (int i = 0; i < ROSTER_COUNT; ++i)
s.syncAsByte(_towns[i]);
@@ -43,7 +47,7 @@ void Roster::load() {
if (sf) {
Common::Serializer s(sf, nullptr);
- synchronize(s);
+ synchronize(s, false);
while (!sf->eos()) {
uint32 chunk = sf->readUint32BE();
@@ -58,7 +62,7 @@ void Roster::load() {
error("Could not open roster.dta");
Common::Serializer s(&f, nullptr);
- synchronize(s);
+ synchronize(s, true);
}
}
@@ -105,7 +109,7 @@ void Roster::save() {
Common::OutSaveFile *sf = g_system->getSavefileManager()->openForSaving(
rosterSaveName());
Common::Serializer s(nullptr, sf);
- synchronize(s);
+ synchronize(s, false);
// Get automap data to save
Common::MemoryWriteStreamDynamic mapData(DisposeAfterUse::YES);
diff --git a/engines/mm/mm1/data/roster.h b/engines/mm/mm1/data/roster.h
index 4c33ad9d67f..88933a25686 100644
--- a/engines/mm/mm1/data/roster.h
+++ b/engines/mm/mm1/data/roster.h
@@ -46,8 +46,10 @@ public:
/**
* Synchronizes the contents of the roster
+ * @param isLoadingDefaults True if we're loading the
+ * default roster of the game
*/
- void synchronize(Common::Serializer &s);
+ void synchronize(Common::Serializer &s, bool isLoadingDefaults);
/**
* Load the roster
Commit: dece027be7e88b8adaeb518c525ce86c29a4c251
https://github.com/scummvm/scummvm/commit/dece027be7e88b8adaeb518c525ce86c29a4c251
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-13T21:17:01-08:00
Commit Message:
MM: MM1: Reload face sprites after using sex reversal pool
Changed paths:
engines/mm/mm1/data/character.cpp
engines/mm/mm1/maps/map07.cpp
diff --git a/engines/mm/mm1/data/character.cpp b/engines/mm/mm1/data/character.cpp
index 76d49db4819..263d8780353 100644
--- a/engines/mm/mm1/data/character.cpp
+++ b/engines/mm/mm1/data/character.cpp
@@ -231,12 +231,12 @@ void Character::synchronize(Common::Serializer &s, int portraitNum) {
if (s.isLoading() && portraitNum != -1)
_portrait = portraitNum;
- if (s.isLoading() && g_engine->isEnhanced())
+ if (s.isLoading())
loadFaceSprites();
}
void Character::loadFaceSprites() {
- if (_portrait != 0xff) {
+ if (_portrait != 0xff && g_engine->isEnhanced()) {
Common::String cname = Common::String::format("char%02d.fac",
_portrait * 2 + (_sex == MALE ? 0 : 1) + 1);
_faceSprites.load(cname);
diff --git a/engines/mm/mm1/maps/map07.cpp b/engines/mm/mm1/maps/map07.cpp
index 55b4b33f4ef..5dd746290f0 100644
--- a/engines/mm/mm1/maps/map07.cpp
+++ b/engines/mm/mm1/maps/map07.cpp
@@ -161,6 +161,7 @@ void Map07::special13() {
for (uint i = 0; i < g_globals->_party.size(); ++i) {
Character &c = g_globals->_party[i];
c._sex = (c._sex == MALE) ? FEMALE : MALE;
+ c.loadFaceSprites();
}
g_events->send(SoundMessage(0, 1, STRING["maps.map07.reversal"]));
Commit: 6132a66adb5c5fbf2be958c7ae69cb479bed79d9
https://github.com/scummvm/scummvm/commit/6132a66adb5c5fbf2be958c7ae69cb479bed79d9
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-02-13T21:21:23-08:00
Commit Message:
MM: MM1: Include character sex in Char Info dialog
Changed paths:
engines/mm/mm1/views_enh/character_info.cpp
diff --git a/engines/mm/mm1/views_enh/character_info.cpp b/engines/mm/mm1/views_enh/character_info.cpp
index e00afba8c79..4da2e5313c0 100644
--- a/engines/mm/mm1/views_enh/character_info.cpp
+++ b/engines/mm/mm1/views_enh/character_info.cpp
@@ -184,11 +184,12 @@ void CharacterInfo::draw() {
void CharacterInfo::drawTitle() {
const Character &c = *g_globals->_currCharacter;
Common::String msg = Common::String::format(
- "%s : %s %s %s",
+ "%s : %s %s %s %s",
camelCase(c._name).c_str(),
- capitalize(STRING[Common::String::format("stats.alignments.%d", (int)c._alignment)]).c_str(),
- capitalize(STRING[Common::String::format("stats.races.%d", (int)c._race)]).c_str(),
- capitalize(STRING[Common::String::format("stats.classes.%d", (int)c._class)]).c_str()
+ STRING[Common::String::format("stats.sex.%d", (int)c._sex)].c_str(),
+ STRING[Common::String::format("stats.alignments.%d", (int)c._alignment)].c_str(),
+ STRING[Common::String::format("stats.races.%d", (int)c._race)].c_str(),
+ STRING[Common::String::format("stats.classes.%d", (int)c._class)].c_str()
);
writeString(0, 0, msg);
More information about the Scummvm-git-logs
mailing list