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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
v3f wield_position = v3f(55, -35, 65);
QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.X, 0, 100);
QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Y, -80, 20);
QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Z, 0, 100);
Then you can modify the values at runtime, using the keys
keymap_quicktune_prev
keymap_quicktune_next
keymap_quicktune_dec
keymap_quicktune_inc
Once you have modified the values at runtime and then quit, the game
will print out all the modified values at the end:
Modified quicktune values:
wield_position.X = 60
wield_position.Y = -30
wield_position.Z = 65
The QUICKTUNE macros shouldn't generally be left in committed code.
*/
#pragma once
#include <string>
#include <map>
#include <vector>
enum QuicktuneValueType{
QVT_NONE,
QVT_FLOAT
};
struct QuicktuneValue
{
QuicktuneValueType type = QVT_NONE;
union{
struct{
float current;
float min;
float max;
} value_QVT_FLOAT;
};
bool modified = false;
QuicktuneValue() = default;
std::string getString();
void relativeAdd(float amount);
};
std::vector<std::string> getQuicktuneNames();
QuicktuneValue getQuicktuneValue(const std::string &name);
void setQuicktuneValue(const std::string &name, const QuicktuneValue &val);
void updateQuicktuneValue(const std::string &name, QuicktuneValue &val);
#ifndef NDEBUG
#define QUICKTUNE(type_, var, min_, max_, name){\
QuicktuneValue qv;\
qv.type = type_;\
qv.value_##type_.current = var;\
qv.value_##type_.min = min_;\
qv.value_##type_.max = max_;\
updateQuicktuneValue(name, qv);\
var = qv.value_##type_.current;\
}
#else // NDEBUG
#define QUICKTUNE(type, var, min_, max_, name){}
#endif
#define QUICKTUNE_AUTONAME(type_, var, min_, max_)\
QUICKTUNE(type_, var, min_, max_, #var)
|