BWAPI
|
00001 #pragma once 00002 #include "GroupDynamicLocation.h" 00003 #include "../Static/Arbitrary/RectangularLocation.h" 00004 00005 class RectangularGroupDynamicLocation : public GroupDynamicLocation 00006 { 00007 public: 00008 RectangularGroupDynamicLocation(const PersistentUnitGroup* group, int halfAdditionalLengthX, int halfAdditionalLengthY) 00009 : GroupDynamicLocation(group) 00010 , m_halfAdditionalLengthX(halfAdditionalLengthX) 00011 , m_halfAdditionalLengthY(halfAdditionalLengthY) 00012 { 00013 } 00014 00015 RectangularGroupDynamicLocation(const PersistentUnitGroup* group) 00016 : GroupDynamicLocation(group) 00017 , m_halfAdditionalLengthX(DANGER_DISTANCE) 00018 , m_halfAdditionalLengthY(DANGER_DISTANCE) 00019 { 00020 } 00021 00022 virtual bool isInLocation(BWAPI::Position position) const 00023 { 00024 if (m_group->size() == 0) 00025 return false; 00026 else 00027 return RectangularLocation::getBoundingBox<PersistentUnitGroup>(m_group).expand(DANGER_DISTANCE, DANGER_DISTANCE).isInLocation(position); 00028 } 00029 00030 RectangularLocation getRectangularLocation() const 00031 { 00032 return RectangularLocation::getBoundingBox<PersistentUnitGroup>(m_group); 00033 } 00034 00035 RectangularLocation getExpandedRectangularLocation() const 00036 { 00037 return RectangularLocation::getBoundingBox<PersistentUnitGroup>(m_group).expand(DANGER_DISTANCE, DANGER_DISTANCE); 00038 } 00039 protected: 00040 virtual void output(std::ostream& out) const 00041 { 00042 out << "DynamicRectangle(" << m_group->getName() << ", " << m_halfAdditionalLengthX << ", " << m_halfAdditionalLengthY << ")"; 00043 } 00044 00045 const int m_halfAdditionalLengthX; 00046 const int m_halfAdditionalLengthY; 00047 };