BWAPI
SPAR/AIModule/SparAIModule/DecisionMaking/Layer2Actions/Interface/Actions/Build.h
Go to the documentation of this file.
00001 #pragma once
00002 #include "GroupTacticalAction.h"
00003 #include <vector>
00004 
00005 namespace layer2
00006 {
00007   // Could restrict the choice of builder probes among some probes
00008 
00009   class Build : public virtual GroupTacticalAction
00010   {
00011   public:
00012     Build(unsigned int priority, StaticLocation* location, BWAPI::UnitType buildingType)
00013       : GroupTacticalAction(priority)
00014       , TacticalAction(priority)
00015       , Process(Spar)
00016       , m_location(location)
00017       , m_buildingType(buildingType)
00018     {
00019     }
00020 
00021     virtual std::string getName() const
00022     {
00023       return "Build";
00024     }
00025 
00026     static const TerminationMode TerminatedNoSpace;
00027     static const TerminationMode TerminatedNoWorker;
00028     static const TerminationMode TerminatedBuildingDestroyed;
00029 
00030     DECLARE_EVENT3(OnBuildingConstructed, const Build*, BWAPI::Unit*, PrimitiveLocation*);
00031     //DECLARE_EVENT3(OnBuildingCancelled, const Build*, BWAPI::Unit*, PrimitiveLocation*);
00032     //DECLARE_EVENT3(OnBuildingCancelledNoSpace, const Build*, BWAPI::UnitType, PrimitiveLocation*);
00033     OnBuildingConstructed& getBuildingConstructedEvent() const { return m_buildingConstructedEvent; }
00034     //OnBuildingCancelled& getBuildingCancelledEvent() const { return m_buildingCancelledEvent; }
00035     //OnBuildingCancelledNoSpace& getBuildingCancelledNoSpaceEvent() const { return m_buildingCancelledNoSpaceEvent; }
00036 
00037   protected:
00038     virtual void output(std::ostream& out) const
00039     {
00040       GroupTacticalAction::output(out);
00041 
00042       out << "Build(" << *m_location << ", " << m_buildingType << ")";
00043     }
00044 
00045     StaticLocation* const m_location;
00046     const BWAPI::UnitType m_buildingType;
00047 
00048     // TODO: move to layer 2 implementation?
00049     enum BuildingProgress
00050     {
00051       reserved,
00052       building,
00053       finished
00054     };
00055     std::map<BWAPI::TilePosition,BuildingProgress> m_buildingProgress;
00056 
00057     EVENT(OnBuildingConstructed) m_buildingConstructedEvent;
00058   };
00059 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines