|
ProtoBot
|
Combat module of ProtoBot. More...
#include <CombatManager.h>
Public Member Functions | |
| CombatManager (ProtoBotCommander *commanderReference) | |
| void | onStart () |
| void | onFrame () |
| void | onUnitDestroy (BWAPI::Unit unit) |
| bool | assignUnit (BWAPI::Unit unit) |
| Checks through available squads. If squad exists that has space remaining, assigns unit to that squad. If no squad exists OR all squads are full,. | |
| void | attack (BWAPI::Position position) |
| All squads move towards position to attack. | |
| void | defend (BWAPI::Position position) |
| Idle squads are given a position to defend. If any squads are currently attacking, this will override the state. | |
| void | reinforce (BWAPI::Position position) |
| Moves to assist squads that are being attacked nearby. If any squads are currently attacking, this will override the state. | |
| Squad * | addSquad (BWAPI::Unit leaderUnit) |
| void | removeSquad (Squad *squad) |
| BWAPI::Unit | getAvailableUnit () |
| BWAPI::Unit | getAvailableUnit (function< bool(BWAPI::Unit)> filter) |
| bool | detachUnit (BWAPI::Unit unit) |
| Detaches scout unit from squad when ScoutingManager grabs unit. | |
Public Attributes | |
| ProtoBotCommander * | commanderReference |
| BWAPI::Unitset | allUnits |
| vector< Squad * > | Squads = vector<Squad*>() |
| BWAPI::Position | globalAttackPosition = BWAPI::Positions::Invalid |
| bool | combat_debug_on = false |
Static Public Attributes | |
| static unordered_map< BWAPI::Unit, Squad *, unitCMHash > | unitSquadMap |
| static map< SquadState *, BWAPI::Color > | stateColorMap |
| static vector< Squad * > | AttackingSquads |
| static vector< Squad * > | DefendingSquads |
| static vector< Squad * > | ReinforcingSquads |
| static vector< Squad * > | IdleSquads |
Private Member Functions | |
| bool | isAssigned (BWAPI::Unit unit) |
| void | drawDebugInfo () |
Private Attributes | |
| queue< BWAPI::Unit > | detachedObservers |
| Queue of observers from destroyed squads. | |
Combat module of ProtoBot.
CombatManager handles the combat functionality of ProtoBot. It handles unit assignment, squad creation and destruction, as well as strategic actions sent by StrategyManager (attack, defend, reinforce)
Definition at line 26 of file CombatManager.h.
| CombatManager::CombatManager | ( | ProtoBotCommander * | commanderReference | ) |
Definition at line 17 of file CombatManager.cpp.
| Squad * CombatManager::addSquad | ( | BWAPI::Unit | leaderUnit | ) |
Definition at line 128 of file CombatManager.cpp.
| bool CombatManager::assignUnit | ( | BWAPI::Unit | unit | ) |
Checks through available squads. If squad exists that has space remaining, assigns unit to that squad. If no squad exists OR all squads are full,.
| unit |
Definition at line 201 of file CombatManager.cpp.
| void CombatManager::attack | ( | BWAPI::Position | position | ) |
All squads move towards position to attack.
Loops through all existing squads and updates their command positions. \nAlso, sets their state to AttackingState where they will move towards the position while attacking nearby enemies.
| position |
Definition at line 93 of file CombatManager.cpp.
| void CombatManager::defend | ( | BWAPI::Position | position | ) |
Idle squads are given a position to defend. If any squads are currently attacking, this will override the state.
Loops through IdleSquads vector. If any squads in IdleSquads, sets their state machine to the state DefendingState
If any attacking squads, overrides their state machine to DefendingState.
| position |
Definition at line 100 of file CombatManager.cpp.
| bool CombatManager::detachUnit | ( | BWAPI::Unit | unit | ) |
Detaches scout unit from squad when ScoutingManager grabs unit.
ScoutingManager grabs combat scouts from CombatManager. This function is a fallback to ensure that scouts do not remain inside the squad.
| unit |
Definition at line 265 of file CombatManager.cpp.
| BWAPI::Unit CombatManager::getAvailableUnit | ( | ) |
Definition at line 243 of file CombatManager.cpp.
|
private |
Definition at line 234 of file CombatManager.cpp.
| void CombatManager::onFrame | ( | ) |
Definition at line 33 of file CombatManager.cpp.
| void CombatManager::onStart | ( | ) |
Definition at line 22 of file CombatManager.cpp.
| void CombatManager::onUnitDestroy | ( | BWAPI::Unit | unit | ) |
Definition at line 78 of file CombatManager.cpp.
| void CombatManager::reinforce | ( | BWAPI::Position | position | ) |
Moves to assist squads that are being attacked nearby. If any squads are currently attacking, this will override the state.
Affects squads in the DefendingState. If the squad is too far, less than MAX_REINFORCE_DIST (listed in SquadStateTypes.h), the squad will stay in DefendingState Also sends reinforce position to the current reinforcing squads to update their reinforce positions
| position |
Definition at line 112 of file CombatManager.cpp.
| void CombatManager::removeSquad | ( | Squad * | squad | ) |
Definition at line 162 of file CombatManager.cpp.
| BWAPI::Unitset CombatManager::allUnits |
Definition at line 30 of file CombatManager.h.
|
static |
Definition at line 35 of file CombatManager.h.
| bool CombatManager::combat_debug_on = false |
Definition at line 39 of file CombatManager.h.
| ProtoBotCommander* CombatManager::commanderReference |
Definition at line 28 of file CombatManager.h.
|
static |
Definition at line 36 of file CombatManager.h.
|
private |
Queue of observers from destroyed squads.
Observers are not part of squad unit vectors. If a squad is destroyed and the observer is alive, this structure stores that observer.
If a squad needs an observer, it will check detachedObservers for any available observers before requesting one.
Definition at line 93 of file CombatManager.h.
| BWAPI::Position CombatManager::globalAttackPosition = BWAPI::Positions::Invalid |
Definition at line 32 of file CombatManager.h.
|
static |
Definition at line 38 of file CombatManager.h.
|
static |
Definition at line 37 of file CombatManager.h.
Definition at line 31 of file CombatManager.h.
|
static |
Definition at line 5 of file CombatManager.h.
|
static |
Definition at line 33 of file CombatManager.h.