import resources; import orbitals; import buildings; void dumpImages() { //Dump materials uint cnt = getMaterialCount(); for(uint i = 0; i < cnt; ++i) { auto@ mat = getMaterial(i); if(mat.texture0 is null || mat.texture1 !is null) continue; string fname = "images/"+getMaterialName(i)+".png"; print("dumping "+fname); Image img(Sprite(mat)); img.save(fname); } //Dump sprites cnt = getSpriteSheetCount(); for(uint i = 0; i < cnt; ++i) { const SpriteSheet@ sheet = getSpriteSheet(i); if(sheet.material.texture0 is null || sheet.material.texture1 !is null) continue; Image img(Sprite(sheet.material)); uint spriteCount = sheet.count; string name = getSpriteSheetName(i); for(uint j = 0; j < spriteCount; ++j) { recti source = sheet.getSource(j); string fname = "images/"+name+"::"+j+".png"; print("dumping "+fname); Image sprite(img, source); sprite.save(fname); } } } string makeReference(const Sprite& image, const string& name, const string& tooltip, int width = -1) { string res; res += "\n"; res += "\n"; res += tooltip.replaced("\n", "[br/]"); res += "\n"; if(!image.valid) res += format("$1", name); else if(width > 0) res += format(" $2", getSpriteDesc(image), name, toString(width)); else res += format(" $2", getSpriteDesc(image), name); return res; } string makeListing(const Sprite& image, const string& name, const string& desc, int width = -1) { string res; if(image.valid) { if(width > 0) res += format("[img=$1;$2]", getSpriteDesc(image), toString(width)); else res += format("[img=$1]", getSpriteDesc(image)); } if(name.length > 0) res += format("[font=Subtitle][b]$1[/b][/font][br/]", name); if(desc.length > 0) res += desc.replaced("\n", "[br/]"); if(image.valid) res += "[/img]"; return res; } void dumpTemplates() { //Resource templates uint cnt = getResourceCount(); for(uint i = 0; i < cnt; ++i) { const ResourceType@ type = getResource(i); { string fname = format("templates/resource_ref;$1", type.ident); print("dumping "+fname); WriteFile file(fname); file.writeLine(makeReference(type.smallIcon, type.name, getResourceTooltip(type))); } { string fname = format("templates/resource;$1", type.ident); print("dumping "+fname); WriteFile file(fname); string name = type.name; if(type.rarity > RR_Common) name = format("[color=$1]$2[/color]", toString(getResourceRarityColor(type.rarity)), name); name += format(" [img=$1;20/]", getSpriteDesc(type.smallIcon)); file.writeLine(makeListing(type.icon, name, getResourceTooltip(type, null, null, false))); } } //Orbital templates cnt = getOrbitalModuleCount(); for(uint i = 0; i < cnt; ++i) { const OrbitalModule@ type = getOrbitalModule(i); { string fname = format("templates/orbital_ref;$1", type.ident); print("dumping "+fname); WriteFile file(fname); file.writeLine(makeReference(Sprite(), type.name, type.getTooltip())); } { string fname = format("templates/orbital;$1", type.ident); print("dumping "+fname); WriteFile file(fname); string name = type.name; file.writeLine(makeListing(Sprite(), name, type.getTooltip())); } } //Building templates cnt = getBuildingTypeCount(); for(uint i = 0; i < cnt; ++i) { const BuildingType@ type = getBuildingType(i); { string fname = format("templates/building_ref;$1", type.ident); print("dumping "+fname); WriteFile file(fname); file.writeLine(makeReference(type.sprite, type.name, type.getTooltip(), 22)); } { string fname = format("templates/building;$1", type.ident); print("dumping "+fname); WriteFile file(fname); string name = type.name; file.writeLine(makeListing(type.sprite, name, type.getTooltip(false))); } } }