AssetGenerator.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * AssetGenerator.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "ImageLocator.h"
  12. VCMI_LIB_NAMESPACE_BEGIN
  13. class PlayerColor;
  14. VCMI_LIB_NAMESPACE_END
  15. class ISharedImage;
  16. class CanvasImage;
  17. class AssetGenerator
  18. {
  19. public:
  20. using AnimationLayoutMap = std::map<size_t, std::vector<ImageLocator>>;
  21. using CanvasPtr = std::shared_ptr<CanvasImage>;
  22. AssetGenerator();
  23. void initialize();
  24. std::shared_ptr<ISharedImage> generateImage(const ImagePath & image);
  25. std::map<ImagePath, std::shared_ptr<ISharedImage>> generateAllImages();
  26. std::map<AnimationPath, AnimationLayoutMap> generateAllAnimations();
  27. private:
  28. using ImageGenerationFunctor = std::function<CanvasPtr()>;
  29. struct PaletteAnimation
  30. {
  31. /// index of first color to cycle
  32. int32_t start;
  33. /// total numbers of colors to cycle
  34. int32_t length;
  35. };
  36. std::map<ImagePath, ImageGenerationFunctor> imageFiles;
  37. std::map<AnimationPath, AnimationLayoutMap> animationFiles;
  38. CanvasPtr createAdventureOptionsCleanBackground();
  39. CanvasPtr createBigSpellBook();
  40. CanvasPtr createPlayerColoredBackground(const PlayerColor & player);
  41. CanvasPtr createCombatUnitNumberWindow(float multR, float multG, float multB);
  42. CanvasPtr createCampaignBackground();
  43. CanvasPtr createChroniclesCampaignImages(int chronicle);
  44. CanvasPtr createPaletteShiftedImage(const AnimationPath & source, const std::vector<PaletteAnimation> & animation, int frameIndex, int paletteShiftCounter);
  45. void createPaletteShiftedSprites();
  46. void generatePaletteShiftedAnimation(const AnimationPath & source, const std::vector<PaletteAnimation> & animation);
  47. };