From 65318292681fbdd4da5a8f0c0e4fa68db3fa1a86 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 30 Apr 2010 17:03:21 +0200 Subject: [PATCH] adding creature extract support --- dfhack/include/modules/Materials.h | 6 ++++++ dfhack/modules/Materials.cpp | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/dfhack/include/modules/Materials.h b/dfhack/include/modules/Materials.h index e2a1bc62f..46931d4d5 100644 --- a/dfhack/include/modules/Materials.h +++ b/dfhack/include/modules/Materials.h @@ -45,11 +45,17 @@ namespace DFHack char plural[128]; char adjective[128]; }; + + struct t_creatureextract + { + char rawname[128]; + }; // this doesn't transfer well across the shm gap... struct t_creaturetype { char rawname[128]; std::vector castes; + std::vector extract; uint8_t tile_character; struct { diff --git a/dfhack/modules/Materials.cpp b/dfhack/modules/Materials.cpp index b32d4f234..db00297d5 100644 --- a/dfhack/modules/Materials.cpp +++ b/dfhack/modules/Materials.cpp @@ -269,6 +269,7 @@ bool Materials::ReadCreatureTypesEx (void) memory_info *mem = d->owner->getDescriptor(); DfVector p_races (p, mem->getAddress ("creature_type_vector")); uint32_t castes_vector_offset = mem->getOffset ("creature_type_caste_vector"); + uint32_t extract_vector_offset = mem->getOffset ("creature_type_extract_vector"); uint32_t sizeof_string = mem->getHexValue ("sizeof_string"); uint32_t size = p_races.size(); uint32_t sizecas = 0; @@ -296,6 +297,14 @@ bool Materials::ReadCreatureTypesEx (void) mat.tilecolor.fore = p->readWord( p_races[i] + tile_color_offset ); mat.tilecolor.back = p->readWord( p_races[i] + tile_color_offset + 2 ); mat.tilecolor.bright = p->readWord( p_races[i] + tile_color_offset + 4 ); + + DfVector p_extract(p, p_races[i] + extract_vector_offset); + for(uint32_t j = 0; j < p_extract.size(); j++) + { + t_creatureextract extract; + p->readSTLString( p_extract[j], extract.rawname, sizeof(extract.rawname)); + mat.extract.push_back(extract); + } raceEx.push_back(mat); } return true;