summaryrefslogtreecommitdiffstats
path: root/src/CRSMPackCompatibility.hpp
blob: 9e81bed714822a9b7fd0b136e10f5f67de60bea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once
#include "qt-config/ConfigBase.hpp"

class CRSMPackCompatibility : public ConfigBase
{
public:
    Map(String, String) PackDefaultVersion;
    Map(String, String) PackVersions;
    Map(String, List(String)) ScenarioPacks;
    Map(String, String) ScenarioCmdOptions;
    String PacksDirectory = "Packs";

    CRSMPackCompatibility() : ConfigBase::ConfigBase({
        ConfigVal(PackDefaultVersion),
        ConfigVal(PackVersions),
        ConfigVal(PacksDirectory),
        ConfigVal(ScenarioPacks),
        ConfigVal(ScenarioCmdOptions)
    }) {  }

    void clear();

    QString linkScenarioPacks(const QString& scenario);
    QString getScenarioCmdOptions(const QString& scenario, bool all = true);

    QString read(const QString &fileName, const QString &clonkPath, bool writeDefault = true);

    QString addPackVersion(const QString& packVersion, const QString& pack);
    QString deletePackVersion(const QString& packVersion);
    QString setDefaultPackVersion(const QString& packVersion, const QString& pack);

    QString addScenarioPackVersion(const QString& packVersion, const QString& scenario);
    QString deleteScenarioPackVersion(const QString& packVersion, const QString& scenario);
    QString applyConfig();

    QString setScenarioCmdOptions(const QString& scenario, const QString& options);

protected:
    QString checkPackVersion(const QString& packVersion, const QString& pack);
    QString checkScenarioPack(const QString& packVersion, const QString& scenario);

private:
    QString clonkPath;
};