mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-07-03 06:24:32 +00:00
Core: tgaSave() should free memory passed in. SceneEditor: Add support for grid map dumping (in TGA format).
This allows reconstructing the map templates, which were never shipped with the game. This patch also fixes insane memory leaking when taking screenshots, or dumping screen frames.
This commit is contained in:
parent
a97629b52b
commit
d903e74bf6
4 changed files with 37 additions and 1 deletions
|
@ -707,6 +707,8 @@ void SceneEditor::init()
|
|||
|
||||
addAction(MakeFunctionEvent(SceneEditor, createAquarian), KEY_F, 0);
|
||||
|
||||
addAction(MakeFunctionEvent(SceneEditor, dumpObs), KEY_F8, 0);
|
||||
|
||||
|
||||
/*
|
||||
// OLD CRAP
|
||||
|
@ -3908,5 +3910,32 @@ void SceneEditor::prevEntityType()
|
|||
}
|
||||
}
|
||||
|
||||
void SceneEditor::dumpObs()
|
||||
{
|
||||
TileVector tv;
|
||||
const uint32 A = 0xFF000000;
|
||||
#define COL(c) (((0x ## c)) | A)
|
||||
const uint32 coltab[5] =
|
||||
{
|
||||
COL(FFFFFF),
|
||||
COL(FFFFFF),
|
||||
COL(000000),
|
||||
COL(FFFFFF),
|
||||
COL(FFFFFF),
|
||||
};
|
||||
unsigned char *data = new unsigned char[MAX_GRID * MAX_GRID * sizeof(uint32)];
|
||||
uint32 *ptr = (uint32*)data;
|
||||
for(tv.y = MAX_GRID - 1; ; --tv.y)
|
||||
{
|
||||
for(tv.x = 0; tv.x < MAX_GRID; ++tv.x)
|
||||
*ptr++ = coltab[game->getGrid(tv)];
|
||||
if(tv.y == 0)
|
||||
break;
|
||||
}
|
||||
std::string outfn = dsq->getUserDataFolder() + "/griddump-" + game->sceneName + ".tga";
|
||||
core->tgaSave(outfn.c_str(), MAX_GRID, MAX_GRID, 32, data);
|
||||
dsq->screenMessage("Saved grid image to " + outfn);
|
||||
}
|
||||
|
||||
|
||||
#endif // AQUARIA_BUILD_SCENEEDITOR
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue