1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-27 22:49:25 +02:00

Merge branch 'resbar' into merg

This commit is contained in:
Laserlicht
2025-09-28 21:11:51 +02:00
committed by GitHub
6 changed files with 82 additions and 18 deletions

View File

@@ -46,18 +46,19 @@ AdventureMapWidget::AdventureMapWidget( std::shared_ptr<AdventureMapShortcuts> s
pos.w = ENGINE->screenDimensions().x;
pos.h = ENGINE->screenDimensions().y;
REGISTER_BUILDER("adventureInfobar", &AdventureMapWidget::buildInfobox );
REGISTER_BUILDER("adventureMapImage", &AdventureMapWidget::buildMapImage );
REGISTER_BUILDER("adventureMapButton", &AdventureMapWidget::buildMapButton );
REGISTER_BUILDER("adventureMapContainer", &AdventureMapWidget::buildMapContainer );
REGISTER_BUILDER("adventureMapGameArea", &AdventureMapWidget::buildMapGameArea );
REGISTER_BUILDER("adventureMapHeroList", &AdventureMapWidget::buildMapHeroList );
REGISTER_BUILDER("adventureMapIcon", &AdventureMapWidget::buildMapIcon );
REGISTER_BUILDER("adventureMapTownList", &AdventureMapWidget::buildMapTownList );
REGISTER_BUILDER("adventureMinimap", &AdventureMapWidget::buildMinimap );
REGISTER_BUILDER("adventureResourceDateBar", &AdventureMapWidget::buildResourceDateBar );
REGISTER_BUILDER("adventureStatusBar", &AdventureMapWidget::buildStatusBar );
REGISTER_BUILDER("adventurePlayerTexture", &AdventureMapWidget::buildTexturePlayerColored);
REGISTER_BUILDER("adventureInfobar", &AdventureMapWidget::buildInfobox );
REGISTER_BUILDER("adventureMapImage", &AdventureMapWidget::buildMapImage );
REGISTER_BUILDER("adventureMapButton", &AdventureMapWidget::buildMapButton );
REGISTER_BUILDER("adventureMapContainer", &AdventureMapWidget::buildMapContainer );
REGISTER_BUILDER("adventureMapGameArea", &AdventureMapWidget::buildMapGameArea );
REGISTER_BUILDER("adventureMapHeroList", &AdventureMapWidget::buildMapHeroList );
REGISTER_BUILDER("adventureMapIcon", &AdventureMapWidget::buildMapIcon );
REGISTER_BUILDER("adventureMapTownList", &AdventureMapWidget::buildMapTownList );
REGISTER_BUILDER("adventureMinimap", &AdventureMapWidget::buildMinimap );
REGISTER_BUILDER("adventureResourceDateBar", &AdventureMapWidget::buildResourceDateBar );
REGISTER_BUILDER("adventureStatusBar", &AdventureMapWidget::buildStatusBar );
REGISTER_BUILDER("adventurePlayerTexture", &AdventureMapWidget::buildTexturePlayerColored);
REGISTER_BUILDER("adventureResourceAdditional", &AdventureMapWidget::buildResourceAdditional );
for (const auto & entry : shortcuts->getShortcuts())
addShortcut(entry.shortcut, entry.callback);
@@ -328,6 +329,44 @@ std::shared_ptr<CIntObject> AdventureMapWidget::buildTexturePlayerColored(const
return std::make_shared<FilledTexturePlayerColored>(area);
}
std::shared_ptr<CIntObject> AdventureMapWidget::buildResourceAdditional(const JsonNode & input)
{
OBJECT_CONSTRUCTION;
logGlobal->debug("Building widget ResourceAdditional");
Rect area = readTargetArea(input["area"]);
auto obj = std::make_shared<CIntObject>();
int remainingSpace = area.w;
int resElementSize = 84;
int fitOffset = 2;
for (int i = 0; i < 15; i++) // TODO: Replace with resources amount
{
if(remainingSpace < resElementSize)
break;
auto resource = GameResID::SULFUR; // TODO: Replace with resource
auto res = std::make_shared<CResDataBar>(ImagePath::builtin("ResBarElement"), area.topRight() + Point(remainingSpace - area.w - resElementSize + fitOffset, 0));
res->setResourcePosition(resource, Point(35, 3));
addWidget("", res);
obj->addChild(res.get());
auto resIcon = std::make_shared<CAnimImage>(AnimationPath::builtin("SMALRES"), GameResID(resource), 0, res->pos.x + 4, res->pos.y + 2);
addWidget("", resIcon);
obj->addChild(resIcon.get());
remainingSpace -= resElementSize;
}
area.w = remainingSpace + fitOffset;
auto texture = std::make_shared<FilledTexturePlayerColored>(area);
addWidget("", texture);
obj->addChild(texture.get());
return obj;
}
std::shared_ptr<CHeroList> AdventureMapWidget::getHeroList()
{
return heroList;
@@ -386,6 +425,8 @@ void AdventureMapWidget::setPlayerChildren(CIntObject * widget, const PlayerColo
if (textureIndexed)
textureIndexed->setPlayerColor(player);
setPlayerChildren(entry, player);
}
redraw();