mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Reduce direct access to CAnimation, removed various caching schemes
This commit is contained in:
		| @@ -31,7 +31,6 @@ class CAnimImage; | ||||
| class CGStatusBar; | ||||
| class AdventureMapWidget; | ||||
| class AdventureMapShortcuts; | ||||
| class CAnimation; | ||||
| class MapView; | ||||
| class CResDataBar; | ||||
| class CHeroList; | ||||
|   | ||||
| @@ -20,7 +20,6 @@ | ||||
| #include "../gui/CGuiHandler.h" | ||||
| #include "../gui/Shortcut.h" | ||||
| #include "../mapView/MapView.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IImage.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
| #include "../widgets/Buttons.h" | ||||
| @@ -125,26 +124,6 @@ Rect AdventureMapWidget::readArea(const JsonNode & source, const Rect & bounding | ||||
| 	return Rect(topLeft + boundingBox.topLeft(), dimensions); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<IImage> AdventureMapWidget::loadImage(const JsonNode & name) | ||||
| { | ||||
| 	ImagePath resource = ImagePath::fromJson(name); | ||||
|  | ||||
| 	if(images.count(resource) == 0) | ||||
| 		images[resource] = GH.renderHandler().loadImage(resource); | ||||
|  | ||||
| 	return images[resource]; | ||||
| } | ||||
|  | ||||
| std::shared_ptr<CAnimation> AdventureMapWidget::loadAnimation(const JsonNode & name) | ||||
| { | ||||
| 	AnimationPath resource = AnimationPath::fromJson(name); | ||||
|  | ||||
| 	if(animations.count(resource) == 0) | ||||
| 		animations[resource] = GH.renderHandler().loadAnimation(resource); | ||||
|  | ||||
| 	return animations[resource]; | ||||
| } | ||||
|  | ||||
| std::shared_ptr<CIntObject> AdventureMapWidget::buildInfobox(const JsonNode & input) | ||||
| { | ||||
| 	Rect area = readTargetArea(input["area"]); | ||||
| @@ -157,7 +136,7 @@ std::shared_ptr<CIntObject> AdventureMapWidget::buildMapImage(const JsonNode & i | ||||
| 	Rect targetArea = readTargetArea(input["area"]); | ||||
| 	Rect sourceArea = readSourceArea(input["sourceArea"], input["area"]); | ||||
|  | ||||
| 	return std::make_shared<CFilledTexture>(loadImage(input["image"]), targetArea, sourceArea); | ||||
| 	return std::make_shared<CFilledTexture>(ImagePath::fromJson(input["image"]), targetArea, sourceArea); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<CIntObject> AdventureMapWidget::buildMapButton(const JsonNode & input) | ||||
| @@ -257,7 +236,7 @@ std::shared_ptr<CIntObject> AdventureMapWidget::buildMapIcon(const JsonNode & in | ||||
| 	size_t index = input["index"].Integer(); | ||||
| 	size_t perPlayer = input["perPlayer"].Integer(); | ||||
|  | ||||
| 	return std::make_shared<CAdventureMapIcon>(area.topLeft(), loadAnimation(input["image"]), index, perPlayer); | ||||
| 	return std::make_shared<CAdventureMapIcon>(area.topLeft(), AnimationPath::fromJson(input["image"]), index, perPlayer); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<CIntObject> AdventureMapWidget::buildMapTownList(const JsonNode & input) | ||||
| @@ -387,16 +366,10 @@ void AdventureMapWidget::setPlayerChildren(CIntObject * widget, const PlayerColo | ||||
| 			texture->playerColored(player); | ||||
| 	} | ||||
|  | ||||
| 	for(const auto & entry : playerColorerImages) | ||||
| 	{ | ||||
| 		if(images.count(entry)) | ||||
| 			images[entry]->playerColored(player); | ||||
| 	} | ||||
|  | ||||
| 	redraw(); | ||||
| } | ||||
|  | ||||
| CAdventureMapIcon::CAdventureMapIcon(const Point & position, std::shared_ptr<CAnimation> animation, size_t index, size_t iconsPerPlayer) | ||||
| CAdventureMapIcon::CAdventureMapIcon(const Point & position, const AnimationPath & animation, size_t index, size_t iconsPerPlayer) | ||||
| 	: index(index) | ||||
| 	, iconsPerPlayer(iconsPerPlayer) | ||||
| { | ||||
|   | ||||
| @@ -11,7 +11,6 @@ | ||||
|  | ||||
| #include "../gui/InterfaceObjectConfigurable.h" | ||||
|  | ||||
| class CAnimation; | ||||
| class CHeroList; | ||||
| class CTownList; | ||||
| class CMinimap; | ||||
| @@ -31,10 +30,6 @@ class AdventureMapWidget : public InterfaceObjectConfigurable | ||||
| 	/// list of images on which player-colored palette will be applied | ||||
| 	std::vector<ImagePath> playerColorerImages; | ||||
|  | ||||
| 	/// list of named images shared between widgets | ||||
| 	std::map<ImagePath, std::shared_ptr<IImage>> images; | ||||
| 	std::map<AnimationPath, std::shared_ptr<CAnimation>> animations; | ||||
|  | ||||
| 	/// Widgets that require access from adventure map | ||||
| 	std::shared_ptr<CHeroList> heroList; | ||||
| 	std::shared_ptr<CTownList> townList; | ||||
| @@ -48,9 +43,6 @@ class AdventureMapWidget : public InterfaceObjectConfigurable | ||||
| 	Rect readSourceArea(const JsonNode & source, const JsonNode & sourceCommon); | ||||
| 	Rect readArea(const JsonNode & source, const Rect & boundingBox); | ||||
|  | ||||
| 	std::shared_ptr<IImage> loadImage(const JsonNode & name); | ||||
| 	std::shared_ptr<CAnimation> loadAnimation(const JsonNode & name); | ||||
|  | ||||
| 	std::shared_ptr<CIntObject> buildInfobox(const JsonNode & input); | ||||
| 	std::shared_ptr<CIntObject> buildMapImage(const JsonNode & input); | ||||
| 	std::shared_ptr<CIntObject> buildMapButton(const JsonNode & input); | ||||
| @@ -104,7 +96,7 @@ class CAdventureMapIcon : public CIntObject | ||||
| 	size_t index; | ||||
| 	size_t iconsPerPlayer; | ||||
| public: | ||||
| 	CAdventureMapIcon(const Point & position, std::shared_ptr<CAnimation> image, size_t index, size_t iconsPerPlayer); | ||||
| 	CAdventureMapIcon(const Point & position, const AnimationPath & image, size_t index, size_t iconsPerPlayer); | ||||
|  | ||||
| 	void setPlayer(const PlayerColor & player); | ||||
| }; | ||||
|   | ||||
| @@ -24,6 +24,7 @@ | ||||
| #include "../gui/CursorHandler.h" | ||||
| #include "../gui/CGuiHandler.h" | ||||
| #include "../media/ISoundPlayer.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|  | ||||
| #include "../../CCallback.h" | ||||
|   | ||||
| @@ -39,7 +39,6 @@ class Canvas; | ||||
| class BattleResultWindow; | ||||
| class StackQueue; | ||||
| class CPlayerInterface; | ||||
| class CAnimation; | ||||
| struct BattleEffect; | ||||
| class IImage; | ||||
| class StackQueue; | ||||
|   | ||||
| @@ -21,6 +21,7 @@ | ||||
| #include "../CPlayerInterface.h" | ||||
| #include "../gui/CGuiHandler.h" | ||||
| #include "../media/ISoundPlayer.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|  | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
| #include "BattleStacksController.h" | ||||
| #include "CreatureAnimation.h" | ||||
|  | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
| #include "../gui/CGuiHandler.h" | ||||
|   | ||||
| @@ -14,6 +14,7 @@ | ||||
| #include "../../lib/CCreatureHandler.h" | ||||
|  | ||||
| #include "../gui/CGuiHandler.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/ColorFilter.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|   | ||||
| @@ -12,7 +12,6 @@ | ||||
| #include "../../lib/FunctionList.h" | ||||
| #include "../../lib/Color.h" | ||||
| #include "../widgets/Images.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IImage.h" | ||||
|  | ||||
| class CIntObject; | ||||
|   | ||||
| @@ -515,9 +515,6 @@ CFlagBox::CFlagBox(const Rect & rect) | ||||
|  | ||||
| 	labelAllies = std::make_shared<CLabel>(0, 0, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[390] + ":"); | ||||
| 	labelEnemies = std::make_shared<CLabel>(133, 0, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[391] + ":"); | ||||
|  | ||||
| 	iconsTeamFlags = GH.renderHandler().loadAnimation(AnimationPath::builtin("ITGFLAGS.DEF")); | ||||
| 	iconsTeamFlags->preload(); | ||||
| } | ||||
|  | ||||
| void CFlagBox::recreate() | ||||
| @@ -529,7 +526,7 @@ void CFlagBox::recreate() | ||||
| 	const int enemiesX = 5 + 133 + (int)labelEnemies->getWidth(); | ||||
| 	for(auto i = CSH->si->playerInfos.cbegin(); i != CSH->si->playerInfos.cend(); i++) | ||||
| 	{ | ||||
| 		auto flag = std::make_shared<CAnimImage>(iconsTeamFlags, i->first.getNum(), 0); | ||||
| 		auto flag = std::make_shared<CAnimImage>(AnimationPath::builtin("ITGFLAGS.DEF"), i->first.getNum(), 0); | ||||
| 		if(i->first == CSH->myFirstColor() || CSH->getPlayerTeamId(i->first) == CSH->getPlayerTeamId(CSH->myFirstColor())) | ||||
| 		{ | ||||
| 			flag->moveTo(Point(pos.x + alliesX + (int)flagsAllies.size()*flag->pos.w, pos.y)); | ||||
| @@ -546,10 +543,10 @@ void CFlagBox::recreate() | ||||
| void CFlagBox::showPopupWindow(const Point & cursorPosition) | ||||
| { | ||||
| 	if(SEL->getMapInfo()) | ||||
| 		GH.windows().createAndPushWindow<CFlagBoxTooltipBox>(iconsTeamFlags); | ||||
| 		GH.windows().createAndPushWindow<CFlagBoxTooltipBox>(); | ||||
| } | ||||
|  | ||||
| CFlagBox::CFlagBoxTooltipBox::CFlagBoxTooltipBox(std::shared_ptr<CAnimation> icons) | ||||
| CFlagBox::CFlagBoxTooltipBox::CFlagBoxTooltipBox() | ||||
| 	: CWindowObject(BORDERED | RCLICK_POPUP | SHADOW_DISABLED, ImagePath::builtin("DIBOXBCK")) | ||||
| { | ||||
| 	OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE; | ||||
| @@ -577,7 +574,7 @@ CFlagBox::CFlagBoxTooltipBox::CFlagBoxTooltipBox(std::shared_ptr<CAnimation> ico | ||||
| 		int curx = 128 - 9 * team.size(); | ||||
| 		for(const auto & player : team) | ||||
| 		{ | ||||
| 			iconsFlags.push_back(std::make_shared<CAnimImage>(icons, player, 0, curx, 75 + 50 * curIdx)); | ||||
| 			iconsFlags.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("ITGFLAGS.DEF"), player, 0, curx, 75 + 50 * curIdx)); | ||||
| 			curx += 18; | ||||
| 		} | ||||
| 		++curIdx; | ||||
|   | ||||
| @@ -174,7 +174,6 @@ public: | ||||
|  | ||||
| class CFlagBox : public CIntObject | ||||
| { | ||||
| 	std::shared_ptr<CAnimation> iconsTeamFlags; | ||||
| 	std::shared_ptr<CLabel> labelAllies; | ||||
| 	std::shared_ptr<CLabel> labelEnemies; | ||||
| 	std::vector<std::shared_ptr<CAnimImage>> flagsAllies; | ||||
| @@ -192,7 +191,7 @@ public: | ||||
| 		std::shared_ptr<CLabelGroup> labelGroupTeams; | ||||
| 		std::vector<std::shared_ptr<CAnimImage>> iconsFlags; | ||||
| 	public: | ||||
| 		CFlagBoxTooltipBox(std::shared_ptr<CAnimation> icons); | ||||
| 		CFlagBoxTooltipBox(); | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -20,6 +20,7 @@ class CSlider; | ||||
| class CLabel; | ||||
| class CPicture; | ||||
| class IImage; | ||||
| class CAnimation; | ||||
|  | ||||
| enum ESortBy | ||||
| { | ||||
|   | ||||
| @@ -24,7 +24,6 @@ class CGStatusBar; | ||||
| class CTextBox; | ||||
| class CTabbedInt; | ||||
| class CAnimImage; | ||||
| class CAnimation; | ||||
| class CButton; | ||||
| class CFilledTexture; | ||||
| class CLabel; | ||||
|   | ||||
| @@ -28,7 +28,6 @@ class JsonNode; | ||||
| VCMI_LIB_NAMESPACE_END | ||||
|  | ||||
| struct SDL_Surface; | ||||
| class CAnimation; | ||||
| class IFont; | ||||
|  | ||||
| /// Handles fonts, hero images, town images, various graphics | ||||
|   | ||||
| @@ -9,7 +9,6 @@ | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| class CAnimation; | ||||
| class IImage; | ||||
| struct SDL_Surface; | ||||
| struct SDL_Texture; | ||||
|   | ||||
| @@ -9,7 +9,6 @@ | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| class CAnimation; | ||||
| class IImage; | ||||
| struct SDL_Surface; | ||||
| struct SDL_Texture; | ||||
|   | ||||
| @@ -24,7 +24,6 @@ | ||||
| #include "../gui/InterfaceObjectConfigurable.h" | ||||
| #include "../media/ISoundPlayer.h" | ||||
| #include "../windows/InfoWindows.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|  | ||||
|   | ||||
| @@ -111,18 +111,18 @@ void CPicture::colorize(PlayerColor player) | ||||
| 	bg->playerColored(player); | ||||
| } | ||||
|  | ||||
| CFilledTexture::CFilledTexture(const ImagePath & imageName, Rect position): | ||||
|     CIntObject(0, position.topLeft()), | ||||
| 	texture(GH.renderHandler().loadImage(imageName)) | ||||
| CFilledTexture::CFilledTexture(const ImagePath & imageName, Rect position) | ||||
| 	: CIntObject(0, position.topLeft()) | ||||
| 	, texture(GH.renderHandler().loadImage(imageName)) | ||||
| { | ||||
| 	pos.w = position.w; | ||||
| 	pos.h = position.h; | ||||
| 	imageArea = Rect(Point(), texture->dimensions()); | ||||
| } | ||||
|  | ||||
| CFilledTexture::CFilledTexture(std::shared_ptr<IImage> image, Rect position, Rect imageArea) | ||||
| CFilledTexture::CFilledTexture(const ImagePath & imageName, Rect position, Rect imageArea) | ||||
| 	: CIntObject(0, position.topLeft()) | ||||
| 	, texture(image) | ||||
| 	, texture(GH.renderHandler().loadImage(imageName)) | ||||
| 	, imageArea(imageArea) | ||||
| { | ||||
| 	pos.w = position.w; | ||||
| @@ -191,8 +191,8 @@ CAnimImage::CAnimImage(std::shared_ptr<CAnimation> Anim, size_t Frame, size_t Gr | ||||
| 	init(); | ||||
| } | ||||
|  | ||||
| CAnimImage::CAnimImage(std::shared_ptr<CAnimation> Anim, size_t Frame, Rect targetPos, size_t Group, ui8 Flags): | ||||
| 	anim(Anim), | ||||
| CAnimImage::CAnimImage(const AnimationPath & name, size_t Frame, Rect targetPos, size_t Group, ui8 Flags): | ||||
| 	anim(GH.renderHandler().loadAnimation(name)), | ||||
| 	frame(Frame), | ||||
| 	group(Group), | ||||
| 	flags(Flags), | ||||
|   | ||||
| @@ -68,8 +68,8 @@ protected: | ||||
| 	Rect imageArea; | ||||
|  | ||||
| public: | ||||
| 	CFilledTexture(const ImagePath & imageName, Rect position, Rect imageArea); | ||||
| 	CFilledTexture(const ImagePath & imageName, Rect position); | ||||
| 	CFilledTexture(std::shared_ptr<IImage> image, Rect position, Rect imageArea); | ||||
|  | ||||
| 	void showAll(Canvas & to) override; | ||||
| }; | ||||
| @@ -104,7 +104,7 @@ public: | ||||
|  | ||||
| 	CAnimImage(const AnimationPath & name, size_t Frame, size_t Group=0, int x=0, int y=0, ui8 Flags=0); | ||||
| 	CAnimImage(std::shared_ptr<CAnimation> Anim, size_t Frame, size_t Group=0, int x=0, int y=0, ui8 Flags=0); | ||||
| 	CAnimImage(std::shared_ptr<CAnimation> Anim, size_t Frame, Rect targetPos, size_t Group=0, ui8 Flags=0); | ||||
| 	CAnimImage(const AnimationPath & name, size_t Frame, Rect targetPos, size_t Group=0, ui8 Flags=0); | ||||
| 	~CAnimImage(); | ||||
|  | ||||
| 	/// size of animation | ||||
|   | ||||
| @@ -18,7 +18,6 @@ VCMI_LIB_NAMESPACE_END | ||||
| class CAnimImage; | ||||
| class CSlider; | ||||
| class CLabel; | ||||
| class CAnimation; | ||||
|  | ||||
| /// Used as base for Tabs and List classes | ||||
| class CObjectList : public CIntObject | ||||
|   | ||||
| @@ -26,7 +26,6 @@ | ||||
| #include "../widgets/TextControls.h" | ||||
|  | ||||
| #include "../render/IRenderHandler.h" | ||||
| #include "../render/CAnimation.h" | ||||
|  | ||||
| #include "../../CCallback.h" | ||||
|  | ||||
| @@ -66,17 +65,12 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2, | ||||
| 	titles[0] = std::make_shared<CLabel>(147, 25, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, genTitle(heroInst[0])); | ||||
| 	titles[1] = std::make_shared<CLabel>(653, 25, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, genTitle(heroInst[1])); | ||||
|  | ||||
| 	auto PSKIL32 = GH.renderHandler().loadAnimation(AnimationPath::builtin("PSKIL32")); | ||||
| 	PSKIL32->preload(); | ||||
|  | ||||
| 	auto SECSK32 = GH.renderHandler().loadAnimation(AnimationPath::builtin("SECSK32")); | ||||
|  | ||||
| 	for(int g = 0; g < 4; ++g) | ||||
| 	{ | ||||
| 		if (qeLayout) | ||||
| 			primSkillImages.push_back(std::make_shared<CAnimImage>(PSKIL32, g, Rect(389, 12 + 26 * g, 22, 22))); | ||||
| 			primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL32"), g, Rect(389, 12 + 26 * g, 22, 22))); | ||||
| 		else | ||||
| 			primSkillImages.push_back(std::make_shared<CAnimImage>(PSKIL32, g, 0, 385, 19 + 36 * g)); | ||||
| 			primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL32"), g, 0, 385, 19 + 36 * g)); | ||||
| 	} | ||||
|  | ||||
| 	for(int leftRight : {0, 1}) | ||||
| @@ -88,14 +82,14 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2, | ||||
|  | ||||
|  | ||||
| 		for(int m=0; m < hero->secSkills.size(); ++m) | ||||
| 			secSkillIcons[leftRight].push_back(std::make_shared<CAnimImage>(SECSK32, 0, 0, 32 + 36 * m + 454 * leftRight, qeLayout ? 83 : 88)); | ||||
| 			secSkillIcons[leftRight].push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("SECSK32"), 0, 0, 32 + 36 * m + 454 * leftRight, qeLayout ? 83 : 88)); | ||||
|  | ||||
| 		specImages[leftRight] = std::make_shared<CAnimImage>(AnimationPath::builtin("UN32"), hero->type->imageIndex, 0, 67 + 490 * leftRight, qeLayout ? 41 : 45); | ||||
|  | ||||
| 		expImages[leftRight] = std::make_shared<CAnimImage>(PSKIL32, 4, 0, 103 + 490 * leftRight, qeLayout ? 41 : 45); | ||||
| 		expImages[leftRight] = std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL32"), 4, 0, 103 + 490 * leftRight, qeLayout ? 41 : 45); | ||||
| 		expValues[leftRight] = std::make_shared<CLabel>(119 + 490 * leftRight, qeLayout ? 66 : 71, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE); | ||||
|  | ||||
| 		manaImages[leftRight] = std::make_shared<CAnimImage>(PSKIL32, 5, 0, 139 + 490 * leftRight, qeLayout ? 41 : 45); | ||||
| 		manaImages[leftRight] = std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL32"), 5, 0, 139 + 490 * leftRight, qeLayout ? 41 : 45); | ||||
| 		manaValues[leftRight] = std::make_shared<CLabel>(155 + 490 * leftRight, qeLayout ? 66 : 71, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE); | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -224,12 +224,12 @@ void CHeroOverview::genControls() | ||||
|         { | ||||
|             if((*CGI->heroh)[heroIdx]->haveSpellBook) | ||||
|             { | ||||
|                 imageSpells.push_back(std::make_shared<CAnimImage>(GH.renderHandler().loadAnimation(AnimationPath::builtin("ARTIFACT")), 0, Rect(302 + (292 / 2) + 2 * borderOffset, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset), 32, 32), 0)); | ||||
|                 imageSpells.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("ARTIFACT"), 0, Rect(302 + (292 / 2) + 2 * borderOffset, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset), 32, 32), 0)); | ||||
|             } | ||||
|             i++; | ||||
|         } | ||||
|  | ||||
|         imageSpells.push_back(std::make_shared<CAnimImage>(GH.renderHandler().loadAnimation(AnimationPath::builtin("SPELLBON")), (*CGI->spellh)[spell]->getIconIndex(), Rect(302 + (292 / 2) + 2 * borderOffset, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset), 32, 32), 0)); | ||||
|         imageSpells.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("SPELLBON"), (*CGI->spellh)[spell]->getIconIndex(), Rect(302 + (292 / 2) + 2 * borderOffset, 7 * borderOffset + yOffset + 186 + i * (32 + borderOffset), 32, 32), 0)); | ||||
|         labelSpellsNames.push_back(std::make_shared<CLabel>(302 + (292 / 2) + 3 * borderOffset + 32 + borderOffset, 8 * borderOffset + yOffset + 186 + i * (32 + borderOffset) + 3, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, (*CGI->spellh)[spell]->getNameTranslated())); | ||||
|         i++; | ||||
|     } | ||||
|   | ||||
| @@ -28,7 +28,6 @@ | ||||
| #include "../widgets/CGarrisonInt.h" | ||||
| #include "../widgets/TextControls.h" | ||||
| #include "../widgets/Buttons.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|  | ||||
| #include "../../CCallback.h" | ||||
| @@ -131,14 +130,12 @@ CHeroWindow::CHeroWindow(const CGHeroInstance * hero) | ||||
| 		primSkillValues.push_back(value); | ||||
| 	} | ||||
|  | ||||
| 	auto primSkills = GH.renderHandler().loadAnimation(AnimationPath::builtin("PSKIL42")); | ||||
| 	primSkills->preload(); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 0, 0, 32, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 1, 0, 102, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 2, 0, 172, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 3, 0, 162, 230)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 4, 0, 20, 230)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(primSkills, 5, 0, 242, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 0, 0, 32, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 1, 0, 102, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 2, 0, 172, 111)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 3, 0, 162, 230)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 4, 0, 20, 230)); | ||||
| 	primSkillImages.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PSKIL42"), 5, 0, 242, 111)); | ||||
|  | ||||
| 	specImage = std::make_shared<CAnimImage>(AnimationPath::builtin("UN44"), 0, 0, 18, 180); | ||||
| 	specArea = std::make_shared<LRClickableAreaWText>(Rect(18, 180, 136, 42), CGI->generaltexth->heroscrn[27]); | ||||
|   | ||||
| @@ -20,7 +20,6 @@ | ||||
| #include "../widgets/TextControls.h" | ||||
| #include "../windows/GUIClasses.h" | ||||
| #include "../windows/InfoWindows.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/IImage.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
|   | ||||
| @@ -30,7 +30,6 @@ | ||||
| #include "../widgets/CTextInput.h" | ||||
| #include "../widgets/TextControls.h" | ||||
| #include "../adventureMap/AdventureMapInterface.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
| #include "../render/IImage.h" | ||||
| #include "../render/IImageLoader.h" | ||||
| @@ -151,18 +150,9 @@ CSpellWindow::CSpellWindow(const CGHeroInstance * _myHero, CPlayerInterface * _m | ||||
| 	leftCorner = std::make_shared<CPicture>(ImagePath::builtin("SpelTrnL.bmp"), 97 + offL, 77 + offT); | ||||
| 	rightCorner = std::make_shared<CPicture>(ImagePath::builtin("SpelTrnR.bmp"), 487 + offR, 72 + offT); | ||||
|  | ||||
| 	spellIcons = GH.renderHandler().loadAnimation(AnimationPath::builtin("Spells")); | ||||
|  | ||||
| 	schoolTab = std::make_shared<CAnimImage>(AnimationPath::builtin("SpelTab"), selectedTab, 0, 524 + offR, 88); | ||||
| 	schoolPicture = std::make_shared<CAnimImage>(AnimationPath::builtin("Schools"), 0, 0, 117 + offL, 74 + offT); | ||||
|  | ||||
| 	schoolBorders[0] = GH.renderHandler().loadAnimation(AnimationPath::builtin("SplevA.def")); | ||||
| 	schoolBorders[1] = GH.renderHandler().loadAnimation(AnimationPath::builtin("SplevF.def")); | ||||
| 	schoolBorders[2] = GH.renderHandler().loadAnimation(AnimationPath::builtin("SplevW.def")); | ||||
| 	schoolBorders[3] = GH.renderHandler().loadAnimation(AnimationPath::builtin("SplevE.def")); | ||||
|  | ||||
| 	for(auto item : schoolBorders) | ||||
| 		item->preload(); | ||||
| 	mana = std::make_shared<CLabel>(435 + (isBigSpellbook ? 159 : 0), 426 + offB, FONT_SMALL, ETextAlignment::CENTER, Colors::YELLOW, std::to_string(myHero->mana)); | ||||
|  | ||||
| 	if(isBigSpellbook) | ||||
| @@ -595,7 +585,7 @@ CSpellWindow::SpellArea::SpellArea(Rect pos, CSpellWindow * owner) | ||||
|  | ||||
| 	OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE); | ||||
|  | ||||
| 	image = std::make_shared<CAnimImage>(owner->spellIcons, 0, 0); | ||||
| 	image = std::make_shared<CAnimImage>(AnimationPath::builtin("Spells"), 0, 0); | ||||
| 	image->visible = false; | ||||
|  | ||||
| 	name = std::make_shared<CLabel>(39, 70, FONT_TINY, ETextAlignment::CENTER); | ||||
| @@ -744,14 +734,22 @@ void CSpellWindow::SpellArea::setSpell(const CSpell * spell) | ||||
|  | ||||
| 		{ | ||||
| 			OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE); | ||||
|  | ||||
| 			static const std::array schoolBorders = { | ||||
| 				AnimationPath::builtin("SplevA.def"), | ||||
| 				AnimationPath::builtin("SplevF.def"), | ||||
| 				AnimationPath::builtin("SplevW.def"), | ||||
| 				AnimationPath::builtin("SplevE.def") | ||||
| 			}; | ||||
|  | ||||
| 			schoolBorder.reset(); | ||||
| 			if (owner->selectedTab >= 4) | ||||
| 			{ | ||||
| 				if (whichSchool.getNum() != SpellSchool()) | ||||
| 					schoolBorder = std::make_shared<CAnimImage>(owner->schoolBorders.at(whichSchool.getNum()), schoolLevel); | ||||
| 					schoolBorder = std::make_shared<CAnimImage>(schoolBorders.at(whichSchool.getNum()), schoolLevel); | ||||
| 			} | ||||
| 			else | ||||
| 				schoolBorder = std::make_shared<CAnimImage>(owner->schoolBorders.at(owner->selectedTab), schoolLevel); | ||||
| 				schoolBorder = std::make_shared<CAnimImage>(schoolBorders.at(owner->selectedTab), schoolLevel); | ||||
| 		} | ||||
|  | ||||
| 		ColorRGBA firstLineColor, secondLineColor; | ||||
|   | ||||
| @@ -19,7 +19,6 @@ class CSpell; | ||||
| VCMI_LIB_NAMESPACE_END | ||||
|  | ||||
| class IImage; | ||||
| class CAnimation; | ||||
| class CAnimImage; | ||||
| class CPicture; | ||||
| class CLabel; | ||||
| @@ -67,9 +66,6 @@ class CSpellWindow : public CWindowObject | ||||
| 		InteractiveArea(const Rect &myRect, std::function<void()> funcL, int helpTextId, CSpellWindow * _owner); | ||||
| 	}; | ||||
|  | ||||
| 	std::shared_ptr<CAnimation> spellIcons; | ||||
| 	std::array<std::shared_ptr<CAnimation>, 4> schoolBorders; //[0]: air, [1]: fire, [2]: water, [3]: earth | ||||
|  | ||||
| 	std::shared_ptr<CPicture> leftCorner; | ||||
| 	std::shared_ptr<CPicture> rightCorner; | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,6 @@ | ||||
| #include "../widgets/VideoWidget.h" | ||||
|  | ||||
| #include "../render/Canvas.h" | ||||
| #include "../render/CAnimation.h" | ||||
| #include "../render/IRenderHandler.h" | ||||
| #include "../render/IImage.h" | ||||
|  | ||||
| @@ -892,8 +891,13 @@ CUniversityWindow::CItem::CItem(CUniversityWindow * _parent, int _ID, int X, int | ||||
| 	pos.x += X; | ||||
| 	pos.y += Y; | ||||
|  | ||||
| 	topBar = std::make_shared<CAnimImage>(parent->bars, 0, 0, -28, -22); | ||||
| 	bottomBar = std::make_shared<CAnimImage>(parent->bars, 0, 0, -28, 48); | ||||
| 	// TODO: restore | ||||
| 	//bars->setCustom("UNIVRED", 0, 0); | ||||
| 	//bars->setCustom("UNIVGOLD", 1, 0); | ||||
| 	//bars->setCustom("UNIVGREN", 2, 0); | ||||
|  | ||||
| 	topBar = std::make_shared<CPicture>(ImagePath::builtin("UNIVRED"), Point(-28, -22)); | ||||
| 	bottomBar = std::make_shared<CPicture>(ImagePath::builtin("UNIVRED"), Point(-28, 48)); | ||||
|  | ||||
| 	icon = std::make_shared<CAnimImage>(AnimationPath::builtin("SECSKILL"), _ID * 3 + 3, 0); | ||||
|  | ||||
| @@ -932,16 +936,6 @@ int CUniversityWindow::CItem::state() | ||||
| 	return 2; | ||||
| } | ||||
|  | ||||
| void CUniversityWindow::CItem::showAll(Canvas & to) | ||||
| { | ||||
| 	//TODO: update when state actually changes | ||||
| 	auto stateIndex = state(); | ||||
| 	topBar->setFrame(stateIndex); | ||||
| 	bottomBar->setFrame(stateIndex); | ||||
|  | ||||
| 	CIntObject::showAll(to); | ||||
| } | ||||
|  | ||||
| CUniversityWindow::CUniversityWindow(const CGHeroInstance * _hero, const IMarket * _market, const std::function<void()> & onWindowClosed) | ||||
| 	: CWindowObject(PLAYER_COLORED, ImagePath::builtin("UNIVERS1")), | ||||
| 	hero(_hero), | ||||
| @@ -950,12 +944,7 @@ CUniversityWindow::CUniversityWindow(const CGHeroInstance * _hero, const IMarket | ||||
| { | ||||
| 	OBJECT_CONSTRUCTION_CAPTURING(255-DISPOSE); | ||||
|  | ||||
| 	bars = GH.renderHandler().createAnimation(); | ||||
| 	bars->setCustom("UNIVRED", 0, 0); | ||||
| 	bars->setCustom("UNIVGOLD", 1, 0); | ||||
| 	bars->setCustom("UNIVGREN", 2, 0); | ||||
| 	bars->preload(); | ||||
| 	 | ||||
|  | ||||
| 	std::string titleStr = CGI->generaltexth->allTexts[602]; | ||||
| 	std::string speechStr = CGI->generaltexth->allTexts[603]; | ||||
|  | ||||
| @@ -1331,18 +1320,12 @@ CThievesGuildWindow::CThievesGuildWindow(const CGObjectInstance * _owner): | ||||
| 		rowHeaders.push_back(std::make_shared<CLabel>(135, y, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, text)); | ||||
| 	} | ||||
|  | ||||
| 	auto PRSTRIPS = GH.renderHandler().loadAnimation(AnimationPath::builtin("PRSTRIPS")); | ||||
| 	PRSTRIPS->preload(); | ||||
|  | ||||
| 	for(int g=1; g<tgi.playerColors.size(); ++g) | ||||
| 		columnBackgrounds.push_back(std::make_shared<CAnimImage>(PRSTRIPS, g-1, 0, 250 + 66*g, 7)); | ||||
| 		columnBackgrounds.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("PRSTRIPS"), g-1, 0, 250 + 66*g, 7)); | ||||
|  | ||||
| 	for(int g=0; g<tgi.playerColors.size(); ++g) | ||||
| 		columnHeaders.push_back(std::make_shared<CLabel>(283 + 66*g, 24, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->jktexts[16+g])); | ||||
|  | ||||
| 	auto itgflags = GH.renderHandler().loadAnimation(AnimationPath::builtin("itgflags")); | ||||
| 	itgflags->preload(); | ||||
|  | ||||
| 	//printing flags | ||||
| 	for(int g = 0; g < std::size(fields); ++g) //by lines | ||||
| 	{ | ||||
| @@ -1366,7 +1349,7 @@ CThievesGuildWindow::CThievesGuildWindow(const CGObjectInstance * _owner): | ||||
| 				int rowStartY = ypos + (j ? 4 : 0); | ||||
|  | ||||
| 				for(size_t i=0; i < rowLength[j]; i++) | ||||
| 					cells.push_back(std::make_shared<CAnimImage>(itgflags, players[i + j*4].getNum(), 0, rowStartX + (int)i*12, rowStartY)); | ||||
| 					cells.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("itgflags"), players[i + j*4].getNum(), 0, rowStartX + (int)i*12, rowStartY)); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -363,15 +363,14 @@ class CUniversityWindow : public CStatusbarWindow | ||||
| 	class CItem : public CIntObject | ||||
| 	{ | ||||
| 		std::shared_ptr<CAnimImage> icon; | ||||
| 		std::shared_ptr<CAnimImage> topBar; | ||||
| 		std::shared_ptr<CAnimImage> bottomBar; | ||||
| 		std::shared_ptr<CPicture> topBar; | ||||
| 		std::shared_ptr<CPicture> bottomBar; | ||||
| 		std::shared_ptr<CLabel> name; | ||||
| 		std::shared_ptr<CLabel> level; | ||||
| 	public: | ||||
| 		SecondarySkill ID;//id of selected skill | ||||
| 		CUniversityWindow * parent; | ||||
|  | ||||
| 		void showAll(Canvas & to) override; | ||||
| 		void clickPressed(const Point & cursorPosition) override; | ||||
| 		void showPopupWindow(const Point & cursorPosition) override; | ||||
| 		void hover(bool on) override; | ||||
| @@ -382,8 +381,6 @@ class CUniversityWindow : public CStatusbarWindow | ||||
| 	const CGHeroInstance * hero; | ||||
| 	const IMarket * market; | ||||
|  | ||||
| 	std::shared_ptr<CAnimation> bars; | ||||
|  | ||||
| 	std::vector<std::shared_ptr<CItem>> items; | ||||
|  | ||||
| 	std::shared_ptr<CButton> cancel; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user