Skip to content
Snippets Groups Projects
BaseLocation.h 1.73 KiB
Newer Older
  • Learn to ignore specific revisions
  • #pragma once
    
    #include "Common.h"
    #include "DistanceMap.h"
    #include "Unit.h"
    #include <map>
    #include <vector>
    
    class IDABot;
    
    class BaseLocation
    {
    
    David Bergström's avatar
    David Bergström committed
        IDABot &                    m_bot;
    
        DistanceMap                 m_distanceMap;
    
        CCTilePosition              m_depotPosition;
        CCPosition                  m_centerOfResources;
        std::vector<Unit>           m_geysers;
        std::vector<Unit>           m_minerals;
    
        std::vector<CCPosition>     m_mineralPositions;
        std::vector<CCPosition>     m_geyserPositions;
    
        std::map<CCPlayer, bool>    m_isPlayerOccupying;
        std::map<CCPlayer, bool>    m_isPlayerStartLocation;
            
        int                         m_baseID;
        CCPositionType              m_left;
        CCPositionType              m_right;
        CCPositionType              m_top;
        CCPositionType              m_bottom;
        bool                        m_isStartLocation;
        
    public:
    
        BaseLocation(IDABot & bot, int baseID, const std::vector<Unit> & resources);
        
        int getGroundDistance(const CCPosition & pos) const;
        int getGroundDistance(const CCTilePosition & pos) const;
        bool isStartLocation() const;
        bool isPlayerStartLocation(CCPlayer player) const;
        bool isMineralOnly() const;
        bool containsPosition(const CCPosition & pos) const;
        const CCTilePosition & getDepotPosition() const;
        const CCPosition & getPosition() const;
        const std::vector<Unit> & getGeysers() const;
        const std::vector<Unit> & getMinerals() const;
        bool isOccupiedByPlayer(CCPlayer player) const;
        bool isExplored() const;
        bool isInResourceBox(int x, int y) const;
    
        void setPlayerOccupying(CCPlayer player, bool occupying);
    
        const std::vector<CCTilePosition> & getClosestTiles() const;
    
        void draw();
    };