|
BWAPI
|
#include <Behaviour.h>
Public Member Functions | |
| Behaviour () | |
| Behaviour (Unit unit) | |
| Behaviour (Unit unit, const std::list< MicroAction > µActions) | |
| void | addMicroAction (MicroAction action) |
| void | update (const Goal &squadGoal, const UnitGroup &squadUnitGroup) |
| void | onDeleted () |
| void | set (Unit unit) |
| void | set (Unit unit, const std::list< MicroAction > µActions) |
| void | createDefaultActions () |
Private Attributes | |
| Unit | mUnit |
| std::list< MicroAction > | mMicroActions |
Definition at line 7 of file Behaviour.h.
| Behaviour::Behaviour | ( | ) | [inline] |
Definition at line 10 of file Behaviour.h.
{}
| Behaviour::Behaviour | ( | Unit | unit | ) |
Definition at line 12 of file Behaviour.cpp.
References createDefaultActions().
: mUnit(unit) { createDefaultActions(); }

| Behaviour::Behaviour | ( | Unit | unit, |
| const std::list< MicroAction > & | microActions | ||
| ) |
Definition at line 18 of file Behaviour.cpp.
: mUnit(unit) , mMicroActions(microActions) { }
| void Behaviour::addMicroAction | ( | MicroAction | action | ) |
Definition at line 24 of file Behaviour.cpp.
References mMicroActions.
{
mMicroActions.push_front(action);
}
| void Behaviour::createDefaultActions | ( | ) |
Definition at line 69 of file Behaviour.cpp.
References BWAPI::UnitType::isDetector(), mMicroActions, mUnit, BWAPI::UnitTypes::Protoss_Arbiter, BWAPI::UnitTypes::Protoss_Archon, BWAPI::UnitTypes::Protoss_Corsair, BWAPI::UnitTypes::Protoss_High_Templar, BWAPI::UnitTypes::Protoss_Reaver, BWAPI::UnitTypes::Protoss_Zealot, BWAPI::UnitTypes::Terran_Siege_Tank_Siege_Mode, BWAPI::UnitTypes::Terran_Vulture_Spider_Mine, and BWAPI::UnitTypes::Zerg_Scourge.
Referenced by Behaviour(), and set().
{
const BWAPI::UnitType &unitType = mUnit->getType();
std::list<std::set<BWAPI::UnitType>> targetPriorities;
std::set<BWAPI::UnitType> firstTargets;
if(unitType != BWAPI::UnitTypes::Protoss_Zealot)
firstTargets.insert(BWAPI::UnitTypes::Terran_Vulture_Spider_Mine);
if(unitType == BWAPI::UnitTypes::Protoss_Corsair)
firstTargets.insert(BWAPI::UnitTypes::Zerg_Scourge);
if(unitType == BWAPI::UnitTypes::Protoss_Zealot || unitType == BWAPI::UnitTypes::Protoss_Archon)
{
firstTargets.insert(BWAPI::UnitTypes::Terran_Siege_Tank_Siege_Mode);
mMicroActions.push_back(MicroAction(new ArconZealotKillUnDetected(mUnit)));
}
targetPriorities.push_back(firstTargets);
if(unitType.isDetector())
mMicroActions.push_back(MicroAction(new DetectorAction(mUnit)));
if(unitType == BWAPI::UnitTypes::Protoss_Arbiter)
mMicroActions.push_back(MicroAction(new ArbiterAction(mUnit)));
if(unitType == BWAPI::UnitTypes::Protoss_Reaver)
mMicroActions.push_back(MicroAction(new TrainScarabAction(mUnit)));
if(unitType == BWAPI::UnitTypes::Protoss_High_Templar)
mMicroActions.push_back(MicroAction(new PsiStormAction(mUnit)));
if(unitType == BWAPI::UnitTypes::Protoss_Zealot)
mMicroActions.push_back(MicroAction(new MineDragAction(mUnit)));
mMicroActions.push_back(MicroAction(new BasicUnitAction(mUnit, targetPriorities)));
mMicroActions.push_back(MicroAction(new GoalAction(mUnit)));
}

| void Behaviour::onDeleted | ( | ) |
Definition at line 46 of file Behaviour.cpp.
References mMicroActions, and mUnit.
Referenced by ObserverScoutTask::returnUnit().
{
for each(MicroAction action in mMicroActions)
{
action->removeUnit(mUnit);
}
mMicroActions.clear();
mUnit.reset();
}

| void Behaviour::set | ( | Unit | unit | ) |
Definition at line 57 of file Behaviour.cpp.
References createDefaultActions(), and mUnit.
Referenced by ObserverScoutTask::giveUnit().
{
mUnit = unit;
createDefaultActions();
}


| void Behaviour::set | ( | Unit | unit, |
| const std::list< MicroAction > & | microActions | ||
| ) |
Definition at line 63 of file Behaviour.cpp.
References mMicroActions, and mUnit.
{
mUnit = unit;
mMicroActions = microActions;
}
| void Behaviour::update | ( | const Goal & | squadGoal, |
| const UnitGroup & | squadUnitGroup | ||
| ) |
Definition at line 29 of file Behaviour.cpp.
References mMicroActions.
Referenced by ObserverScoutTask::update().
{
for each(MicroAction action in mMicroActions)
{
if(action->update(squadGoal, squadUnitGroup))
break;
}
for(std::list<MicroAction>::iterator it = mMicroActions.begin(); it != mMicroActions.end();)
{
if((*it)->hasEnded())
mMicroActions.erase(it++);
else
++it;
}
}

std::list<MicroAction> Behaviour::mMicroActions [private] |
Definition at line 28 of file Behaviour.h.
Referenced by addMicroAction(), createDefaultActions(), onDeleted(), set(), and update().
Unit Behaviour::mUnit [private] |
Definition at line 26 of file Behaviour.h.
Referenced by createDefaultActions(), onDeleted(), and set().
1.7.6.1