[Scummvm-git-logs] scummvm master -> 5c366ff8dcb73999336cde6160af9718f1fb69dd

OMGPizzaGuy noreply at scummvm.org
Mon Dec 23 16:40:08 UTC 2024


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

Summary:
5c366ff8dc ULTIMA8: Allow export from MiniMapGump::generate console command to an image file


Commit: 5c366ff8dcb73999336cde6160af9718f1fb69dd
    https://github.com/scummvm/scummvm/commit/5c366ff8dcb73999336cde6160af9718f1fb69dd
Author: Matthew Jimenez ([matthew.jimenez at outlook.com])
Date: 2024-12-23T10:39:16-06:00

Commit Message:
ULTIMA8: Allow export from MiniMapGump::generate console command to an image file

Changed paths:
    engines/ultima/ultima8/gumps/minimap_gump.cpp
    engines/ultima/ultima8/gumps/minimap_gump.h
    engines/ultima/ultima8/misc/debugger.cpp
    engines/ultima/ultima8/world/minimap.cpp
    engines/ultima/ultima8/world/minimap.h


diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index b264762a215..931943f573c 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -109,6 +109,16 @@ void MiniMapGump::clear() {
 	_minimaps.clear();
 }
 
+bool MiniMapGump::dump(const Common::Path &filename) const {
+	World *world = World::get_instance();
+	CurrentMap *currentmap = world->getCurrentMap();
+
+	uint32 mapNum = currentmap->getNum();
+
+	MiniMap *minimap = _minimaps[mapNum];
+	return minimap ? minimap->dump(filename) : false;	
+}
+
 void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
 	Palette *pal = PaletteManager::get_instance()->getPalette(PaletteManager::Pal_Game);
 	uint32 *map = pal->_native;
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.h b/engines/ultima/ultima8/gumps/minimap_gump.h
index d4d29599dc9..e23f792dcfe 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.h
+++ b/engines/ultima/ultima8/gumps/minimap_gump.h
@@ -25,6 +25,10 @@
 #include "ultima/ultima8/gumps/resizable_gump.h"
 #include "ultima/ultima8/misc/classtype.h"
 
+namespace Common {
+class Path;
+}
+
 namespace Ultima {
 namespace Ultima8 {
 
@@ -46,6 +50,7 @@ public:
 
 	void generate();
 	void clear();
+	bool dump(const Common::Path &filename) const;
 
 	void        PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) override;
 	uint16      TraceObjId(int32 mx, int32 my) override;
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index f3febfe82b8..c57af5f3322 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -1605,6 +1605,16 @@ bool Debugger::cmdGenerateMinimap(int argc, const char **argv) {
 
 	if (gump) {
 		gump->generate();
+
+		if (argc > 1) {
+			Common::Path filename(argv[1]);
+			bool result = gump->dump(filename);
+			if (result) {
+				debugPrintf("Mini map dumped: %s\n", filename.toString().c_str());
+			} else {
+				debugPrintf("Could not write file: %s\n", filename.toString().c_str());
+			}
+		}
 	}
 	return false;
 }
diff --git a/engines/ultima/ultima8/world/minimap.cpp b/engines/ultima/ultima8/world/minimap.cpp
index 38cc7d893fd..c293b793db7 100644
--- a/engines/ultima/ultima8/world/minimap.cpp
+++ b/engines/ultima/ultima8/world/minimap.cpp
@@ -20,6 +20,10 @@
  */
 
 #include "common/stream.h"
+#include "common/file.h"
+
+#include "image/png.h"
+#include "image/bmp.h"
 
 #include "ultima/ultima8/world/minimap.h"
 #include "ultima/ultima8/world/current_map.h"
@@ -322,5 +326,19 @@ void MiniMap::save(Common::WriteStream *ws) const {
 	}
 }
 
+bool MiniMap::dump(const Common::Path &filename) const {
+	Palette *p = PaletteManager::get_instance()->getPalette(PaletteManager::Pal_Game);
+	Common::DumpFile dumpFile;
+	bool result = dumpFile.open(filename);
+	if (result) {
+#ifdef USE_PNG
+		result = Image::writePNG(dumpFile, _surface, p->data());
+#else
+		result = Image::writeBMP(dumpFile, _surface, p->data());
+#endif
+	}
+	return result;
+}
+
 } // End of namespace Ultima8
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/minimap.h b/engines/ultima/ultima8/world/minimap.h
index 18c7e633d86..a3d06152f05 100644
--- a/engines/ultima/ultima8/world/minimap.h
+++ b/engines/ultima/ultima8/world/minimap.h
@@ -25,6 +25,10 @@
 #ifndef ULTIMA8_WORLD_MINIMAP_H
 #define ULTIMA8_WORLD_MINIMAP_H
 
+namespace Common {
+class Path;
+}
+
 namespace Ultima {
 namespace Ultima8 {
 
@@ -54,6 +58,7 @@ public:
 
 	bool load(Common::ReadStream *rs, uint32 version);
 	void save(Common::WriteStream *ws) const;
+	bool dump(const Common::Path &filename) const;
 };
 
 } // End of namespace Ultima8




More information about the Scummvm-git-logs mailing list