BWAPI
Public Member Functions | Private Attributes
Behaviour Class Reference

#include <Behaviour.h>

List of all members.

Public Member Functions

 Behaviour ()
 Behaviour (Unit unit)
 Behaviour (Unit unit, const std::list< MicroAction > &microActions)
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 > &microActions)
void createDefaultActions ()

Private Attributes

Unit mUnit
std::list< MicroActionmMicroActions

Detailed Description

Definition at line 7 of file Behaviour.h.


Constructor & Destructor Documentation

Behaviour::Behaviour ( ) [inline]

Definition at line 10 of file Behaviour.h.

{}

Definition at line 12 of file Behaviour.cpp.

References createDefaultActions().

        : mUnit(unit)
{
        createDefaultActions();
}

Here is the call graph for this function:

Behaviour::Behaviour ( Unit  unit,
const std::list< MicroAction > &  microActions 
)

Definition at line 18 of file Behaviour.cpp.

        : mUnit(unit)
        , mMicroActions(microActions)
{
}

Member Function Documentation

Definition at line 24 of file Behaviour.cpp.

References mMicroActions.

{
        mMicroActions.push_front(action);
}

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)));
}

Here is the call graph for this function:

Here is the caller graph for this function:

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();
}

Here is the caller graph for this function:

void Behaviour::set ( Unit  unit)

Definition at line 57 of file Behaviour.cpp.

References createDefaultActions(), and mUnit.

Referenced by ObserverScoutTask::giveUnit().

{
        mUnit = unit;
        createDefaultActions();
}

Here is the call graph for this function:

Here is the caller graph for this function:

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;
        }
}

Here is the caller graph for this function:


Member Data Documentation

std::list<MicroAction> Behaviour::mMicroActions [private]

Definition at line 28 of file Behaviour.h.

Referenced by addMicroAction(), createDefaultActions(), onDeleted(), set(), and update().

Definition at line 26 of file Behaviour.h.

Referenced by createDefaultActions(), onDeleted(), and set().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines