BWAPI
SPAR/AIModule/SparAIModule/DecisionMaking/Layer3Tactical/Interface/ArmyComposition.h
Go to the documentation of this file.
00001 #pragma once
00002 #include <BWAPI.h>
00003 
00004 class ArmyComposition
00005 {
00006 public:
00007   void addUnlimited(BWAPI::UnitType unitType, size_t nb)
00008   {
00009     m_unlimitedComposition[unitType] += nb;
00010   }
00011 
00012   void addLimited(BWAPI::UnitType unitType, size_t nb)
00013   {
00014     m_limitedComposition[unitType] += nb;
00015   }
00016 
00017   //typedef std::map<BWAPI::UnitType, size_t>::const_iterator const_iterator;
00018   //const_iterator begin() const { return m_unlimitedComposition.begin(); }
00019   //const_iterator end() const { return m_unlimitedComposition.end(); }
00020 
00021   size_t getNbUnlimited(BWAPI::UnitType unitType) const
00022   {
00023     std::map<BWAPI::UnitType, size_t>::const_iterator it = m_unlimitedComposition.find(unitType);
00024     if (it == m_unlimitedComposition.end())
00025       return 0;
00026     else
00027       return it->second;
00028   }
00029   size_t getNbLimited(BWAPI::UnitType unitType) const
00030   {
00031     std::map<BWAPI::UnitType, size_t>::const_iterator it = m_limitedComposition.find(unitType);
00032     if (it == m_limitedComposition.end())
00033       return 0;
00034     else
00035       return it->second;
00036   }
00037 
00038   bool operator==(const ArmyComposition& other) const
00039   {
00040     return m_unlimitedComposition == other.m_unlimitedComposition &&
00041            m_limitedComposition == other.m_limitedComposition;
00042   }
00043   bool operator!=(const ArmyComposition& other) const
00044   {
00045     return m_unlimitedComposition != other.m_unlimitedComposition ||
00046            m_limitedComposition != other.m_limitedComposition;
00047   }
00048   const std::map<BWAPI::UnitType, size_t>& getLimitedComposition() const { return m_limitedComposition; }
00049   const std::map<BWAPI::UnitType, size_t>& getUnlimitedComposition() const { return m_unlimitedComposition; }
00050 
00051 protected:
00052   std::map<BWAPI::UnitType, size_t> m_limitedComposition;
00053   std::map<BWAPI::UnitType, size_t> m_unlimitedComposition;
00054 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines