From 0c0eaa66d8a6d93022c25a1847ea088ef71e6491 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 5 May 2010 12:57:05 +0200 Subject: [PATCH] Eyes color are now decoded --- dfhack/include/modules/Materials.h | 1 + dfhack/modules/Materials.cpp | 1 + examples/materialtest.cpp | 34 ++++++++++++++++++++---------- output/Memory.xml | 5 +++-- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/dfhack/include/modules/Materials.h b/dfhack/include/modules/Materials.h index ebf2c6206..eef9a5251 100644 --- a/dfhack/include/modules/Materials.h +++ b/dfhack/include/modules/Materials.h @@ -95,6 +95,7 @@ namespace DFHack std::vector raceEx; std::vector color; std::vector other; + std::vector alldesc; bool ReadInorganicMaterials (void); bool ReadOrganicMaterials (void); diff --git a/dfhack/modules/Materials.cpp b/dfhack/modules/Materials.cpp index b60628525..c06830ce3 100644 --- a/dfhack/modules/Materials.cpp +++ b/dfhack/modules/Materials.cpp @@ -282,6 +282,7 @@ bool Materials::ReadDescriptorColors (void) col.b = p->readFloat( p_colors[i] + p->getDescriptor()->getOffset ("descriptor_color_b") ); color.push_back(col); } + return ReadNamesOnly(d->owner, d->owner->getDescriptor()->getAddress ("descriptor_all_colors"), alldesc ); return true; } diff --git a/examples/materialtest.cpp b/examples/materialtest.cpp index 583f5a6e2..f37b22529 100644 --- a/examples/materialtest.cpp +++ b/examples/materialtest.cpp @@ -67,6 +67,23 @@ int main (int numargs, const char ** args) { cout << i << ": " << Materials->plant[i].id << endl; } + cout << endl << "----==== Color descriptors ====----" << endl; + Materials->ReadDescriptorColors(); + for(uint32_t i = 0; i < Materials->color.size();i++) + { + cout << i << ": " << Materials->color[i].id << " - " << Materials->color[i].name << "[" + << (unsigned int) (Materials->color[i].r*255) << ":" + << (unsigned int) (Materials->color[i].v*255) << ":" + << (unsigned int) (Materials->color[i].b*255) << ":" + << "]" << endl; + } + cout << endl << "----==== All descriptors ====----" << endl; + Materials->ReadDescriptorColors(); + for(uint32_t i = 0; i < Materials->alldesc.size();i++) + { + cout << i << ": " << Materials->alldesc[i].id << endl; + } + cout << endl << "----==== Creature types ====----" << endl; Materials->ReadCreatureTypesEx (); for(uint32_t i = 0; i < Materials->raceEx.size();i++) @@ -85,22 +102,17 @@ int main (int numargs, const char ** args) { cout << " colormod[" << k << "] "; for(uint32_t l = 0; l < castes[j].ColorModifier[k].size(); l++) - cout << castes[j].ColorModifier[k][l] << " "; + { + if( castes[j].ColorModifier[k][l] < Materials->color.size() ) + cout << Materials->color[castes[j].ColorModifier[k][l]].name << " "; + else + cout << Materials->alldesc[castes[j].ColorModifier[k][l]].id << " "; + } cout << endl; } } cout << endl; } - cout << endl << "----==== Color descriptors ====----" << endl; - Materials->ReadDescriptorColors(); - for(uint32_t i = 0; i < Materials->color.size();i++) - { - cout << i << ": " << Materials->color[i].id << " - " << Materials->color[i].name << "[" - << (unsigned int) (Materials->color[i].r*255) << ":" - << (unsigned int) (Materials->color[i].v*255) << ":" - << (unsigned int) (Materials->color[i].b*255) << ":" - << "]" << endl; - } #ifndef LINUX_BUILD cout << "Done. Press any key to continue" << endl; cin.ignore(); diff --git a/output/Memory.xml b/output/Memory.xml index 7ac380e80..0b883bdcf 100755 --- a/output/Memory.xml +++ b/output/Memory.xml @@ -1498,13 +1498,14 @@ map_data_1b60_offset 0x1B9c Descriptor colors ================= -
0x16B9780
+
0x16B9780
0x0 0x4C -
0x16B9768
+
0x16B9768
this includes RVB 0x6C floats ! 0x70 0x74 +
0x16B9798
A list of all colors, including eyes and stuff Items =====