|
BWAPI
|
#include <Squad.h>

Public Member Functions | |
| Squad () | |
| Squad (const Squad &other) | |
| ~Squad () | |
| Squad & | operator= (const Squad &rhs) |
| void | update () |
| void | draw () |
| void | addAgent (Agent *agent) |
| void | removeAgent (Agent *agent) |
| bool | isAssigned (Agent *agent) |
| AgentSet & | getAgents () |
| Agent * | getLeader () |
| void | setLeader (Agent *agent) |
Private Attributes | |
| AgentSet | agents |
| Agent * | leader |
| Squad::Squad | ( | ) |
| Squad::Squad | ( | const Squad & | other | ) |
| Squad::~Squad | ( | ) |
| void Squad::addAgent | ( | Agent * | agent | ) | [inline] |
Definition at line 25 of file Squad.h.
References agents.
Referenced by CombatManager::addNewAgents(), and setLeader().
{ agents.insert(agent); }

| void Squad::draw | ( | ) |
Definition at line 63 of file Squad.cpp.
References agents, and BWAPI::Broodwar.
{
// Draw a box enclosing my squad
int minX, maxX, minY, maxY;
minX = minY = 999999;
maxX = maxY = -1;
int sumX, sumY;
sumX = sumY = 0;
for (AgentSetIter it = agents.begin(); it != agents.end(); it++)
{
int x = (*it)->getUnit().getPosition().x();
int y = (*it)->getUnit().getPosition().y();
sumX += x;
sumY += y;
minX = min(x, minX);
maxX = max(x, maxX);
minY = min(y, minY);
maxY = max(y, maxY);
}
int x0, y0;
if (agents.size())
{
x0 = sumX / agents.size();
y0 = sumY / agents.size();
Broodwar->drawEllipseMap(x0, y0, maxX-minX, maxY-minY, Colors::Cyan);
}
}
| AgentSet& Squad::getAgents | ( | ) | [inline] |
| Agent* Squad::getLeader | ( | ) | [inline] |
Definition at line 37 of file Squad.h.
References leader.
Referenced by CombatManager::addNewAgents().
{ return leader; }

| bool Squad::isAssigned | ( | Agent * | agent | ) | [inline] |
| void Squad::removeAgent | ( | Agent * | agent | ) | [inline] |
| void Squad::setLeader | ( | Agent * | agent | ) | [inline] |
Definition at line 39 of file Squad.h.
References addAgent(), isAssigned(), and leader.
Referenced by CombatManager::addNewAgents().
{
if( leader == agent )
return;
if( !isAssigned(agent) )
addAgent(agent);
leader = agent;
}


| void Squad::update | ( | ) |
Definition at line 42 of file Squad.cpp.
References agents, AttackState, Agent::getPositionTarget(), Agent::getUnitTarget(), Agent::getUnitTypeTarget(), leader, Agent::setPositionTarget(), Agent::setState(), Agent::setUnitTarget(), and Agent::setUnitTypeTarget().
{
assert(leader != NULL);
// Do what the leader is doing
AgentSetIter it = agents.begin();
AgentSetIter end = agents.end();
for(; it != end; ++it)
{
Agent *agent = *it;
if( agent != leader )
{
// agent->setState(leader->getState());
agent->setState(AttackState);
agent->setPositionTarget(leader->getPositionTarget());
agent->setUnitTarget(leader->getUnitTarget());
agent->setUnitTypeTarget(leader->getUnitTypeTarget());
}
}
}

AgentSet Squad::agents [private] |
Definition at line 12 of file Squad.h.
Referenced by addAgent(), draw(), getAgents(), isAssigned(), operator=(), removeAgent(), update(), and ~Squad().
Agent* Squad::leader [private] |
Definition at line 13 of file Squad.h.
Referenced by getLeader(), operator=(), setLeader(), update(), and ~Squad().
1.7.6.1