BWAPI
Skynet/Skynet/BorderPosition.cpp
Go to the documentation of this file.
00001 #include "BorderPosition.h"
00002 
00003 BorderPosition::BorderPosition()
00004         : mType(PositionType::None)
00005         , mChoke()
00006         , mPosition(BWAPI::Positions::None)
00007         , mPositionSize(0)
00008         , mBase()
00009         , mRegion()
00010 {
00011 }
00012 
00013 BorderPosition::BorderPosition(PositionType type, Chokepoint choke)
00014         : mType(type)
00015         , mChoke(choke)
00016         , mPosition(BWAPI::Positions::None)
00017         , mPositionSize(0)
00018         , mBase()
00019         , mRegion()
00020 {
00021 }
00022 
00023 BorderPosition::BorderPosition(Position position, int size)
00024         : mType(PositionType::Position)
00025         , mChoke()
00026         , mPosition(position)
00027         , mPositionSize(size)
00028         , mBase()
00029         , mRegion()
00030 {
00031 }
00032 
00033 BorderPosition::BorderPosition(Base base)
00034         : mType(PositionType::HoldBase)
00035         , mChoke()
00036         , mPosition(BWAPI::Positions::None)
00037         , mPositionSize(0)
00038         , mBase(base)
00039         , mRegion()
00040 {
00041 }
00042 
00043 BorderPosition::BorderPosition(PositionType type, Region region)
00044         : mType(type)
00045         , mChoke()
00046         , mPosition(BWAPI::Positions::None)
00047         , mPositionSize(0)
00048         , mBase()
00049         , mRegion(region)
00050 {
00051 }
00052 
00053 bool BorderPosition::operator==(const BorderPosition& other) const
00054 {
00055         if(mType == other.mType)
00056         {
00057                 switch(mType.underlying())
00058                 {
00059                 case PositionType::None:
00060                         return true;
00061                 case PositionType::ContainChokepoint:
00062                 case PositionType::ForwardChokepoint:
00063                 case PositionType::EnemyChokepoint:
00064                 case PositionType::DefenseChokepoint:
00065                 case PositionType::SharedChokepoint:
00066                         return mChoke == other.mChoke;
00067                 case PositionType::Position:
00068                         return mPosition == other.mPosition;
00069                 case PositionType::HoldBase:
00070                         return mBase == other.mBase;
00071                 case PositionType::EnemyControlRegion:
00072                 case PositionType::BotControlRegion:
00073                         return mRegion == other.mRegion;
00074                 default:
00075                         return true;
00076                 }
00077         }
00078         else
00079                 return false;
00080 }
00081 
00082 bool BorderPosition::operator<(const BorderPosition& other) const
00083 {
00084         if(mType == other.mType)
00085         {
00086                 switch(mType.underlying())
00087                 {
00088                 case PositionType::None:
00089                         return false;
00090                 case PositionType::ContainChokepoint:
00091                 case PositionType::ForwardChokepoint:
00092                 case PositionType::EnemyChokepoint:
00093                 case PositionType::DefenseChokepoint:
00094                 case PositionType::SharedChokepoint:
00095                         return mChoke < other.mChoke;
00096                 case PositionType::Position:
00097                         return mPosition < other.mPosition;
00098                 case PositionType::HoldBase:
00099                         return mBase < other.mBase;
00100                 case PositionType::EnemyControlRegion:
00101                 case PositionType::BotControlRegion:
00102                         return mRegion < other.mRegion;
00103                 default:
00104                         return false;
00105                 }
00106         }
00107         else
00108                 return mType < other.mType;
00109 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines