mirror of
https://github.com/vcmi/vcmi.git
synced 2025-05-29 22:57:49 +02:00
Merge pull request #3095 from Laserlicht/team_alignment
fix team alignments
This commit is contained in:
commit
8f2b50a5e2
@ -540,6 +540,7 @@ std::shared_ptr<CFilledTexture> InterfaceObjectConfigurable::buildTexture(const
|
|||||||
{
|
{
|
||||||
auto result = std::make_shared<FilledTexturePlayerColored>(image, rect);
|
auto result = std::make_shared<FilledTexturePlayerColored>(image, rect);
|
||||||
result->playerColored(playerColor);
|
result->playerColored(playerColor);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
return std::make_shared<CFilledTexture>(image, rect);
|
return std::make_shared<CFilledTexture>(image, rect);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ RandomMapTab::RandomMapTab():
|
|||||||
//new callbacks available only from mod
|
//new callbacks available only from mod
|
||||||
addCallback("teamAlignments", [&](int)
|
addCallback("teamAlignments", [&](int)
|
||||||
{
|
{
|
||||||
GH.windows().createAndPushWindow<TeamAlignmentsWidget>(*this);
|
GH.windows().createAndPushWindow<TeamAlignments>(*this);
|
||||||
});
|
});
|
||||||
|
|
||||||
for(auto road : VLC->roadTypeHandler->objects)
|
for(auto road : VLC->roadTypeHandler->objects)
|
||||||
@ -397,6 +397,18 @@ std::vector<int> RandomMapTab::getPossibleMapSizes()
|
|||||||
return {CMapHeader::MAP_SIZE_SMALL, CMapHeader::MAP_SIZE_MIDDLE, CMapHeader::MAP_SIZE_LARGE, CMapHeader::MAP_SIZE_XLARGE, CMapHeader::MAP_SIZE_HUGE, CMapHeader::MAP_SIZE_XHUGE, CMapHeader::MAP_SIZE_GIANT};
|
return {CMapHeader::MAP_SIZE_SMALL, CMapHeader::MAP_SIZE_MIDDLE, CMapHeader::MAP_SIZE_LARGE, CMapHeader::MAP_SIZE_XLARGE, CMapHeader::MAP_SIZE_HUGE, CMapHeader::MAP_SIZE_XHUGE, CMapHeader::MAP_SIZE_GIANT};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TeamAlignments::TeamAlignments(RandomMapTab & randomMapTab)
|
||||||
|
: CWindowObject(BORDERED)
|
||||||
|
{
|
||||||
|
OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
|
||||||
|
|
||||||
|
widget = std::make_shared<TeamAlignmentsWidget>(randomMapTab);
|
||||||
|
pos = widget->pos;
|
||||||
|
|
||||||
|
updateShadow();
|
||||||
|
center();
|
||||||
|
}
|
||||||
|
|
||||||
TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
||||||
InterfaceObjectConfigurable()
|
InterfaceObjectConfigurable()
|
||||||
{
|
{
|
||||||
@ -413,8 +425,8 @@ TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
|||||||
|
|
||||||
pos.w = variables["windowSize"]["x"].Integer() + totalPlayers * variables["cellMargin"]["x"].Integer();
|
pos.w = variables["windowSize"]["x"].Integer() + totalPlayers * variables["cellMargin"]["x"].Integer();
|
||||||
pos.h = variables["windowSize"]["y"].Integer() + totalPlayers * variables["cellMargin"]["y"].Integer();
|
pos.h = variables["windowSize"]["y"].Integer() + totalPlayers * variables["cellMargin"]["y"].Integer();
|
||||||
variables["backgroundRect"]["x"].Integer() = pos.x;
|
variables["backgroundRect"]["x"].Integer() = 0;
|
||||||
variables["backgroundRect"]["y"].Integer() = pos.y;
|
variables["backgroundRect"]["y"].Integer() = 0;
|
||||||
variables["backgroundRect"]["w"].Integer() = pos.w;
|
variables["backgroundRect"]["w"].Integer() = pos.w;
|
||||||
variables["backgroundRect"]["h"].Integer() = pos.h;
|
variables["backgroundRect"]["h"].Integer() = pos.h;
|
||||||
variables["okButtonPosition"]["x"].Integer() = variables["buttonsOffset"]["ok"]["x"].Integer();
|
variables["okButtonPosition"]["x"].Integer() = variables["buttonsOffset"]["ok"]["x"].Integer();
|
||||||
@ -429,14 +441,15 @@ TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
|||||||
randomMapTab.obtainMapGenOptions().setPlayerTeam(PlayerColor(plId), TeamID(players[plId]->getSelected()));
|
randomMapTab.obtainMapGenOptions().setPlayerTeam(PlayerColor(plId), TeamID(players[plId]->getSelected()));
|
||||||
}
|
}
|
||||||
randomMapTab.updateMapInfoByHost();
|
randomMapTab.updateMapInfoByHost();
|
||||||
assert(GH.windows().isTopWindow(this));
|
|
||||||
GH.windows().popWindows(1);
|
for(auto & window : GH.windows().findWindows<TeamAlignments>())
|
||||||
|
GH.windows().popWindow(window);
|
||||||
});
|
});
|
||||||
|
|
||||||
addCallback("cancel", [&](int)
|
addCallback("cancel", [&](int)
|
||||||
{
|
{
|
||||||
assert(GH.windows().isTopWindow(this));
|
for(auto & window : GH.windows().findWindows<TeamAlignments>())
|
||||||
GH.windows().popWindows(1);
|
GH.windows().popWindow(window);
|
||||||
});
|
});
|
||||||
|
|
||||||
build(config);
|
build(config);
|
||||||
|
@ -63,3 +63,10 @@ private:
|
|||||||
std::vector<std::shared_ptr<CToggleGroup>> players;
|
std::vector<std::shared_ptr<CToggleGroup>> players;
|
||||||
std::vector<std::shared_ptr<CIntObject>> placeholders;
|
std::vector<std::shared_ptr<CIntObject>> placeholders;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TeamAlignments: public CWindowObject
|
||||||
|
{
|
||||||
|
std::shared_ptr<TeamAlignmentsWidget> widget;
|
||||||
|
public:
|
||||||
|
TeamAlignments(RandomMapTab & randomMapTab);
|
||||||
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user