forked from DFHack/dfhack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreader.cpp
More file actions
298 lines (291 loc) · 7.45 KB
/
Copy pathreader.cpp
File metadata and controls
298 lines (291 loc) · 7.45 KB
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
#include <map>
#include <iostream>
#include <algorithm>
#include <tinyxml.h>
#include <tinystr.h>
#include <set>
#include <map>
#include <vector>
#include <sstream>
#include <dfhack/DFIntegers.h>
#include <stddef.h>
#include <dfhack/BaseTypes.h>
using namespace DFHack;
using namespace std;
class DF2010_offsets
{
public:
Address WORLD;
struct grp_vector
{
Offset start;
HexValue size_of;
} vector;
struct grp_string
{
HexValue size_of;
} string;
struct grp_name
{
Offset first;
Offset nick;
Offset second_words;
} name;
struct grp_Position
{
Address cursor_xyz;
Address mouse_pos;
Address screen_tiles_pointer;
Address window_dims;
Address window_x;
Address window_y;
Address window_z;
} Position;
struct grp_GUI
{
Address current_cursor_creature;
Address current_menu_state;
Address pause_state;
Address view_screen;
} GUI;
struct grp_Maps
{
Address map_data;
Address region_x;
Address region_y;
Address region_z;
Address world_size_x;
Address world_size_y;
Address x_count;
Address x_count_block;
Address y_count;
Address y_count_block;
Address z_count;
Address z_count_block;
struct grp_block
{
Offset biome_stuffs;
Offset designation;
Offset feature_global;
Offset feature_local;
Offset occupancy;
Offset pathfinding;
Offset temperature1;
Offset temperature2;
Offset type;
Offset vein_vector;
} block;
struct grp_features
{
struct grp_global
{
Address vector;
Offset funcptr;
Offset material;
Offset submaterial;
} global;
struct grp_local
{
Address start_ptr;
Offset material;
Offset submaterial;
} local;
} features;
struct grp_geology
{
Address geoblock_vector;
Address ptr2_region_array;
Offset geolayer_geoblock_offset;
Offset region_geo_index_off;
Offset type_inside_geolayer;
HexValue region_size;
} geology;
} Maps;
struct grp_Creatures
{
Address current_civ;
Address current_race;
Address vector;
struct grp_creature
{
Offset caste;
Offset civ;
Offset custom_profession;
Offset flags1;
Offset flags2;
Offset id;
Offset name;
Offset position;
Offset profession;
Offset race;
Offset sex;
struct grp_advanced
{
Offset appearance_vector;
Offset artifact_name;
Offset birth_time;
Offset birth_year;
Offset current_job;
Offset current_job_skill;
Offset current_soul;
Offset happiness;
Offset inventory_vector;
Offset labors;
Offset mood;
Offset physical;
Offset pickup_equipment_bit;
Offset pregnancy;
Offset pregnancy_ptr;
Offset soul_vector;
} advanced;
} creature;
struct grp_soul
{
Offset mental;
Offset name;
Offset skills_vector;
Offset traits;
} soul;
struct grp_job
{
Offset id;
Offset materials_vector;
Offset type;
struct grp_material
{
Offset flags;
Offset maintype;
Offset sectype1;
Offset sectype2;
Offset sectype3;
} material;
} job;
} Creatures;
struct grp_Materials
{
Address creature_type_vector;
Address inorganics;
Address organics_all;
Address organics_plants;
Address organics_trees;
Address other;
struct grp_creature
{
Offset caste_vector;
Offset extract_vector;
Offset tile;
Offset tile_color;
struct grp_caste
{
Offset attributes;
Offset bodypart_vector;
Offset color_modifiers;
} caste;
struct grp_caste_color_mods
{
Offset enddate;
Offset part;
Offset startdate;
} caste_color_mods;
struct grp_caste_bodyparts
{
Offset category;
Offset id;
Offset layers_vector;
Offset plural_vector;
Offset singular_vector;
} caste_bodyparts;
} creature;
struct grp_descriptors
{
Address all_colors_vector;
Address colors_vector;
Address vectors_start;
Offset color_b;
Offset color_r;
Offset color_v;
Offset name;
Offset rawname;
} descriptors;
} Materials;
struct grp_Constructions
{
Address vector;
Offset size_of;
} Constructions;
struct grp_Translations
{
Address language_vector;
Address translation_vector;
Offset word_table;
} Translations;
struct grp_Vegetation
{
Address vector;
Offset tree_desc_offset;
} Vegetation;
struct grp_Buildings
{
Address buildings_vector;
Address custom_workshop_vector;
Offset building_custom_workshop_type;
Offset custom_workshop_name;
Offset custom_workshop_type;
} Buildings;
struct grp_Hotkeys
{
Address start;
Offset coords;
Offset mode;
HexValue size_of;
} Hotkeys;
struct grp_Items
{
Address items_vector;
Offset item_improvement_index;
Offset item_improvement_quality;
Offset item_improvement_subindex;
Offset item_improvement_vector;
Offset item_index_accessor;
Offset item_quality_accessor;
Offset item_subindex_accessor;
Offset item_subtype_accessor;
Offset item_type_accessor;
} Items;
struct grp_World
{
Address current_tick;
Address current_weather;
Address current_year;
} World;
bool Load(TiXmlElement* version);
};
class _Reader
{
std::map <std::string, uint32_t> Offsets;
std::map <std::string, uint32_t> Addresses;
std::map <std::string, uint32_t> HexValues;
std::map <std::string, uint32_t> Strings;
public:
bool Read(const TiXmlElement * root, DF2010_offsets & target);
_Reader()
{
Addresses["WORLD"] = offsetof(class DF2010_offsets, WORLD);
Addresses["World.current_tick"] = offsetof(class DF2010_offsets, World.current_tick);
}
};
bool _Reader::Read(const TiXmlElement * root, DF2010_offsets & target)
{
}
int main ( int argc, char** argv )
{
if(argc < 2)
{
cout << "A file is required!" << ::std::endl;
return EXIT_FAILURE;
}
DF2010_offsets offs;
_Reader zlo;
//zlo.Read();
return EXIT_SUCCESS;
}