[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