settings_internal.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef SETTINGS_INTERNAL_H
00013 #define SETTINGS_INTERNAL_H
00014
00015 #include "saveload/saveload.h"
00016 #include "settings_type.h"
00017 #include "strings_type.h"
00018
00023 enum SettingDescTypeLong {
00024
00025 SDT_BEGIN = 0,
00026 SDT_NUMX = 0,
00027 SDT_BOOLX = 1,
00028 SDT_ONEOFMANY = 2,
00029 SDT_MANYOFMANY = 3,
00030 SDT_INTLIST = 4,
00031 SDT_STRING = 5,
00032 SDT_END,
00033
00034 };
00035 typedef SimpleTinyEnumT<SettingDescTypeLong, byte> SettingDescType;
00036
00037
00038 enum SettingGuiFlagLong {
00039
00040
00041 SGF_NONE = 0,
00042 SGF_0ISDISABLED = 1 << 0,
00043 SGF_NOCOMMA = 1 << 1,
00044 SGF_MULTISTRING = 1 << 2,
00045 SGF_NETWORK_ONLY = 1 << 3,
00046 SGF_CURRENCY = 1 << 4,
00047 SGF_NO_NETWORK = 1 << 5,
00048 SGF_NEWGAME_ONLY = 1 << 6,
00049 SGF_SCENEDIT_TOO = 1 << 7,
00050 SGF_PER_COMPANY = 1 << 8,
00051 };
00052 DECLARE_ENUM_AS_BIT_SET(SettingGuiFlagLong);
00053 typedef SimpleTinyEnumT<SettingGuiFlagLong, uint16> SettingGuiFlag;
00054
00055
00056 typedef bool OnChange(int32 var);
00057 typedef int32 OnConvert(const char *value);
00058
00059 struct SettingDescBase {
00060 const char *name;
00061 const void *def;
00062 SettingDescType cmd;
00063 SettingGuiFlag flags;
00064 int32 min;
00065 uint32 max;
00066 int32 interval;
00067 const char *many;
00068 StringID str;
00069 OnChange *proc;
00070 OnConvert *proc_cnvt;
00071 };
00072
00073 struct SettingDesc {
00074 SettingDescBase desc;
00075 SaveLoad save;
00076 };
00077
00078
00079
00080
00081
00082
00083
00084
00085 typedef SettingDesc SettingDescGlobVarList;
00086
00087 const SettingDesc *GetSettingFromName(const char *name, uint *i);
00088 bool SetSettingValue(uint index, int32 value);
00089 bool SetSettingValue(uint index, const char *value);
00090 void SetCompanySetting(uint index, int32 value);
00091
00092 extern VehicleDefaultSettings _old_vds;
00093
00094 #endif