1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-15 20:03:15 +02:00

use localstate

This commit is contained in:
Laserlicht
2024-01-31 21:29:04 +01:00
committed by GitHub
parent 9cd6a6838b
commit 9e7fbc3ca2
3 changed files with 19 additions and 12 deletions

View File

@@ -1069,6 +1069,19 @@ void CPlayerInterface::showMapObjectSelectDialog(QueryID askID, const Component
{ {
EVENT_HANDLER_CALLED_BY_CLIENT; EVENT_HANDLER_CALLED_BY_CLIENT;
std::vector<ObjectInstanceID> tmpObjects;
if(objects.size() && dynamic_cast<const CGTownInstance *>(cb->getObj(objects[0])))
{
// sorting towns (like in client)
std::vector <const CGTownInstance*> Towns = LOCPLINT->localState->getOwnedTowns();
for(auto town : Towns)
for(auto item : objects)
if(town == cb->getObj(item))
tmpObjects.push_back(item);
}
else // other object list than town
tmpObjects = objects;
auto selectCallback = [=](int selection) auto selectCallback = [=](int selection)
{ {
cb->sendQueryReply(selection, askID); cb->sendQueryReply(selection, askID);
@@ -1083,9 +1096,9 @@ void CPlayerInterface::showMapObjectSelectDialog(QueryID askID, const Component
const std::string localDescription = description.toString(); const std::string localDescription = description.toString();
std::vector<int> tempList; std::vector<int> tempList;
tempList.reserve(objects.size()); tempList.reserve(tmpObjects.size());
for(auto item : objects) for(auto item : tmpObjects)
tempList.push_back(item.getNum()); tempList.push_back(item.getNum());
CComponent localIconC(icon); CComponent localIconC(icon);
@@ -1094,7 +1107,7 @@ void CPlayerInterface::showMapObjectSelectDialog(QueryID askID, const Component
localIconC.removeChild(localIcon.get(), false); localIconC.removeChild(localIcon.get(), false);
std::vector<std::shared_ptr<IImage>> images; std::vector<std::shared_ptr<IImage>> images;
for(auto & obj : objects) for(auto & obj : tmpObjects)
{ {
if(!settings["general"]["enableUiEnhancements"].Bool()) if(!settings["general"]["enableUiEnhancements"].Bool())
break; break;
@@ -1109,8 +1122,8 @@ void CPlayerInterface::showMapObjectSelectDialog(QueryID askID, const Component
auto wnd = std::make_shared<CObjectListWindow>(tempList, localIcon, localTitle, localDescription, selectCallback, 0, images); auto wnd = std::make_shared<CObjectListWindow>(tempList, localIcon, localTitle, localDescription, selectCallback, 0, images);
wnd->onExit = cancelCallback; wnd->onExit = cancelCallback;
wnd->onPopup = [this, objects](int index) { CRClickPopup::createAndPush(cb->getObj(objects[index]), GH.getCursorPosition()); }; wnd->onPopup = [this, tmpObjects](int index) { CRClickPopup::createAndPush(cb->getObj(tmpObjects[index]), GH.getCursorPosition()); };
wnd->onClicked = [this, objects](int index) { adventureInt->centerOnObject(cb->getObj(objects[index])); GH.windows().totalRedraw(); }; wnd->onClicked = [this, tmpObjects](int index) { adventureInt->centerOnObject(cb->getObj(tmpObjects[index])); GH.windows().totalRedraw(); };
GH.windows().pushWindow(wnd); GH.windows().pushWindow(wnd);
} }

View File

@@ -873,7 +873,7 @@ void CCastleBuildings::enterCastleGate()
return;//only visiting hero can use castle gates return;//only visiting hero can use castle gates
} }
std::vector <int> availableTowns; std::vector <int> availableTowns;
std::vector <const CGTownInstance*> Towns = LOCPLINT->cb->getTownsInfo(true); std::vector <const CGTownInstance*> Towns = LOCPLINT->localState->getOwnedTowns();
for(auto & Town : Towns) for(auto & Town : Towns)
{ {
const CGTownInstance *t = Town; const CGTownInstance *t = Town;

View File

@@ -1723,9 +1723,6 @@ void CObjectListWindow::CItem::showPopupWindow(const Point & cursorPosition)
CObjectListWindow::CObjectListWindow(const std::vector<int> & _items, std::shared_ptr<CIntObject> titleWidget_, std::string _title, std::string _descr, std::function<void(int)> Callback, size_t initialSelection, std::vector<std::shared_ptr<IImage>> images) CObjectListWindow::CObjectListWindow(const std::vector<int> & _items, std::shared_ptr<CIntObject> titleWidget_, std::string _title, std::string _descr, std::function<void(int)> Callback, size_t initialSelection, std::vector<std::shared_ptr<IImage>> images)
: CWindowObject(PLAYER_COLORED, ImagePath::builtin("TPGATE")), : CWindowObject(PLAYER_COLORED, ImagePath::builtin("TPGATE")),
onSelect(Callback), onSelect(Callback),
onExit(nullptr),
onPopup(nullptr),
onClicked(nullptr),
selected(initialSelection), selected(initialSelection),
images(images) images(images)
{ {
@@ -1743,9 +1740,6 @@ CObjectListWindow::CObjectListWindow(const std::vector<int> & _items, std::share
CObjectListWindow::CObjectListWindow(const std::vector<std::string> & _items, std::shared_ptr<CIntObject> titleWidget_, std::string _title, std::string _descr, std::function<void(int)> Callback, size_t initialSelection, std::vector<std::shared_ptr<IImage>> images) CObjectListWindow::CObjectListWindow(const std::vector<std::string> & _items, std::shared_ptr<CIntObject> titleWidget_, std::string _title, std::string _descr, std::function<void(int)> Callback, size_t initialSelection, std::vector<std::shared_ptr<IImage>> images)
: CWindowObject(PLAYER_COLORED, ImagePath::builtin("TPGATE")), : CWindowObject(PLAYER_COLORED, ImagePath::builtin("TPGATE")),
onSelect(Callback), onSelect(Callback),
onExit(nullptr),
onPopup(nullptr),
onClicked(nullptr),
selected(initialSelection), selected(initialSelection),
images(images) images(images)
{ {