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().