[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