BWAPI
|
#include <DropAction.h>
Public Member Functions | |
DropAction (Unit unit) | |
bool | update (const Goal &squadGoal, const UnitGroup &squadUnitGroup) |
bool | hasEnded () |
bool | finishedWithAUnit () |
UnitGroup | getFinishedUnits () |
void | removeUnit (Unit unit) |
void | addUnit (Unit unit) |
bool | requestingExtraUnits () |
std::vector< std::map < BWAPI::UnitType, int > > | getRequestedUnits () |
Private Attributes | |
Unit | mShuttle |
int | mFreeSpace |
Definition at line 6 of file DropAction.h.
DropAction::DropAction | ( | Unit | unit | ) | [inline] |
Definition at line 9 of file DropAction.h.
: GroupMicroActionBaseClass(unit), mShuttle(unit), mFreeSpace(mShuttle->getType().spaceProvided()) {}
void DropAction::addUnit | ( | Unit | unit | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 18 of file DropAction.cpp.
References UnitGroup::insert(), mFreeSpace, and GroupMicroActionBaseClass::mUnits.
{ mUnits.insert(unit); mFreeSpace -= unit->getType().spaceRequired(); }
bool DropAction::finishedWithAUnit | ( | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 65 of file DropAction.cpp.
{ return false; }
UnitGroup DropAction::getFinishedUnits | ( | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 70 of file DropAction.cpp.
{ return UnitGroup(); }
std::vector< std::map< BWAPI::UnitType, int > > DropAction::getRequestedUnits | ( | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 30 of file DropAction.cpp.
References mFreeSpace, BWAPI::UnitTypes::Protoss_Reaver, BWAPI::UnitTypes::Protoss_Zealot, and BWAPI::UnitType::spaceRequired().
{ std::vector<std::map<BWAPI::UnitType, int>> returnData; int maxNumOfBig = mFreeSpace / BWAPI::UnitTypes::Protoss_Reaver.spaceRequired(); int maxNumOfSmall = mFreeSpace / BWAPI::UnitTypes::Protoss_Zealot.spaceRequired(); int currentBig = maxNumOfBig; int currentSmall = 0; for(;;) { std::map<BWAPI::UnitType, int> currentData; currentData[BWAPI::UnitTypes::Protoss_Reaver] = currentBig; currentData[BWAPI::UnitTypes::Protoss_Zealot] = currentSmall; int spaceForSmall = mFreeSpace; spaceForSmall -= currentBig * BWAPI::UnitTypes::Protoss_Reaver.spaceRequired(); spaceForSmall -= currentBig * BWAPI::UnitTypes::Protoss_Zealot.spaceRequired(); if(spaceForSmall >= BWAPI::UnitTypes::Protoss_Zealot.spaceRequired()) ++currentSmall; else if(currentBig == 0) break; else { currentSmall = 0; --currentBig; } } return returnData; }
bool DropAction::hasEnded | ( | ) | [inline, virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 12 of file DropAction.h.
References mShuttle.
{ return !mShuttle; }
void DropAction::removeUnit | ( | Unit | unit | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 8 of file DropAction.cpp.
References UnitGroup::erase(), mFreeSpace, mShuttle, GroupMicroActionBaseClass::mUnits, and StaticUnits::nullunit.
{ mUnits.erase(unit); if(unit != mShuttle) mFreeSpace += unit->getType().spaceRequired(); else mShuttle = StaticUnits::nullunit; }
bool DropAction::requestingExtraUnits | ( | ) | [virtual] |
Reimplemented from GroupMicroActionBaseClass.
Definition at line 25 of file DropAction.cpp.
References mFreeSpace.
{ return mFreeSpace > 0; }
bool DropAction::update | ( | const Goal & | squadGoal, |
const UnitGroup & | squadUnitGroup | ||
) | [virtual] |
Implements GroupMicroActionBaseClass.
Definition at line 3 of file DropAction.cpp.
{ return false; }
int DropAction::mFreeSpace [private] |
Definition at line 25 of file DropAction.h.
Referenced by addUnit(), getRequestedUnits(), removeUnit(), and requestingExtraUnits().
Unit DropAction::mShuttle [private] |
Definition at line 23 of file DropAction.h.
Referenced by hasEnded(), and removeUnit().