1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-02-03 13:01:33 +02:00

- fixed "get txt" console command

- command "extract" to extract file by name
- command "def2bmp" to convert def into set of frames.
This commit is contained in:
Ivan Savenko 2013-06-10 17:02:37 +00:00
parent 870399c7be
commit 08b2af3ccb

View File

@ -507,16 +507,21 @@ void processCommand(const std::string &message)
else if(message=="get txt")
{
std::cout<<"Command accepted.\t";
boost::filesystem::create_directory("Extracted_txts");
std::string outPath = VCMIDirs::get().localPath() + "/extracted/";
auto iterator = CResourceHandler::get()->getIterator([](const ResourceID & ident)
{
return ident.getType() == EResType::TEXT && boost::algorithm::starts_with(ident.getName(), "DATA/");
});
std::string basePath = CResourceHandler::get()->getResourceName(ResourceID("DATA")) + "/Extracted_txts/";
while (iterator.hasNext())
{
std::ofstream file(basePath + iterator->getName() + ".TXT");
std::string outName = outPath + iterator->getName();
boost::filesystem::create_directories(outName.substr(0, outName.find_last_of("/")));
std::ofstream file(outName + ".TXT");
auto text = CResourceHandler::get()->loadData(*iterator);
file.write((char*)text.first.get(), text.second);
@ -524,7 +529,7 @@ void processCommand(const std::string &message)
}
std::cout << "\rExtracting done :)\n";
std::cout << " Extracted files can be found in " << basePath << " directory\n";
std::cout << " Extracted files can be found in " << outPath << " directory\n";
}
else if(cn=="crash")
{
@ -622,6 +627,49 @@ void processCommand(const std::string &message)
if(mxname == "pim" && LOCPLINT)
LOCPLINT->pim->unlock();
}
else if(cn == "def2bmp")
{
std::string URI;
readed >> URI;
if (CResourceHandler::get()->existsResource(ResourceID("SPRITES/" + URI)))
{
CDefEssential * cde = CDefHandler::giveDefEss(URI);
std::string outName = CResourceHandler::get()->getResource(ResourceID("SPRITES/" + URI)).getResourceName();
std::string outPath = VCMIDirs::get().localPath() + "/extracted/";
boost::filesystem::create_directories(outPath + outName);
for (size_t i=0; i<cde->ourImages.size(); i++)
{
std::string filename = outPath + outName + '/' + boost::lexical_cast<std::string>(i);
SDL_SaveBMP(cde->ourImages[i].bitmap, filename.c_str());
}
}
else
logGlobal->errorStream() << "File not found!";
}
else if(cn == "extract")
{
std::string URI;
readed >> URI;
if (CResourceHandler::get()->existsResource(ResourceID(URI)))
{
std::string outName = CResourceHandler::get()->getResource(ResourceID(URI)).getResourceName();
std::string outPath = VCMIDirs::get().localPath() + "/extracted/";
std::string fullPath = outPath + outName;
auto data = CResourceHandler::get()->loadData(ResourceID(URI));
boost::filesystem::create_directories(fullPath.substr(0, fullPath.find_last_of("/")));
std::ofstream outFile(outPath + outName);
outFile.write((char*)data.first.get(), data.second);
}
else
logGlobal->errorStream() << "File not found!";
}
else if(cn == "setBattleAI")
{
std::string fname;