|
BWAPI
|
00001 00002 // Commonly used includes and definitions // 00003 // Candidate for precompiled header // 00005 00006 #ifndef COMMON_H 00007 #define COMMON_H 00008 00009 #define _USE_MATH_DEFINES 00010 #include <cmath> 00011 #include <cstdlib> 00012 #include <cassert> 00013 00014 #include <stdexcept> 00015 #include <string> 00016 #include <sstream> 00017 #include <algorithm> 00018 #include <vector> 00019 #include <deque> 00020 #include <list> 00021 #include <set> 00022 #include <map> 00023 00024 #include <boost/foreach.hpp> 00025 #include <boost/progress.hpp> 00026 #include <boost/timer.hpp> 00027 00028 #define UNIMPLEMENTED throw std::runtime_error(std::string("Unimplemented function ")+ __FUNCTION__ + "() called") 00029 00030 #define DRAW_UALBERTABOT_DEBUG false 00031 00032 #include <BWAPI.h> 00033 #include <BWTA.h> 00034 #include "Logger.h" 00035 00036 typedef std::vector<BWAPI::Unit*> UnitVector; 00037 00038 BWAPI::AIModule * __NewAIModule(); 00039 00040 struct double2 00041 { 00042 double x,y; 00043 00044 double2() {} 00045 double2(double x, double y) : x(x), y(y) {} 00046 double2(const BWAPI::Position & p) : x(p.x()), y(p.y()) {} 00047 00048 operator BWAPI::Position() const { return BWAPI::Position(static_cast<int>(x),static_cast<int>(y)); } 00049 00050 double2 operator + (const double2 & v) const { return double2(x+v.x,y+v.y); } 00051 double2 operator - (const double2 & v) const { return double2(x-v.x,y-v.y); } 00052 double2 operator * (double s) const { return double2(x*s,y*s); } 00053 double2 operator / (double s) const { return double2(x/s,y/s); } 00054 00055 double dot(const double2 & v) const { return x*v.x + y*v.y; } 00056 double lenSq() const { return x*x + y*y; } 00057 double len() const { return sqrt(lenSq()); } 00058 double2 normal() const { return *this / len(); } 00059 00060 void normalise() { double s(len()); x/=s; y/=s; } 00061 void rotate(double angle) 00062 { 00063 angle = angle*M_PI/180.0; 00064 *this = double2(x * cos(angle) - y * sin(angle), y * cos(angle) + x * sin(angle)); 00065 } 00066 }; 00067 00068 #endif
1.7.6.1