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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
/*
Copyright (c) 2008 Robin Vobruba <hoijui.quaero@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// The structs in this files relate to *Options.lua files
// They are used for Mods and Skirmish AIs for example;
// This file is used (at least) by unitsync and the engine
#ifndef _OPTION_H
#define _OPTION_H
#include "System/FileSystem/VFSModes.h"
#include "LogOutput.h"
#include <string>
#include <vector>
#include <set>
/**
* @brief Available mod/map/ai option types
* @sa GetOptionType
*/
enum OptionType {
opt_error = 0, ///< error
opt_bool = 1, ///< boolean option
opt_list = 2, ///< list option (e.g. combobox)
opt_number = 3, ///< numeric option (e.g. spinner / slider)
opt_string = 4, ///< string option (e.g. textbox)
opt_section = 5 ///< option section (e.g. groupbox)
};
struct OptionListItem {
std::string key;
std::string name;
std::string desc;
};
struct Option {
Option() : typeCode(opt_error) {}
std::string key;
std::string scope;
std::string name;
std::string desc;
std::string section;
std::string style;
std::string type; // "bool", "number", "string", "list", "section"
OptionType typeCode;
bool boolDef;
float numberDef;
float numberMin;
float numberMax;
float numberStep; // aligned to numberDef
std::string stringDef;
int stringMaxLen;
std::string listDef;
std::vector<OptionListItem> list;
};
std::string option_getDefString(const Option& option);
void parseOptions(
std::vector<Option>& options,
const std::string& fileName,
const std::string& fileModes = SPRING_VFS_RAW,
const std::string& accessModes = SPRING_VFS_RAW,
const std::string& mapName = "",
std::set<std::string>* optionsSet = NULL,
CLogSubsystem* logSubsystem = &(CLogOutput::GetDefaultLogSubsystem()));
std::vector<Option> parseOptions(
const std::string& fileName,
const std::string& fileModes = SPRING_VFS_RAW,
const std::string& accessModes = SPRING_VFS_RAW,
const std::string& mapName = "",
std::set<std::string>* optionsSet = NULL,
CLogSubsystem* logSubsystem = &(CLogOutput::GetDefaultLogSubsystem()));
#endif // _OPTION_H
|