BWAPI
UAlbertaBot_src/Projects/UAlbertaBot/Source/Squad.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include "Common.h"
00004 #include "micromanagement/ZealotManager.h"
00005 #include "micromanagement/DarkTemplarManager.h"
00006 #include "micromanagement/DragoonManager.h"
00007 #include "micromanagement/ObserverManager.h"
00008 #include "SquadOrder.h"
00009 #include "DistanceMap.hpp"
00010 #include "StrategyManager.h"
00011 #include "HardCodedInfo.h"
00012 
00013 class ZealotManager;
00014 class DarkTemplarManager;
00015 class DragoonManager;
00016 class ObserverManager;
00017 
00018 class Squad
00019 {
00020         UnitVector                      units;
00021 
00022         void                            updateUnits();
00023         DistanceMap                     distanceMap;
00024 
00025         std::string                     regroupStatus;
00026 
00027         std::map<BWAPI::Unit *, bool> nearEnemy;
00028 
00029         bool                                    squadObserverNear(BWAPI::Position p);
00030 
00031 public:
00032 
00033         int                                     lastRegroup;
00034         SquadOrder                      order;
00035 
00036         ZealotManager           zealotManager;
00037         DarkTemplarManager      darkTemplarManager;
00038         DragoonManager          dragoonManager;
00039         ObserverManager         observerManager;
00040 
00041                                                 Squad(const UnitVector & units, SquadOrder order);
00042                                                 Squad() {}
00043                                                 ~Squad() {}
00044 
00045         BWAPI::Position calcCenter();
00046         BWAPI::Position calcRegroupPosition();
00047 
00048         void                            clear();
00049         void                            update();
00050         
00051         void                            setUnits(const UnitVector & u)  { units = u; }
00052         UnitVector &            getUnits()                                              { return units;} 
00053         SquadOrder &            getSquadOrder()                                 { return order;}
00054         bool                            unitNearEnemy(BWAPI::Unit * unit);
00055         bool                            needsToRegroup();
00056         BWAPI::Unit *           getRegroupUnit();
00057         int                                     squadUnitsNear(BWAPI::Position p);
00058 
00059         BWAPI::Unit *           unitClosestToEnemy();
00060 
00061         void                            setSquadOrder(SquadOrder & so);
00062 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines