#pragma once

#include <string>
#include <vector>

#include "Formula.h"

// REQ-HQ-STATS. HP may become a formula of player level later; for now the
// requirement only lists hp so we store a formula that callers evaluate at 0.
struct HqConfig
{
    std::vector<std::string> surfaceMask;
    Formula hpFormula;
};

// REQ-DEF-PLAYER-FIRE. Stats are formulas of a fixed station level.
struct PlayerStationConfig
{
    std::vector<std::string> surfaceMask;
    int level;
    Formula hpFormula;
    Formula damageFormula;
    Formula rangeFormula;
    Formula fireRateFormula;    // shots per second
    Formula scrapDropFormula;
};

// REQ-PSH-STATION-STATS. Stats are formulas of the station generation level,
// which increments each time a new set is placed.
struct EnemyStationConfig
{
    std::vector<std::string> surfaceMask;
    Formula hpFormula;
    Formula damageFormula;
    Formula rangeFormula;
    Formula fireRateFormula;
    Formula scrapDropFormula;
};

struct StationsConfig
{
    HqConfig hq;
    PlayerStationConfig playerStation;
    EnemyStationConfig enemyStation;
};
