[Scummvm-git-logs] scummvm master -> 46ba0500cebf4ed6334d43b6b48b2079f06d05d0

mduggan mgithub at guarana.org
Mon May 25 07:28:33 UTC 2020


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a7d3ffe629 ULTIMA8: Alter process class to make kernel responsible for writing the name on save as it must be responsible for readi
0471207c95 ULTIMA8: Make saveData method public on remaining process classes
1781f5e10d ULTIMA8: Make saveData method public on object classes
9dbc637489 ULTIMA8: make saveData public on Gump class
ac67b2195d ULTIMA8: Alter object class to make object manager responsible for writing the name on save as it must be responsible fo
20e95ab50b ULTIMA8: log error and skip save of process or object that cannot be loaded.
f6002eb3ee ULTIMA8: remove uses of strlen in object / process classname save
46ba0500ce ULTIMA8: Change saving of unregisistered classname to an error


Commit: a7d3ffe6297eb5033c20170ec30737d4852c7992
    https://github.com/scummvm/scummvm/commit/a7d3ffe6297eb5033c20170ec30737d4852c7992
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: Alter process class to make kernel responsible for writing the name on save as it must be responsible for reading the name on load.

Changed paths:
    engines/ultima/ultima8/audio/audio_process.h
    engines/ultima/ultima8/games/start_crusader_process.h
    engines/ultima/ultima8/games/start_u8_process.h
    engines/ultima/ultima8/graphics/inverter_process.h
    engines/ultima/ultima8/graphics/palette_fader_process.h
    engines/ultima/ultima8/gumps/gump_notify_process.h
    engines/ultima/ultima8/gumps/main_menu_process.h
    engines/ultima/ultima8/kernel/delay_process.h
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/process.cpp
    engines/ultima/ultima8/kernel/process.h
    engines/ultima/ultima8/usecode/uc_process.h
    engines/ultima/ultima8/world/actors/actor_anim_process.h
    engines/ultima/ultima8/world/actors/ambush_process.h
    engines/ultima/ultima8/world/actors/avatar_death_process.h
    engines/ultima/ultima8/world/actors/avatar_mover_process.h
    engines/ultima/ultima8/world/actors/clear_feign_death_process.h
    engines/ultima/ultima8/world/actors/combat_process.h
    engines/ultima/ultima8/world/actors/grant_peace_process.h
    engines/ultima/ultima8/world/actors/heal_process.h
    engines/ultima/ultima8/world/actors/loiter_process.h
    engines/ultima/ultima8/world/actors/pathfinder_process.h
    engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
    engines/ultima/ultima8/world/actors/resurrection_process.h
    engines/ultima/ultima8/world/actors/scheduler_process.h
    engines/ultima/ultima8/world/actors/teleport_to_egg_process.h
    engines/ultima/ultima8/world/camera_process.h
    engines/ultima/ultima8/world/create_item_process.h
    engines/ultima/ultima8/world/destroy_item_process.h
    engines/ultima/ultima8/world/egg_hatcher_process.h
    engines/ultima/ultima8/world/fireball_process.h
    engines/ultima/ultima8/world/gravity_process.h
    engines/ultima/ultima8/world/split_item_process.h
    engines/ultima/ultima8/world/sprite_process.h


diff --git a/engines/ultima/ultima8/audio/audio_process.h b/engines/ultima/ultima8/audio/audio_process.h
index bf19e482a0..4641c80e20 100644
--- a/engines/ultima/ultima8/audio/audio_process.h
+++ b/engines/ultima/ultima8/audio/audio_process.h
@@ -120,9 +120,9 @@ public:
 	void stopAllExceptSpeech();
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 private:
-	void saveData(Common::WriteStream *ws) override;
 	uint32 _paused;
 
 	//! play the next speech sample for the text in this SampleInfo
diff --git a/engines/ultima/ultima8/games/start_crusader_process.h b/engines/ultima/ultima8/games/start_crusader_process.h
index da958a27c7..42b13c9b69 100644
--- a/engines/ultima/ultima8/games/start_crusader_process.h
+++ b/engines/ultima/ultima8/games/start_crusader_process.h
@@ -44,7 +44,6 @@ protected:
 	bool _skipStart;
 	int _saveSlot;
 
-	void saveData(Common::WriteStream *ws) override;
 public:
 	StartCrusaderProcess(int saveSlot = -1);
 
@@ -54,6 +53,7 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/games/start_u8_process.h b/engines/ultima/ultima8/games/start_u8_process.h
index 8a863f329a..b629ade995 100644
--- a/engines/ultima/ultima8/games/start_u8_process.h
+++ b/engines/ultima/ultima8/games/start_u8_process.h
@@ -37,7 +37,6 @@ protected:
 	bool _skipStart;
 	int _saveSlot;
 
-	void saveData(Common::WriteStream *ws) override;
 public:
 	StartU8Process(int saveSlot = -1);
 
@@ -47,6 +46,7 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/graphics/inverter_process.h b/engines/ultima/ultima8/graphics/inverter_process.h
index 43ff4772fb..4ca226fe66 100644
--- a/engines/ultima/ultima8/graphics/inverter_process.h
+++ b/engines/ultima/ultima8/graphics/inverter_process.h
@@ -50,9 +50,9 @@ public:
 	INTRINSIC(I_invertScreen);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	static InverterProcess *_inverter;
 	unsigned int _targetState;
 };
diff --git a/engines/ultima/ultima8/graphics/palette_fader_process.h b/engines/ultima/ultima8/graphics/palette_fader_process.h
index 098d3905f7..05855db645 100644
--- a/engines/ultima/ultima8/graphics/palette_fader_process.h
+++ b/engines/ultima/ultima8/graphics/palette_fader_process.h
@@ -58,7 +58,6 @@ public:
 	INTRINSIC(I_lightningBolt);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/gump_notify_process.h b/engines/ultima/ultima8/gumps/gump_notify_process.h
index 9cfa703185..4d566998b0 100644
--- a/engines/ultima/ultima8/gumps/gump_notify_process.h
+++ b/engines/ultima/ultima8/gumps/gump_notify_process.h
@@ -55,7 +55,6 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/main_menu_process.h b/engines/ultima/ultima8/gumps/main_menu_process.h
index 3add7e6cb4..1033e388ad 100644
--- a/engines/ultima/ultima8/gumps/main_menu_process.h
+++ b/engines/ultima/ultima8/gumps/main_menu_process.h
@@ -41,9 +41,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	bool _init;
 };
 
diff --git a/engines/ultima/ultima8/kernel/delay_process.h b/engines/ultima/ultima8/kernel/delay_process.h
index b232846616..eead897303 100644
--- a/engines/ultima/ultima8/kernel/delay_process.h
+++ b/engines/ultima/ultima8/kernel/delay_process.h
@@ -43,9 +43,9 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int _count;
 };
 
diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 401080ea2a..9031ec4897 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -324,7 +324,12 @@ void Kernel::save(Common::WriteStream *ws) {
 	_pIDs->save(ws);
 	ws->writeUint32LE(_processes.size());
 	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		(*it)->save(ws);
+		const char *cname = (*it)->GetClassType()._className; // virtual
+		uint16 clen = strlen(cname);
+
+		ws->writeUint16LE(clen);
+		ws->write(cname, clen);
+		(*it)->saveData(ws);
 	}
 }
 
diff --git a/engines/ultima/ultima8/kernel/process.cpp b/engines/ultima/ultima8/kernel/process.cpp
index 926c67a4e3..c66d56ba34 100644
--- a/engines/ultima/ultima8/kernel/process.cpp
+++ b/engines/ultima/ultima8/kernel/process.cpp
@@ -117,19 +117,6 @@ void Process::dumpInfo() const {
 	g_debugger->debugPrintf("%s\n", info.c_str());
 }
 
-void Process::save(Common::WriteStream *ws) {
-	writeProcessHeader(ws);
-	saveData(ws); // virtual
-}
-
-void Process::writeProcessHeader(Common::WriteStream *ws) {
-	const char *cname = GetClassType()._className; // virtual
-	uint16 clen = strlen(cname);
-
-	ws->writeUint16LE(clen);
-	ws->write(cname, clen);
-}
-
 void Process::saveData(Common::WriteStream *ws) {
 	ws->writeUint16LE(_pid);
 	ws->writeUint32LE(_flags);
diff --git a/engines/ultima/ultima8/kernel/process.h b/engines/ultima/ultima8/kernel/process.h
index b77215b8c6..80a47a09f4 100644
--- a/engines/ultima/ultima8/kernel/process.h
+++ b/engines/ultima/ultima8/kernel/process.h
@@ -109,18 +109,13 @@ public:
 	//! dump some info about this process to pout
 	virtual void dumpInfo() const;
 
-	//! save this process
-	void save(Common::WriteStream *ods);
-
 	//! load Process data
 	bool loadData(Common::ReadStream *rs, uint32 version);
 
-protected:
-	//! save the Process data
+	//! save Process data
 	virtual void saveData(Common::WriteStream *ws);
 
-	void writeProcessHeader(Common::WriteStream *ods);
-
+protected:
 	//! process id
 	ProcId _pid;
 
diff --git a/engines/ultima/ultima8/usecode/uc_process.h b/engines/ultima/ultima8/usecode/uc_process.h
index 16b4a24fb9..f95893f463 100644
--- a/engines/ultima/ultima8/usecode/uc_process.h
+++ b/engines/ultima/ultima8/usecode/uc_process.h
@@ -58,9 +58,9 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	void load(uint16 classid_, uint16 offset_, uint32 this_ptr = 0,
 	          int thissize = 0, const uint8 *args = 0, int argsize = 0);
 	void call(uint16 classid_, uint16 offset_);
diff --git a/engines/ultima/ultima8/world/actors/actor_anim_process.h b/engines/ultima/ultima8/world/actors/actor_anim_process.h
index 8e89141c15..aadd056cf1 100644
--- a/engines/ultima/ultima8/world/actors/actor_anim_process.h
+++ b/engines/ultima/ultima8/world/actors/actor_anim_process.h
@@ -57,9 +57,9 @@ public:
 	}
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	virtual bool init();
 
 	//! perform special action for an animation
diff --git a/engines/ultima/ultima8/world/actors/ambush_process.h b/engines/ultima/ultima8/world/actors/ambush_process.h
index a9daf72893..77ee841d0e 100644
--- a/engines/ultima/ultima8/world/actors/ambush_process.h
+++ b/engines/ultima/ultima8/world/actors/ambush_process.h
@@ -41,9 +41,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	uint32 _delayCount;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/avatar_death_process.h b/engines/ultima/ultima8/world/actors/avatar_death_process.h
index 8103e2b7d6..919d61f8d3 100644
--- a/engines/ultima/ultima8/world/actors/avatar_death_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_death_process.h
@@ -40,7 +40,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.h b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
index a3430d3be7..d687e819f1 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
@@ -48,6 +48,7 @@ public:
 	}
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	void setFakeBothButtonClick() {
 		_fakeBothButtonClick = true;
@@ -59,8 +60,6 @@ public:
 	void tryMoveBack(bool b);
 
 private:
-	void saveData(Common::WriteStream *ws) override;
-
 	void handleHangingMode();
 	void handleCombatMode();
 	void handleNormalMode();
diff --git a/engines/ultima/ultima8/world/actors/clear_feign_death_process.h b/engines/ultima/ultima8/world/actors/clear_feign_death_process.h
index 22e8f40240..e039d67181 100644
--- a/engines/ultima/ultima8/world/actors/clear_feign_death_process.h
+++ b/engines/ultima/ultima8/world/actors/clear_feign_death_process.h
@@ -41,7 +41,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/combat_process.h b/engines/ultima/ultima8/world/actors/combat_process.h
index 8af11b9f9f..ff944c2786 100644
--- a/engines/ultima/ultima8/world/actors/combat_process.h
+++ b/engines/ultima/ultima8/world/actors/combat_process.h
@@ -49,9 +49,9 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	bool isValidTarget(Actor *target_);
 	bool isEnemy(Actor *target_);
 	bool inAttackRange();
diff --git a/engines/ultima/ultima8/world/actors/grant_peace_process.h b/engines/ultima/ultima8/world/actors/grant_peace_process.h
index f0d27c128d..de16e0996c 100644
--- a/engines/ultima/ultima8/world/actors/grant_peace_process.h
+++ b/engines/ultima/ultima8/world/actors/grant_peace_process.h
@@ -44,9 +44,9 @@ public:
 	INTRINSIC(I_castGrantPeace);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	bool _haveTarget;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/heal_process.h b/engines/ultima/ultima8/world/actors/heal_process.h
index c26c68c41c..ea5828a936 100644
--- a/engines/ultima/ultima8/world/actors/heal_process.h
+++ b/engines/ultima/ultima8/world/actors/heal_process.h
@@ -41,9 +41,9 @@ public:
 	INTRINSIC(I_feedAvatar);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	void feedAvatar(uint16 food);
 
 	uint16 _healCounter;
diff --git a/engines/ultima/ultima8/world/actors/loiter_process.h b/engines/ultima/ultima8/world/actors/loiter_process.h
index 9282b147c5..f961bc6765 100644
--- a/engines/ultima/ultima8/world/actors/loiter_process.h
+++ b/engines/ultima/ultima8/world/actors/loiter_process.h
@@ -41,9 +41,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int32 _count;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/pathfinder_process.h b/engines/ultima/ultima8/world/actors/pathfinder_process.h
index 986ed66c92..729bd3560f 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder_process.h
+++ b/engines/ultima/ultima8/world/actors/pathfinder_process.h
@@ -48,9 +48,9 @@ public:
 //	virtual void terminate();
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int32 _targetX, _targetY, _targetZ;
 	ObjId _targetItem;
 	bool _hitMode;
diff --git a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
index 195221fcb8..c2e04ce34f 100644
--- a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
@@ -58,9 +58,9 @@ public:
 	static void startMover(int x, int y, int z, int _dir);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int _dx, _dy, _dz, _dir;
 	static ProcId _amp[6];
 	static bool _clipping;
diff --git a/engines/ultima/ultima8/world/actors/resurrection_process.h b/engines/ultima/ultima8/world/actors/resurrection_process.h
index 6a4920ec2d..542f3e4b40 100644
--- a/engines/ultima/ultima8/world/actors/resurrection_process.h
+++ b/engines/ultima/ultima8/world/actors/resurrection_process.h
@@ -41,7 +41,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/scheduler_process.h b/engines/ultima/ultima8/world/actors/scheduler_process.h
index bf15df7316..a40812635c 100644
--- a/engines/ultima/ultima8/world/actors/scheduler_process.h
+++ b/engines/ultima/ultima8/world/actors/scheduler_process.h
@@ -39,9 +39,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	uint32 _lastRun;
 	uint16 _nextActor;
 };
diff --git a/engines/ultima/ultima8/world/actors/teleport_to_egg_process.h b/engines/ultima/ultima8/world/actors/teleport_to_egg_process.h
index cb4c137e4d..f3207a5d03 100644
--- a/engines/ultima/ultima8/world/actors/teleport_to_egg_process.h
+++ b/engines/ultima/ultima8/world/actors/teleport_to_egg_process.h
@@ -41,9 +41,9 @@ public:
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
 
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int _mapNum;
 	int _teleportId;
 };
diff --git a/engines/ultima/ultima8/world/camera_process.h b/engines/ultima/ultima8/world/camera_process.h
index a5f8e45db4..3aa6e5027e 100644
--- a/engines/ultima/ultima8/world/camera_process.h
+++ b/engines/ultima/ultima8/world/camera_process.h
@@ -84,9 +84,9 @@ public:
 	void terminate() override;   // Terminate NOW!
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-private:
 	void saveData(Common::WriteStream *ws) override;
 
+private:
 	int32 _sx, _sy, _sz;
 	int32 _ex, _ey, _ez;
 	int32 _time;
diff --git a/engines/ultima/ultima8/world/create_item_process.h b/engines/ultima/ultima8/world/create_item_process.h
index 863334e2df..fcac9aa43d 100644
--- a/engines/ultima/ultima8/world/create_item_process.h
+++ b/engines/ultima/ultima8/world/create_item_process.h
@@ -43,9 +43,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	uint32 _shape;
 	uint32 _frame;
 	uint16 _quality;
diff --git a/engines/ultima/ultima8/world/destroy_item_process.h b/engines/ultima/ultima8/world/destroy_item_process.h
index 25fc8503be..060fc1142b 100644
--- a/engines/ultima/ultima8/world/destroy_item_process.h
+++ b/engines/ultima/ultima8/world/destroy_item_process.h
@@ -45,7 +45,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/egg_hatcher_process.h b/engines/ultima/ultima8/world/egg_hatcher_process.h
index 1841ac788d..56428c8068 100644
--- a/engines/ultima/ultima8/world/egg_hatcher_process.h
+++ b/engines/ultima/ultima8/world/egg_hatcher_process.h
@@ -45,9 +45,9 @@ public:
 	void addEgg(uint16 egg);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-private:
 	void saveData(Common::WriteStream *ws) override;
 
+private:
 	Std::vector<uint16> _eggs;
 };
 
diff --git a/engines/ultima/ultima8/world/fireball_process.h b/engines/ultima/ultima8/world/fireball_process.h
index baf0723819..4a2ed7264f 100644
--- a/engines/ultima/ultima8/world/fireball_process.h
+++ b/engines/ultima/ultima8/world/fireball_process.h
@@ -46,9 +46,9 @@ public:
 	INTRINSIC(I_TonysBalls);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	void explode();
 
 	int _xSpeed, _ySpeed;
diff --git a/engines/ultima/ultima8/world/gravity_process.h b/engines/ultima/ultima8/world/gravity_process.h
index c60de80257..9297e17d65 100644
--- a/engines/ultima/ultima8/world/gravity_process.h
+++ b/engines/ultima/ultima8/world/gravity_process.h
@@ -50,9 +50,9 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	void fallStopped();
 
 	int _gravity;
diff --git a/engines/ultima/ultima8/world/split_item_process.h b/engines/ultima/ultima8/world/split_item_process.h
index 13493002ed..655ea95bbb 100644
--- a/engines/ultima/ultima8/world/split_item_process.h
+++ b/engines/ultima/ultima8/world/split_item_process.h
@@ -41,9 +41,9 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	ObjId _target;
 };
 
diff --git a/engines/ultima/ultima8/world/sprite_process.h b/engines/ultima/ultima8/world/sprite_process.h
index ee6e0e843c..cb37447352 100644
--- a/engines/ultima/ultima8/world/sprite_process.h
+++ b/engines/ultima/ultima8/world/sprite_process.h
@@ -74,7 +74,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 


Commit: 0471207c95665e7bc63d780ba0822cb84cf44e7c
    https://github.com/scummvm/scummvm/commit/0471207c95665e7bc63d780ba0822cb84cf44e7c
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: Make saveData method public on remaining process classes

Changed paths:
    engines/ultima/ultima8/audio/remorse_music_process.h
    engines/ultima/ultima8/audio/u8_music_process.h
    engines/ultima/ultima8/world/actors/actor_bark_notify_process.h
    engines/ultima/ultima8/world/actors/avatar_gravity_process.h
    engines/ultima/ultima8/world/actors/targeted_anim_process.h


diff --git a/engines/ultima/ultima8/audio/remorse_music_process.h b/engines/ultima/ultima8/audio/remorse_music_process.h
index eac7f3275a..cf4214c290 100644
--- a/engines/ultima/ultima8/audio/remorse_music_process.h
+++ b/engines/ultima/ultima8/audio/remorse_music_process.h
@@ -40,8 +40,6 @@ class RemorseMusicProcess : public MusicProcess {
 	friend class Debugger;
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
-
 	//! Play a music track
 	//! \param track The track number to play. Pass 0 to stop music
 	void playMusic_internal(int track) override;
@@ -86,6 +84,7 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/audio/u8_music_process.h b/engines/ultima/ultima8/audio/u8_music_process.h
index 75c209e45d..1c87cd44ff 100644
--- a/engines/ultima/ultima8/audio/u8_music_process.h
+++ b/engines/ultima/ultima8/audio/u8_music_process.h
@@ -60,8 +60,6 @@ public:
 	};
 
 private:
-	void saveData(Common::WriteStream *ws) override;
-
 	//! Play a music track
 	//! \param track The track number to play. Pass 0 to stop music
 	void playMusic_internal(int track) override;
@@ -117,6 +115,7 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/world/actors/actor_bark_notify_process.h b/engines/ultima/ultima8/world/actors/actor_bark_notify_process.h
index f8d959a1ec..2c7b0a19b6 100644
--- a/engines/ultima/ultima8/world/actors/actor_bark_notify_process.h
+++ b/engines/ultima/ultima8/world/actors/actor_bark_notify_process.h
@@ -39,7 +39,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/avatar_gravity_process.h b/engines/ultima/ultima8/world/actors/avatar_gravity_process.h
index db664d92bf..55ead2bf43 100644
--- a/engines/ultima/ultima8/world/actors/avatar_gravity_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_gravity_process.h
@@ -41,7 +41,6 @@ public:
 	void run() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/targeted_anim_process.h b/engines/ultima/ultima8/world/actors/targeted_anim_process.h
index e46ef36ed5..fdd8f780d4 100644
--- a/engines/ultima/ultima8/world/actors/targeted_anim_process.h
+++ b/engines/ultima/ultima8/world/actors/targeted_anim_process.h
@@ -41,9 +41,9 @@ public:
 	ENABLE_RUNTIME_CLASSTYPE()
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	bool init() override;
 
 	int32 _x, _y, _z;


Commit: 1781f5e10d6df1f21e323acb224818e591bfd5be
    https://github.com/scummvm/scummvm/commit/1781f5e10d6df1f21e323acb224818e591bfd5be
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: Make saveData method public on object classes

Changed paths:
    engines/ultima/ultima8/gumps/ask_gump.h
    engines/ultima/ultima8/gumps/bark_gump.h
    engines/ultima/ultima8/gumps/book_gump.h
    engines/ultima/ultima8/gumps/container_gump.h
    engines/ultima/ultima8/gumps/cru_ammo_gump.h
    engines/ultima/ultima8/gumps/cru_energy_gump.h
    engines/ultima/ultima8/gumps/cru_health_gump.h
    engines/ultima/ultima8/gumps/cru_inventory_gump.h
    engines/ultima/ultima8/gumps/cru_stat_gump.h
    engines/ultima/ultima8/gumps/cru_status_gump.h
    engines/ultima/ultima8/gumps/cru_weapon_gump.h
    engines/ultima/ultima8/gumps/desktop_gump.h
    engines/ultima/ultima8/gumps/game_map_gump.h
    engines/ultima/ultima8/gumps/message_box_gump.h
    engines/ultima/ultima8/gumps/mini_stats_gump.h
    engines/ultima/ultima8/gumps/minimap_gump.h
    engines/ultima/ultima8/gumps/modal_gump.h
    engines/ultima/ultima8/gumps/movie_gump.h
    engines/ultima/ultima8/gumps/paged_gump.h
    engines/ultima/ultima8/gumps/paperdoll_gump.h
    engines/ultima/ultima8/gumps/quit_gump.h
    engines/ultima/ultima8/gumps/readable_gump.h
    engines/ultima/ultima8/gumps/scroll_gump.h
    engines/ultima/ultima8/gumps/shape_viewer_gump.h
    engines/ultima/ultima8/gumps/slider_gump.h
    engines/ultima/ultima8/gumps/target_gump.h
    engines/ultima/ultima8/gumps/widgets/button_widget.h
    engines/ultima/ultima8/gumps/widgets/sliding_widget.h
    engines/ultima/ultima8/gumps/widgets/text_widget.h
    engines/ultima/ultima8/world/actors/actor.h
    engines/ultima/ultima8/world/actors/main_actor.h
    engines/ultima/ultima8/world/container.h
    engines/ultima/ultima8/world/egg.h
    engines/ultima/ultima8/world/glob_egg.h
    engines/ultima/ultima8/world/item.h
    engines/ultima/ultima8/world/monster_egg.h
    engines/ultima/ultima8/world/teleport_egg.h


diff --git a/engines/ultima/ultima8/gumps/ask_gump.h b/engines/ultima/ultima8/gumps/ask_gump.h
index d05d714c64..640ca067c5 100644
--- a/engines/ultima/ultima8/gumps/ask_gump.h
+++ b/engines/ultima/ultima8/gumps/ask_gump.h
@@ -50,7 +50,6 @@ public:
 	void        ChildNotify(Gump *child, uint32 message) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/bark_gump.h b/engines/ultima/ultima8/gumps/bark_gump.h
index 9d67bcbe8a..e877840e5d 100644
--- a/engines/ultima/ultima8/gumps/bark_gump.h
+++ b/engines/ultima/ultima8/gumps/bark_gump.h
@@ -69,7 +69,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/book_gump.h b/engines/ultima/ultima8/gumps/book_gump.h
index 8d817a0ccc..2acd1da5d8 100644
--- a/engines/ultima/ultima8/gumps/book_gump.h
+++ b/engines/ultima/ultima8/gumps/book_gump.h
@@ -60,7 +60,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/container_gump.h b/engines/ultima/ultima8/gumps/container_gump.h
index 8c9b31f9c7..d26f0a4328 100644
--- a/engines/ultima/ultima8/gumps/container_gump.h
+++ b/engines/ultima/ultima8/gumps/container_gump.h
@@ -77,9 +77,9 @@ public:
 	void onMouseDouble(int button, int32 mx, int32 my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	void GetItemLocation(int32 lerp_factor) override;
 
 	virtual Container *getTargetContainer(Item *item, int mx, int my);
diff --git a/engines/ultima/ultima8/gumps/cru_ammo_gump.h b/engines/ultima/ultima8/gumps/cru_ammo_gump.h
index bfc9c01b80..ee13a666e1 100644
--- a/engines/ultima/ultima8/gumps/cru_ammo_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_ammo_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
 private:
diff --git a/engines/ultima/ultima8/gumps/cru_energy_gump.h b/engines/ultima/ultima8/gumps/cru_energy_gump.h
index 03af1f6758..40d6d36b66 100644
--- a/engines/ultima/ultima8/gumps/cru_energy_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_energy_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/cru_health_gump.h b/engines/ultima/ultima8/gumps/cru_health_gump.h
index 9debca5391..3bfab54987 100644
--- a/engines/ultima/ultima8/gumps/cru_health_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_health_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/cru_inventory_gump.h b/engines/ultima/ultima8/gumps/cru_inventory_gump.h
index 6ccda89398..674f464c08 100644
--- a/engines/ultima/ultima8/gumps/cru_inventory_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_inventory_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
 private:
diff --git a/engines/ultima/ultima8/gumps/cru_stat_gump.h b/engines/ultima/ultima8/gumps/cru_stat_gump.h
index da4d683a41..1a4da94ab3 100644
--- a/engines/ultima/ultima8/gumps/cru_stat_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_stat_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/cru_status_gump.h b/engines/ultima/ultima8/gumps/cru_status_gump.h
index 80abf54927..5abaa36c41 100644
--- a/engines/ultima/ultima8/gumps/cru_status_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_status_gump.h
@@ -49,7 +49,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/cru_weapon_gump.h b/engines/ultima/ultima8/gumps/cru_weapon_gump.h
index eb0fd222f9..69b8833d8e 100644
--- a/engines/ultima/ultima8/gumps/cru_weapon_gump.h
+++ b/engines/ultima/ultima8/gumps/cru_weapon_gump.h
@@ -47,7 +47,6 @@ public:
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
 private:
diff --git a/engines/ultima/ultima8/gumps/desktop_gump.h b/engines/ultima/ultima8/gumps/desktop_gump.h
index ac44b9d0bb..ca8909901d 100644
--- a/engines/ultima/ultima8/gumps/desktop_gump.h
+++ b/engines/ultima/ultima8/gumps/desktop_gump.h
@@ -49,6 +49,7 @@ public:
 	void StopDraggingChild(Gump *gump) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	void RenderSurfaceChanged(RenderSurface *surf);
 
@@ -57,7 +58,6 @@ public:
 	}
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
 	void RenderSurfaceChanged() override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.h b/engines/ultima/ultima8/gumps/game_map_gump.h
index 7d5218f9d3..c6678b14af 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.h
+++ b/engines/ultima/ultima8/gumps/game_map_gump.h
@@ -79,6 +79,7 @@ public:
 	void IncSortOrder(int count);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	static void Set_highlightItems(bool highlight) {
 		_highlightItems = highlight;
@@ -90,8 +91,6 @@ public:
 	void        RenderSurfaceChanged() override;
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
-
 	bool _displayDragging;
 	uint32 _draggingShape;
 	uint32 _draggingFrame;
diff --git a/engines/ultima/ultima8/gumps/message_box_gump.h b/engines/ultima/ultima8/gumps/message_box_gump.h
index 292380f05b..5323a7fcb1 100644
--- a/engines/ultima/ultima8/gumps/message_box_gump.h
+++ b/engines/ultima/ultima8/gumps/message_box_gump.h
@@ -53,6 +53,7 @@ public:
 	void Close(bool no_del = false) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
 
@@ -68,9 +69,6 @@ public:
 	}
 
 	void ChildNotify(Gump *child, uint32 msg) override;
-
-protected:
-	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/gumps/mini_stats_gump.h b/engines/ultima/ultima8/gumps/mini_stats_gump.h
index c93d1812b3..fb4e250613 100644
--- a/engines/ultima/ultima8/gumps/mini_stats_gump.h
+++ b/engines/ultima/ultima8/gumps/mini_stats_gump.h
@@ -54,7 +54,6 @@ public:
 	void onMouseDouble(int button, int32 mx, int32 my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.h b/engines/ultima/ultima8/gumps/minimap_gump.h
index 7e5a08049b..93efb93079 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.h
+++ b/engines/ultima/ultima8/gumps/minimap_gump.h
@@ -52,7 +52,6 @@ public:
 	uint16      TraceObjId(int32 mx, int32 my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/modal_gump.h b/engines/ultima/ultima8/gumps/modal_gump.h
index 723817b0eb..6be2e3e0ca 100644
--- a/engines/ultima/ultima8/gumps/modal_gump.h
+++ b/engines/ultima/ultima8/gumps/modal_gump.h
@@ -53,7 +53,6 @@ public:
 	Gump *onMouseDown(int button, int32 mx, int32 my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/movie_gump.h b/engines/ultima/ultima8/gumps/movie_gump.h
index e090c766e6..3130162bc0 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.h
+++ b/engines/ultima/ultima8/gumps/movie_gump.h
@@ -55,9 +55,9 @@ public:
 	static ProcId U8MovieViewer(Common::SeekableReadStream *rs, bool fade, bool introMusicHack = false);
 
 	bool loadData(Common::ReadStream *rs);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	MoviePlayer *_player;
 };
 
diff --git a/engines/ultima/ultima8/gumps/paged_gump.h b/engines/ultima/ultima8/gumps/paged_gump.h
index 7d5f9c8254..d085e109e2 100644
--- a/engines/ultima/ultima8/gumps/paged_gump.h
+++ b/engines/ultima/ultima8/gumps/paged_gump.h
@@ -57,8 +57,9 @@ public:
 	}
 
 	bool loadData(Common::ReadStream *rs);
-protected:
 	void saveData(Common::WriteStream *ws) override;
+
+protected:
 	int _leftOff, _rightOff, _topOff, _gumpShape;
 	Std::vector<Gump *> _gumps;
 	Gump *_nextButton;
diff --git a/engines/ultima/ultima8/gumps/paperdoll_gump.h b/engines/ultima/ultima8/gumps/paperdoll_gump.h
index 1b9ffe23a6..58bc042fc5 100644
--- a/engines/ultima/ultima8/gumps/paperdoll_gump.h
+++ b/engines/ultima/ultima8/gumps/paperdoll_gump.h
@@ -67,9 +67,9 @@ public:
 	void DropItem(Item *item, int mx, int my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	//! Paint the stats
 	void PaintStats(RenderSurface *, int32 lerp_factor);
 
diff --git a/engines/ultima/ultima8/gumps/quit_gump.h b/engines/ultima/ultima8/gumps/quit_gump.h
index e78422f801..08dacb447d 100644
--- a/engines/ultima/ultima8/gumps/quit_gump.h
+++ b/engines/ultima/ultima8/gumps/quit_gump.h
@@ -50,8 +50,9 @@ public:
 	static void verifyQuit();
 
 	bool loadData(Common::ReadStream *rs);
-protected:
 	void saveData(Common::WriteStream *ws) override;
+
+protected:
 	ObjId _yesWidget, _noWidget;
 
 	uint32 _gumpShape;	//! shape number for the dialog
diff --git a/engines/ultima/ultima8/gumps/readable_gump.h b/engines/ultima/ultima8/gumps/readable_gump.h
index 3ab763e5d7..ce528a0ca6 100644
--- a/engines/ultima/ultima8/gumps/readable_gump.h
+++ b/engines/ultima/ultima8/gumps/readable_gump.h
@@ -55,7 +55,6 @@ public:
 	INTRINSIC(I_readPlaque);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/scroll_gump.h b/engines/ultima/ultima8/gumps/scroll_gump.h
index 3bde5cc698..9817797cf2 100644
--- a/engines/ultima/ultima8/gumps/scroll_gump.h
+++ b/engines/ultima/ultima8/gumps/scroll_gump.h
@@ -59,7 +59,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.h b/engines/ultima/ultima8/gumps/shape_viewer_gump.h
index 6ad762d7e7..c10498824a 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.h
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.h
@@ -57,9 +57,9 @@ public:
 	static void U8ShapeViewer();
 
 	bool loadData(Common::ReadStream *rs);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	Std::vector<Std::pair<Std::string, ShapeArchive *> > _flexes;
 	unsigned int _curFlex;
 	ShapeArchive *_flex;
diff --git a/engines/ultima/ultima8/gumps/slider_gump.h b/engines/ultima/ultima8/gumps/slider_gump.h
index c05427ff1c..f3c87ebacd 100644
--- a/engines/ultima/ultima8/gumps/slider_gump.h
+++ b/engines/ultima/ultima8/gumps/slider_gump.h
@@ -59,9 +59,9 @@ public:
 	bool OnKeyDown(int key, int mod) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+protected:
 	int16 _min;
 	int16 _max;
 	int16 _delta;
diff --git a/engines/ultima/ultima8/gumps/target_gump.h b/engines/ultima/ultima8/gumps/target_gump.h
index 2a97cc1496..bc7b33e2b7 100644
--- a/engines/ultima/ultima8/gumps/target_gump.h
+++ b/engines/ultima/ultima8/gumps/target_gump.h
@@ -50,7 +50,6 @@ public:
 	INTRINSIC(I_target);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
 private:
diff --git a/engines/ultima/ultima8/gumps/widgets/button_widget.h b/engines/ultima/ultima8/gumps/widgets/button_widget.h
index 58670cfb20..b68ecb80ab 100644
--- a/engines/ultima/ultima8/gumps/widgets/button_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/button_widget.h
@@ -79,7 +79,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/widgets/sliding_widget.h b/engines/ultima/ultima8/gumps/widgets/sliding_widget.h
index 12ac43e016..6cec9384b0 100644
--- a/engines/ultima/ultima8/gumps/widgets/sliding_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/sliding_widget.h
@@ -41,7 +41,6 @@ public:
 	uint16 TraceObjId(int32 mx, int32 my) override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/gumps/widgets/text_widget.h b/engines/ultima/ultima8/gumps/widgets/text_widget.h
index 1c041a2b2f..709e222e82 100644
--- a/engines/ultima/ultima8/gumps/widgets/text_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/text_widget.h
@@ -100,8 +100,6 @@ protected:
 
 public:
 	bool loadData(Common::ReadStream *rs, uint32 version);
-
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/actors/actor.h b/engines/ultima/ultima8/world/actors/actor.h
index 5110310551..0c74e91f8e 100644
--- a/engines/ultima/ultima8/world/actors/actor.h
+++ b/engines/ultima/ultima8/world/actors/actor.h
@@ -217,8 +217,8 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
-	// p_dynamic_cast stuff
 	ENABLE_RUNTIME_CLASSTYPE()
 
 	INTRINSIC(I_isNPC);
@@ -292,8 +292,6 @@ public:
 	};
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
-
 	int16 _strength;
 	int16 _dexterity;
 	int16 _intelligence;
diff --git a/engines/ultima/ultima8/world/actors/main_actor.h b/engines/ultima/ultima8/world/actors/main_actor.h
index 5480eef8c5..4035cb731d 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.h
+++ b/engines/ultima/ultima8/world/actors/main_actor.h
@@ -91,8 +91,8 @@ public:
 	}
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
-	// p_dynamic_cast stuff
 	ENABLE_RUNTIME_CLASSTYPE()
 
 	INTRINSIC(I_teleportToEgg);
@@ -107,8 +107,6 @@ public:
 
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
-
 	void useInventoryItem(uint32 shapenum);
 
 	bool _justTeleported;
diff --git a/engines/ultima/ultima8/world/container.h b/engines/ultima/ultima8/world/container.h
index a5954c304a..4255181c04 100644
--- a/engines/ultima/ultima8/world/container.h
+++ b/engines/ultima/ultima8/world/container.h
@@ -109,14 +109,12 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	INTRINSIC(I_removeContents);
 	INTRINSIC(I_destroyContents);
 
 protected:
-	//! save Container data
-	void saveData(Common::WriteStream *ws) override;
-
 	Std::list<Item *> _contents;
 };
 
diff --git a/engines/ultima/ultima8/world/egg.h b/engines/ultima/ultima8/world/egg.h
index fe65ee99a8..e531003301 100644
--- a/engines/ultima/ultima8/world/egg.h
+++ b/engines/ultima/ultima8/world/egg.h
@@ -66,6 +66,7 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	INTRINSIC(I_getEggXRange);
 	INTRINSIC(I_getEggYRange);
@@ -75,8 +76,6 @@ public:
 	INTRINSIC(I_setEggId);
 
 protected:
-	void saveData(Common::WriteStream *ws) override;
-
 	bool _hatched;
 };
 
diff --git a/engines/ultima/ultima8/world/glob_egg.h b/engines/ultima/ultima8/world/glob_egg.h
index 869585dc77..15ade7a61c 100644
--- a/engines/ultima/ultima8/world/glob_egg.h
+++ b/engines/ultima/ultima8/world/glob_egg.h
@@ -43,7 +43,6 @@ public:
 	void enterFastArea() override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 
diff --git a/engines/ultima/ultima8/world/item.h b/engines/ultima/ultima8/world/item.h
index c7d0cd7bde..a52e482b6b 100644
--- a/engines/ultima/ultima8/world/item.h
+++ b/engines/ultima/ultima8/world/item.h
@@ -448,6 +448,7 @@ public:
 	void dumpInfo() const override;
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	// Intrinsics
 	INTRINSIC(I_touch);
@@ -566,9 +567,6 @@ protected:
 	ObjId _gump;             // Item's gump
 	ProcId _gravityPid;      // Item's GravityTracker (or 0)
 
-	//! save the actual Item data
-	void saveData(Common::WriteStream *ws) override;
-
 private:
 
 	//! Call a Usecode Event. Use the separate functions instead!
diff --git a/engines/ultima/ultima8/world/monster_egg.h b/engines/ultima/ultima8/world/monster_egg.h
index 2c12df33f6..56a55d4975 100644
--- a/engines/ultima/ultima8/world/monster_egg.h
+++ b/engines/ultima/ultima8/world/monster_egg.h
@@ -50,12 +50,10 @@ public:
 	uint16 hatch();
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
+	void saveData(Common::WriteStream *ws) override;
 
 	INTRINSIC(I_monsterEggHatch);
 	INTRINSIC(I_getMonId);
-
-protected:
-	void saveData(Common::WriteStream *ws) override;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/world/teleport_egg.h b/engines/ultima/ultima8/world/teleport_egg.h
index ae569bbf5b..65a6ce09c1 100644
--- a/engines/ultima/ultima8/world/teleport_egg.h
+++ b/engines/ultima/ultima8/world/teleport_egg.h
@@ -44,11 +44,9 @@ public:
 	}
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-
-	uint16 hatch() override;
-protected:
 	void saveData(Common::WriteStream *ws) override;
 
+	uint16 hatch() override;
 };
 
 } // End of namespace Ultima8


Commit: 9dbc6374892ae9d348e23ea045d8c6e1c225f2e7
    https://github.com/scummvm/scummvm/commit/9dbc6374892ae9d348e23ea045d8c6e1c225f2e7
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: make saveData public on Gump class

Changed paths:
    engines/ultima/ultima8/gumps/gump.h


diff --git a/engines/ultima/ultima8/gumps/gump.h b/engines/ultima/ultima8/gumps/gump.h
index 7fed3d80e3..2ec7d443cc 100644
--- a/engines/ultima/ultima8/gumps/gump.h
+++ b/engines/ultima/ultima8/gumps/gump.h
@@ -458,7 +458,6 @@ public:
 	};
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-protected:
 	void saveData(Common::WriteStream *ws) override;
 };
 


Commit: ac67b2195de5790e26225d5c097496dfd3fea0e2
    https://github.com/scummvm/scummvm/commit/ac67b2195de5790e26225d5c097496dfd3fea0e2
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: Alter object class to make object manager responsible for writing the name on save as it must be responsible for reading the name on load.

Changed paths:
    engines/ultima/ultima8/gumps/gump.cpp
    engines/ultima/ultima8/kernel/object.cpp
    engines/ultima/ultima8/kernel/object.h
    engines/ultima/ultima8/kernel/object_manager.cpp
    engines/ultima/ultima8/kernel/object_manager.h
    engines/ultima/ultima8/world/container.cpp
    engines/ultima/ultima8/world/map.cpp


diff --git a/engines/ultima/ultima8/gumps/gump.cpp b/engines/ultima/ultima8/gumps/gump.cpp
index 8a9180856b..0ee9dd5d53 100644
--- a/engines/ultima/ultima8/gumps/gump.cpp
+++ b/engines/ultima/ultima8/gumps/gump.cpp
@@ -818,7 +818,7 @@ void Gump::saveData(Common::WriteStream *ws) {
 	for (it = _children.begin(); it != _children.end(); ++it) {
 		if (!(*it)->mustSave(false)) continue;
 
-		(*it)->save(ws);
+		ObjectManager::get_instance()->saveObject(ws, *it);
 	}
 }
 
diff --git a/engines/ultima/ultima8/kernel/object.cpp b/engines/ultima/ultima8/kernel/object.cpp
index b2afaefc4f..214f247b57 100644
--- a/engines/ultima/ultima8/kernel/object.cpp
+++ b/engines/ultima/ultima8/kernel/object.cpp
@@ -65,20 +65,6 @@ ProcId Object::callUsecode(uint16 classid, uint16 offset,
 	return Kernel::get_instance()->addProcess(p);
 }
 
-
-void Object::save(Common::WriteStream *ws) {
-	writeObjectHeader(ws);
-	saveData(ws); // virtual
-}
-
-void Object::writeObjectHeader(Common::WriteStream *ws) const {
-	const char *cname = GetClassType()._className; // note: virtual
-	uint16 clen = strlen(cname);
-
-	ws->writeUint16LE(clen);
-	ws->write(cname, clen);
-}
-
 void Object::saveData(Common::WriteStream *ws) {
 	// note: Object is unversioned. If we ever want to version it,
 	// increase the global savegame version
diff --git a/engines/ultima/ultima8/kernel/object.h b/engines/ultima/ultima8/kernel/object.h
index 87d8627050..67af51fda0 100644
--- a/engines/ultima/ultima8/kernel/object.h
+++ b/engines/ultima/ultima8/kernel/object.h
@@ -54,9 +54,6 @@ public:
 	//! dump some info about this object to pout
 	virtual void dumpInfo() const;
 
-	//! save this object
-	void save(Common::WriteStream *ws);
-
 	//! Spawn a usecode function on this object
 	//! \param classid The usecode class to run
 	//! \param offset The offset in that class to run
@@ -68,14 +65,9 @@ public:
 	                   const uint8 *args = 0, int argsize = 0);
 
 	bool loadData(Common::ReadStream *rs, uint32 version);
-
-protected:
-	//! write the Object savegame header (mainly consisting of the classname)
-	void writeObjectHeader(Common::WriteStream *ws) const;
-
-	//! save the actual Object data
 	virtual void saveData(Common::WriteStream *ws);
 
+protected:
 	ObjId _objId;
 };
 
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 216e9a04cc..6e65adc463 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -227,7 +227,7 @@ void ObjectManager::save(Common::WriteStream *ws) {
 		// FIXME: This leaks _objIDs. See comment in ObjectManager::load().
 		if (gump && !gump->mustSave(true)) continue;
 
-		object->save(ws);
+		saveObject(ws, object);
 	}
  
 	ws->writeUint16LE(0);
@@ -288,6 +288,15 @@ bool ObjectManager::load(Common::ReadStream *rs, uint32 version) {
 	return true;
 }
 
+void ObjectManager::saveObject(Common::WriteStream *ws, Object *obj) const {
+	const char *cname = obj->GetClassType()._className; // note: virtual
+	uint16 clen = strlen(cname);
+
+	ws->writeUint16LE(clen);
+	ws->write(cname, clen);
+	obj->saveData(ws);
+}
+
 Object *ObjectManager::loadObject(Common::ReadStream *rs, uint32 version) {
 	uint16 classlen = rs->readUint16LE();
 	char *buf = new char[classlen + 1];
diff --git a/engines/ultima/ultima8/kernel/object_manager.h b/engines/ultima/ultima8/kernel/object_manager.h
index e6d57bb318..e7d2d94a94 100644
--- a/engines/ultima/ultima8/kernel/object_manager.h
+++ b/engines/ultima/ultima8/kernel/object_manager.h
@@ -65,6 +65,7 @@ public:
 	void save(Common::WriteStream *ws);
 	bool load(Common::ReadStream *rs, uint32 version);
 
+	void saveObject(Common::WriteStream *ws, Object *obj) const;
 	Object *loadObject(Common::ReadStream *rs, uint32 version);
 
 	Std::vector<Object *> _objects;
diff --git a/engines/ultima/ultima8/world/container.cpp b/engines/ultima/ultima8/world/container.cpp
index 5b259d3b92..dc14ec6552 100644
--- a/engines/ultima/ultima8/world/container.cpp
+++ b/engines/ultima/ultima8/world/container.cpp
@@ -308,7 +308,7 @@ void Container::saveData(Common::WriteStream *ws) {
 	ws->writeUint32LE(static_cast<uint32>(_contents.size()));
 	Std::list<Item *>::iterator iter;
 	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		(*iter)->save(ws);
+		ObjectManager::get_instance()->saveObject(ws, *iter);
 	}
 }
 
diff --git a/engines/ultima/ultima8/world/map.cpp b/engines/ultima/ultima8/world/map.cpp
index 1b8528fd05..95573553a4 100644
--- a/engines/ultima/ultima8/world/map.cpp
+++ b/engines/ultima/ultima8/world/map.cpp
@@ -290,7 +290,7 @@ void Map::save(Common::WriteStream *ws) {
 
 	Std::list<Item *>::iterator iter;
 	for (iter = _dynamicItems.begin(); iter != _dynamicItems.end(); ++iter) {
-		(*iter)->save(ws);
+		ObjectManager::get_instance()->saveObject(ws, *iter);
 	}
 }
 


Commit: 20e95ab50bdaf7c0c6589fa9c31e681c7ab18894
    https://github.com/scummvm/scummvm/commit/20e95ab50bdaf7c0c6589fa9c31e681c7ab18894
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: log error and skip save of process or object that cannot be loaded.

Changed paths:
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/object_manager.cpp


diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 9031ec4897..c9cc0637ac 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -327,6 +327,14 @@ void Kernel::save(Common::WriteStream *ws) {
 		const char *cname = (*it)->GetClassType()._className; // virtual
 		uint16 clen = strlen(cname);
 
+		Std::map<Common::String, ProcessLoadFunc>::iterator iter;
+		iter = _processLoaders.find(cname);
+
+		if (iter == _processLoaders.end()) {
+			perr << "Process class cannot save without registered loader: " << cname << Std::endl;
+			continue;
+		}
+
 		ws->writeUint16LE(clen);
 		ws->write(cname, clen);
 		(*it)->saveData(ws);
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 6e65adc463..a11461d106 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -292,6 +292,13 @@ void ObjectManager::saveObject(Common::WriteStream *ws, Object *obj) const {
 	const char *cname = obj->GetClassType()._className; // note: virtual
 	uint16 clen = strlen(cname);
 
+	Std::map<Common::String, ObjectLoadFunc>::iterator iter;
+	iter = _objectLoaders.find(cname);
+	if (iter == _objectLoaders.end()) {
+		perr << "Object class cannot save without registered loader: " << cname << Std::endl;
+		return;
+	}
+
 	ws->writeUint16LE(clen);
 	ws->write(cname, clen);
 	obj->saveData(ws);


Commit: f6002eb3eea289496125f306324140fff1fe313f
    https://github.com/scummvm/scummvm/commit/f6002eb3eea289496125f306324140fff1fe313f
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: remove uses of strlen in object / process classname save

Changed paths:
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/object_manager.cpp


diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index c9cc0637ac..9596e06ca2 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -324,19 +324,18 @@ void Kernel::save(Common::WriteStream *ws) {
 	_pIDs->save(ws);
 	ws->writeUint32LE(_processes.size());
 	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		const char *cname = (*it)->GetClassType()._className; // virtual
-		uint16 clen = strlen(cname);
+		Std::string classname = (*it)->GetClassType()._className; // virtual
 
 		Std::map<Common::String, ProcessLoadFunc>::iterator iter;
-		iter = _processLoaders.find(cname);
+		iter = _processLoaders.find(classname);
 
 		if (iter == _processLoaders.end()) {
-			perr << "Process class cannot save without registered loader: " << cname << Std::endl;
+			perr << "Process class cannot save without registered loader: " << classname << Std::endl;
 			continue;
 		}
 
-		ws->writeUint16LE(clen);
-		ws->write(cname, clen);
+		ws->writeUint16LE(classname.size());
+		ws->write(classname.c_str(), classname.size());
 		(*it)->saveData(ws);
 	}
 }
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index a11461d106..1368b75f87 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -289,18 +289,17 @@ bool ObjectManager::load(Common::ReadStream *rs, uint32 version) {
 }
 
 void ObjectManager::saveObject(Common::WriteStream *ws, Object *obj) const {
-	const char *cname = obj->GetClassType()._className; // note: virtual
-	uint16 clen = strlen(cname);
+	Std::string classname = obj->GetClassType()._className; // note: virtual
 
 	Std::map<Common::String, ObjectLoadFunc>::iterator iter;
-	iter = _objectLoaders.find(cname);
+	iter = _objectLoaders.find(classname);
 	if (iter == _objectLoaders.end()) {
-		perr << "Object class cannot save without registered loader: " << cname << Std::endl;
+		perr << "Object class cannot save without registered loader: " << classname << Std::endl;
 		return;
 	}
 
-	ws->writeUint16LE(clen);
-	ws->write(cname, clen);
+	ws->writeUint16LE(classname.size());
+	ws->write(classname.c_str(), classname.size());
 	obj->saveData(ws);
 }
 


Commit: 46ba0500cebf4ed6334d43b6b48b2079f06d05d0
    https://github.com/scummvm/scummvm/commit/46ba0500cebf4ed6334d43b6b48b2079f06d05d0
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-05-25T16:28:25+09:00

Commit Message:
ULTIMA8: Change saving of unregisistered classname to an error

Changed paths:
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/object_manager.cpp


diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 9596e06ca2..75f5c25f21 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -324,14 +324,13 @@ void Kernel::save(Common::WriteStream *ws) {
 	_pIDs->save(ws);
 	ws->writeUint32LE(_processes.size());
 	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Std::string classname = (*it)->GetClassType()._className; // virtual
+		const Std::string & classname = (*it)->GetClassType()._className; // virtual
 
 		Std::map<Common::String, ProcessLoadFunc>::iterator iter;
 		iter = _processLoaders.find(classname);
 
 		if (iter == _processLoaders.end()) {
-			perr << "Process class cannot save without registered loader: " << classname << Std::endl;
-			continue;
+			error("Process class cannot save without registered loader: %s", classname.c_str());
 		}
 
 		ws->writeUint16LE(classname.size());
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 1368b75f87..6190db2557 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -289,13 +289,12 @@ bool ObjectManager::load(Common::ReadStream *rs, uint32 version) {
 }
 
 void ObjectManager::saveObject(Common::WriteStream *ws, Object *obj) const {
-	Std::string classname = obj->GetClassType()._className; // note: virtual
+	const Std::string & classname = obj->GetClassType()._className; // note: virtual
 
 	Std::map<Common::String, ObjectLoadFunc>::iterator iter;
 	iter = _objectLoaders.find(classname);
 	if (iter == _objectLoaders.end()) {
-		perr << "Object class cannot save without registered loader: " << classname << Std::endl;
-		return;
+		error("Object class cannot save without registered loader: %s", classname.c_str());
 	}
 
 	ws->writeUint16LE(classname.size());




More information about the Scummvm-git-logs mailing list