ProtoBot
Loading...
Searching...
No Matches
DefendingState Class Reference

All units move towards assigned chokepoints and defends against any enemy attacks. More...

#include <SquadStateTypes.h>

Inheritance diagram for DefendingState:
SquadState

Public Member Functions

void Enter (Squad *squad)
 Adds squad to DefendingSquads vector in CombatManager.
void Update (Squad *squad)
 Every frame, loops through all units in the squad and "attack-move"s towards defensive position, attacking nearby enemies.
void Exit (Squad *squad)
 Removes squad from DefendingSquads vector in CombatManager and resets currentDefensivePosition to invalid.

Static Public Member Functions

static SquadStategetInstance ()

Private Member Functions

 DefendingState (const DefendingState &)
DefendingStateoperator= (const DefendingState &)

Detailed Description

All units move towards assigned chokepoints and defends against any enemy attacks.

Squads are assigned a defensive position at a chokepoint from the StrategyManager.
Squads move towards the defensive position while attacking any enemies along the way. Once the squad arrives, stays at position and defends.

Definition at line 62 of file SquadStateTypes.h.

Constructor & Destructor Documentation

◆ DefendingState()

DefendingState::DefendingState ( )
inlineprivate

Definition at line 81 of file SquadStateTypes.h.

81{};

Member Function Documentation

◆ Enter()

void DefendingState::Enter ( Squad * squad)
virtual

Adds squad to DefendingSquads vector in CombatManager.

Parameters
squad

Implements SquadState.

Definition at line 69 of file SquadStateTypes.cpp.

69 {
70 CombatManager::DefendingSquads.push_back(squad);
71
72#ifdef DEBUG_STATES
73 cout << "(" << squad->info.squadId << ")" << "Entered DEFENDING state" << endl;
74#endif
75
76 // On enter, move towards defending state
77 // [Was a bug where spamming move to defend was making units walk past enemies w/o attacking]
78 squad->leader->attack(squad->info.currentDefensivePosition);
79 for (BWAPI::Unit& squadMate : squad->info.units)
80 {
81 squadMate->attack(squad->info.currentDefensivePosition);
82 }
83}

◆ Exit()

void DefendingState::Exit ( Squad * squad)
virtual

Removes squad from DefendingSquads vector in CombatManager and resets currentDefensivePosition to invalid.

Parameters
squad

Implements SquadState.

Definition at line 89 of file SquadStateTypes.cpp.

89 {
90 CombatManager::DefendingSquads.erase(remove(CombatManager::DefendingSquads.begin(), CombatManager::DefendingSquads.end(), squad), CombatManager::DefendingSquads.end());
91
92#ifdef DEBUG_STATES
93 cout << "(" << squad->info.squadId << ")" << "Exited DEFENDING state" << endl;
94#endif
95};

◆ getInstance()

SquadState & DefendingState::getInstance ( )
static

Definition at line 98 of file SquadStateTypes.cpp.

99{
100 static DefendingState singleton;
101 return singleton;
102}

◆ operator=()

DefendingState & DefendingState::operator= ( const DefendingState & )
inlineprivate

Definition at line 83 of file SquadStateTypes.h.

83{};

◆ Update()

void DefendingState::Update ( Squad * squad)
virtual

Every frame, loops through all units in the squad and "attack-move"s towards defensive position, attacking nearby enemies.

Parameters
squad

Implements SquadState.

Definition at line 85 of file SquadStateTypes.cpp.

85 {
86 // State for keeping squads at chokepoint. Doesn't do anything per frame.
87}

The documentation for this class was generated from the following files: