Skip to content
Snippets Groups Projects
WorkerData.h 1.26 KiB
Newer Older
#pragma once
#include "Common.h"
#include "Unit.h"

class IDABot;

namespace WorkerJobs
{
    enum { Minerals, Gas, Build, Combat, Idle, Repair, Move, Scout, None, Num };
}

class WorkerData
{
    IDABot & m_bot;

    std::set<Unit>          m_workers;
    std::set<Unit>          m_depots;
    std::map<int, int>      m_workerJobCount;
    std::map<Unit, int>     m_workerJobMap;
    std::map<Unit, int>     m_refineryWorkerCount;
    std::map<Unit, int>     m_depotWorkerCount;
    std::map<Unit, Unit>    m_workerRefineryMap;
    std::map<Unit, Unit>    m_workerDepotMap;

    void clearPreviousJob(const Unit & unit);

public:

    WorkerData(IDABot & bot);

    void    workerDestroyed(const Unit & unit);
    void    updateAllWorkerData();
    void    updateWorker(const Unit & unit);
    void    setWorkerJob(const Unit & unit, int job, Unit jobUnit = Unit());
    void    drawDepotDebugInfo();
    size_t  getNumWorkers() const;
    int     getWorkerJobCount(int job) const;
    int     getNumAssignedWorkers(const Unit & unit);
    int     getWorkerJob(const Unit & unit) const;
    Unit    getMineralToMine(const Unit & unit) const;
    Unit    getWorkerDepot(const Unit & unit) const;
    const char * getJobCode(const Unit & unit);
    const std::set<Unit> & getWorkers() const;
};