BWAPI
|
00001 #include "Goal.h" 00002 00003 Goal::Goal() 00004 : mGoalType(GoalType::None) 00005 , mActionType(ActionType::None) 00006 , mPosition() 00007 , mUnit() 00008 , mBase() 00009 , mAvoidUnits() 00010 , mEngageUnits() 00011 { 00012 } 00013 00014 Goal::Goal(ActionType type, Position position, UnitGroup engageUnits, UnitGroup avoidUnits) 00015 : mGoalType(GoalType::Position) 00016 , mActionType(type) 00017 , mPosition(position) 00018 , mUnit() 00019 , mBase() 00020 , mAvoidUnits(avoidUnits) 00021 , mEngageUnits(engageUnits) 00022 { 00023 } 00024 00025 Goal::Goal(ActionType type, Unit unit, UnitGroup engageUnits, UnitGroup avoidUnits) 00026 : mGoalType(GoalType::Unit) 00027 , mActionType(type) 00028 , mPosition(BWAPI::Positions::None) 00029 , mUnit(unit) 00030 , mBase() 00031 , mAvoidUnits(avoidUnits) 00032 , mEngageUnits(engageUnits) 00033 { 00034 } 00035 00036 Goal::Goal(ActionType type, UnitGroup engageUnits, UnitGroup avoidUnits) 00037 : mGoalType(GoalType::UnitGroup) 00038 , mActionType(type) 00039 , mPosition(BWAPI::Positions::None) 00040 , mUnit() 00041 , mBase() 00042 , mAvoidUnits(avoidUnits) 00043 , mEngageUnits(engageUnits) 00044 { 00045 } 00046 00047 Goal::Goal(ActionType type, Base base, UnitGroup engageUnits, UnitGroup avoidUnits) 00048 : mGoalType(GoalType::Base) 00049 , mActionType(type) 00050 , mPosition(BWAPI::Positions::None) 00051 , mUnit() 00052 , mBase(base) 00053 , mAvoidUnits(avoidUnits) 00054 , mEngageUnits(engageUnits) 00055 { 00056 } 00057 00058 Position Goal::getPositionForMerge() const 00059 { 00060 switch(mGoalType.underlying()) 00061 { 00062 case GoalType::Position: 00063 return mPosition; 00064 case GoalType::Base: 00065 return mBase->getCenterLocation(); 00066 case GoalType::Unit: 00067 return mUnit->getPosition(); 00068 case GoalType::UnitGroup: 00069 return mEngageUnits.getCenter(); 00070 } 00071 00072 return Position(BWAPI::Broodwar->mapWidth()*16, BWAPI::Broodwar->mapHeight()*16); 00073 }