AssetGenerator.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. using ImageGenerationFunctor = std::function<CanvasPtr()>;
  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. void addImageFile(const ImagePath & path, ImageGenerationFunctor & img);
  28. void addAnimationFile(const AnimationPath & path, AnimationLayoutMap & anim);
  29. AnimationLayoutMap createAdventureMapButton(const ImagePath & overlay, bool small);
  30. private:
  31. struct PaletteAnimation
  32. {
  33. /// index of first color to cycle
  34. int32_t start;
  35. /// total numbers of colors to cycle
  36. int32_t length;
  37. };
  38. std::map<ImagePath, ImageGenerationFunctor> imageFiles;
  39. std::map<AnimationPath, AnimationLayoutMap> animationFiles;
  40. CanvasPtr createAdventureOptionsCleanBackground() const;
  41. CanvasPtr createBigSpellBook() const;
  42. CanvasPtr createPlayerColoredBackground(const PlayerColor & player) const;
  43. CanvasPtr createCombatUnitNumberWindow(float multR, float multG, float multB) const;
  44. CanvasPtr createCampaignBackground(int selection) const;
  45. CanvasPtr createSpellTabNone() const;
  46. CanvasPtr createResBarElement(const PlayerColor & player) const;
  47. CanvasPtr createChroniclesCampaignImages(int chronicle) const;
  48. CanvasPtr createPaletteShiftedImage(const AnimationPath & source, const std::vector<PaletteAnimation> & animation, int frameIndex, int paletteShiftCounter) const;
  49. CanvasPtr createAdventureMapButtonClear(const PlayerColor & player, bool small) const;
  50. CanvasPtr createCreatureInfoPanel(int boxesAmount) const;
  51. enum CreateResourceWindowType{ ARTIFACTS_BUYING, ARTIFACTS_SELLING, MARKET_RESOURCES, FREELANCERS_GUILD, TRANSFER_RESOURCES };
  52. CanvasPtr createResourceWindow(CreateResourceWindowType type, int count, PlayerColor color) const;
  53. enum CreatureInfoPanelElement{ BONUS_EFFECTS, SPELL_EFFECTS, BUTTON_PANEL, COMMANDER_BACKGROUND, COMMANDER_ABILITIES };
  54. CanvasPtr createCreatureInfoPanelElement(CreatureInfoPanelElement element) const;
  55. CanvasPtr createQuestWindow() const;
  56. AnimationLayoutMap createGSPButtonClear();
  57. void createPaletteShiftedSprites();
  58. void generatePaletteShiftedAnimation(const AnimationPath & source, const std::vector<PaletteAnimation> & animation);
  59. };