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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
// The structs in this file 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 <string>
#include <vector>
#include <set>
#include <cfloat> // for FLT_MAX
#include <climits> // for INT_MAX
/**
* @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)
, boolDef(false)
, numberDef(0.0f)
, numberMin(0.0f)
, numberMax(FLT_MAX)
, numberStep(1.0f)
, stringMaxLen(INT_MAX)
{}
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 option_parseOptions(
std::vector<Option>& options,
const std::string& fileName,
const std::string& fileModes = SPRING_VFS_RAW,
const std::string& accessModes = SPRING_VFS_RAW,
std::set<std::string>* optionsSet = NULL);
void option_parseOptionsLuaString(
std::vector<Option>& options,
const std::string& optionsLuaString,
const std::string& accessModes = SPRING_VFS_RAW,
std::set<std::string>* optionsSet = NULL);
void option_parseMapOptions(
std::vector<Option>& options,
const std::string& fileName,
const std::string& mapName,
const std::string& fileModes = SPRING_VFS_RAW,
const std::string& accessModes = SPRING_VFS_RAW,
std::set<std::string>* optionsSet = NULL);
#endif // _OPTION_H
|