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
00022 enum SettingDescTypeLong {
00023
00024 SDT_BEGIN = 0,
00025 SDT_NUMX = 0,
00026 SDT_BOOLX = 1,
00027 SDT_ONEOFMANY = 2,
00028 SDT_MANYOFMANY = 3,
00029 SDT_INTLIST = 4,
00030 SDT_STRING = 5,
00031 SDT_END,
00032
00033 };
00034 typedef SimpleTinyEnumT<SettingDescTypeLong, byte> SettingDescType;
00035
00036
00037 enum SettingGuiFlagLong {
00038
00039
00040 SGF_NONE = 0,
00041 SGF_0ISDISABLED = 1 << 0,
00042 SGF_NOCOMMA = 1 << 1,
00043 SGF_MULTISTRING = 1 << 2,
00044 SGF_NETWORK_ONLY = 1 << 3,
00045 SGF_CURRENCY = 1 << 4,
00046 SGF_NO_NETWORK = 1 << 5,
00047 SGF_NEWGAME_ONLY = 1 << 6,
00048 SGF_SCENEDIT_TOO = 1 << 7,
00049 SGF_PER_COMPANY = 1 << 8,
00050 };
00051 DECLARE_ENUM_AS_BIT_SET(SettingGuiFlagLong);
00052 typedef SimpleTinyEnumT<SettingGuiFlagLong, uint16> SettingGuiFlag;
00053
00054
00055 typedef bool OnChange(int32 var);
00056 typedef int32 OnConvert(const char *value);
00057
00058 struct SettingDescBase {
00059 const char *name;
00060 const void *def;
00061 SettingDescType cmd;
00062 SettingGuiFlag flags;
00063 int32 min;
00064 uint32 max;
00065 int32 interval;
00066 const char *many;
00067 StringID str;
00068 OnChange *proc;
00069 OnConvert *proc_cnvt;
00070 };
00071
00072 struct SettingDesc {
00073 SettingDescBase desc;
00074 SaveLoad save;
00075 };
00076
00077
00078
00079
00080
00081
00082
00083
00084 typedef SettingDesc SettingDescGlobVarList;
00085
00086 const SettingDesc *GetSettingFromName(const char *name, uint *i);
00087 bool SetSettingValue(uint index, int32 value);
00088 bool SetSettingValue(uint index, const char *value);
00089 void SetCompanySetting(uint index, int32 value);
00090
00091 extern VehicleDefaultSettings _old_vds;
00092
00093 #endif