Skip to content

Commit

Permalink
Merge pull request #295 from redv/alert_extermination
Browse files Browse the repository at this point in the history
AlertScreen extermination implemented
  • Loading branch information
JonnyH committed Dec 8, 2017
2 parents 68bd6bc + 384e500 commit 55a2834
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 39 deletions.
12 changes: 2 additions & 10 deletions data/forms/city/agentassignment.form
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,13 @@
<imagedepressed>BUTTON_SCROLL_DOWN_DEPRESSED</imagedepressed>
</graphicbutton>
<multilistbox id="AGENT_SELECT_BOX" scrollbarid="AGENT_SELECT_SCROLL">
<position x="16" y="32"/>
<size width="506" height="328"/>
<position x="16" y="25"/>
<size width="506" height="340"/>
<item size="0" spacing="2"/>
<hovercolour r="255" g="255" b="255" a="255"/>
<selcolour r="128" g="180" b="255" a="255"/>
</multilistbox>

<!--multilistbox id="VEHICLE_SELECT_BOX">
<position x="271" y="32"/>
<size width="228" height="328"/>
<item size="0" spacing="2"/>
<hovercolour r="255" g="255" b="255" a="255"/>
<selcolour r="128" g="180" b="255" a="255"/>
</multilistbox-->

<multilistbox id="DRAGGED_AGENT_BOX">
<item size="0" spacing="2"/>
</multilistbox>
Expand Down
44 changes: 27 additions & 17 deletions game/ui/city/alertscreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "framework/event.h"
#include "framework/framework.h"
#include "framework/keycodes.h"
#include "game/state/city/agentmission.h"
#include "game/state/city/building.h"
#include "game/state/city/vehicle.h"
#include "game/state/city/vehiclemission.h"
Expand Down Expand Up @@ -67,28 +68,37 @@ void AlertScreen::eventOccurred(Event *e)
{
if (e->forms().RaisedBy->Name == "BUTTON_EXTERMINATE")
{
// FIXME: Implement selecting agents that will do the mission
if (agentAssignment->currentVehicle)
// send a vehicles fleet
std::list<StateRef<Vehicle>> selectedVehicles(agentAssignment->getSelectedVehicles());
if (!selectedVehicles.empty())
{
StateRef<Vehicle> vehicle = {
state.get(), Vehicle::getId(*state, agentAssignment->currentVehicle)};
// FIXME: Implement sending vehicle to exterminate
LogWarning("Implement sending vehicle %s to exterminate", vehicle.id);
agentAssignment->currentVehicle->setMission(
*state, VehicleMission::gotoBuilding(*state, *agentAssignment->currentVehicle,
{state.get(), building}));
for (auto &vehicle : selectedVehicles)
{
vehicle->setMission(*state, VehicleMission::gotoBuilding(
*state, *vehicle, {state.get(), building}));
}
fw().stageQueueCommand({StageCmd::Command::POP});
return;
}
else

// send an angents group on foot
std::list<StateRef<Agent>> selectedAgents(agentAssignment->getSelectedAgents());
if (!selectedAgents.empty())
{
// FIXME: Implement sending agents to exterminate
fw().stageQueueCommand(
{StageCmd::Command::PUSH,
mksp<MessageBox>(tr("No Agents Selected"),
tr("You need to select the agents you want to become active "
"within the building."),
MessageBox::ButtonOptions::Ok)});
for (auto &agent : selectedAgents)
{
agent->setMission(*state, AgentMission::gotoBuilding(*state, *agent,
{state.get(), building}));
}
fw().stageQueueCommand({StageCmd::Command::POP});
return;
}

fw().stageQueueCommand({StageCmd::Command::PUSH,
mksp<MessageBox>(tr("No Agents Selected"),
tr("You need to select the agents you want to "
"become active within the building."),
MessageBox::ButtonOptions::Ok)});
return;
}
if (e->forms().RaisedBy->Name == "BUTTON_EQUIPAGENT")
Expand Down
29 changes: 17 additions & 12 deletions game/ui/components/agentassignment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ void AgentAssignment::init(sp<Form> form, Vec2<int> location, Vec2<int> size)
auto icon = c->findControl(ControlGenerator::VEHICLE_ICON_NAME);
if (vehicle && icon && c->isPointInsideControlBounds(e, icon))
{
// this->currentVehicle = vehicle;
this->isDragged = false;

auto equipScreen = mksp<VEquipScreen>(this->state);
Expand Down Expand Up @@ -579,11 +578,14 @@ std::list<StateRef<Agent>> AgentAssignment::getSelectedAgents() const
if (auto leftList =
doubleListControl->findControlTyped<MultilistBox>(ControlGenerator::LEFT_LIST_NAME))
{
for (auto &sel : leftList->getSelectedSet())
if (auto agentList = leftList->findControlTyped<MultilistBox>(AGENT_LIST_NAME))
{
if (auto a = sel->getData<Agent>())
for (auto &sel : agentList->getSelectedSet())
{
agentControlSet.insert(a);
if (auto a = sel->getData<Agent>())
{
agentControlSet.insert(a);
}
}
}
}
Expand All @@ -592,16 +594,19 @@ std::list<StateRef<Agent>> AgentAssignment::getSelectedAgents() const
if (auto rightList = doubleListControl->findControlTyped<MultilistBox>(
ControlGenerator::RIGHT_LIST_NAME))
{
for (auto &vehicleControl : rightList->Controls)
if (auto vehicleList = rightList->findControlTyped<MultilistBox>(VEHICLE_LIST_NAME))
{
if (auto agentList =
vehicleControl->findControlTyped<MultilistBox>(AGENT_LIST_NAME))
for (auto &vehicleControl : vehicleList->Controls)
{
for (auto &sel : agentList->getSelectedSet())
if (auto agentList =
vehicleControl->findControlTyped<MultilistBox>(AGENT_LIST_NAME))
{
if (auto a = sel->getData<Agent>())
for (auto &sel : agentList->getSelectedSet())
{
agentControlSet.insert(a);
if (auto a = sel->getData<Agent>())
{
agentControlSet.insert(a);
}
}
}
}
Expand Down Expand Up @@ -636,9 +641,9 @@ std::list<StateRef<Vehicle>> AgentAssignment::getSelectedVehicles() const
if (auto rightList = doubleListControl->findControlTyped<MultilistBox>(
ControlGenerator::RIGHT_LIST_NAME))
{
if (auto vehicletList = rightList->findControlTyped<MultilistBox>(VEHICLE_LIST_NAME))
if (auto vehicleList = rightList->findControlTyped<MultilistBox>(VEHICLE_LIST_NAME))
{
for (auto &sel : vehicletList->getSelectedSet())
for (auto &sel : vehicleList->getSelectedSet())
{
if (auto v = sel->getData<Vehicle>())
{
Expand Down

0 comments on commit 55a2834

Please sign in to comment.