From 910f9658389f8dccd0183428af4797a27202384f Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Sat, 7 Dec 2019 19:27:35 -0800 Subject: [PATCH] wip --- library/LuaApi.cpp | 1 + library/include/modules/Units.h | 1 + library/modules/Units.cpp | 10 ++++++++++ plugins/proto/RemoteFortressReader.proto | 1 + plugins/remotefortressreader/remotefortressreader.cpp | 2 ++ 5 files changed, 15 insertions(+) diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index 2840aa5b9..5dc881926 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -1611,6 +1611,7 @@ static const LuaWrapper::FunctionReg dfhack_units_module[] = { WRAPM(Units, isOwnCiv), WRAPM(Units, isOwnGroup), WRAPM(Units, isOwnRace), + WRAPM(Units, getDescription), WRAPM(Units, getRaceName), WRAPM(Units, getRaceNamePlural), WRAPM(Units, getRaceBabyName), diff --git a/library/include/modules/Units.h b/library/include/modules/Units.h index 09c39be55..49565960d 100644 --- a/library/include/modules/Units.h +++ b/library/include/modules/Units.h @@ -120,6 +120,7 @@ DFHACK_EXPORT bool isVisible(df::unit* unit); DFHACK_EXPORT std::string getRaceNameById(int32_t race_id); DFHACK_EXPORT std::string getRaceName(df::unit* unit); +DFHACK_EXPORT std::string getDescription(df::unit* unit); DFHACK_EXPORT std::string getRaceNamePluralById(int32_t race_id); DFHACK_EXPORT std::string getRaceNamePlural(df::unit* unit); DFHACK_EXPORT std::string getRaceBabyNameById(int32_t race_id); diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index 861c25ce9..5fec1c0a3 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -541,6 +541,16 @@ string Units::getRaceName(df::unit* unit) return getRaceNameById(unit->race); } +typedef void (*df_unit_desc_fn)(df::unit*, std::string*); +static df_unit_desc_fn df_unit_desc = reinterpret_cast(0x100cbb890); +string Units::getDescription(df::unit* unit) +{ + CHECK_NULL_POINTER(unit); + std::string str; + df_unit_desc(unit, &str); + return str; +} + // get plural of race name (used for display in autobutcher UI and for sorting the watchlist) string Units::getRaceNamePluralById(int32_t id) { diff --git a/plugins/proto/RemoteFortressReader.proto b/plugins/proto/RemoteFortressReader.proto index af971d55d..6b70a48cb 100644 --- a/plugins/proto/RemoteFortressReader.proto +++ b/plugins/proto/RemoteFortressReader.proto @@ -420,6 +420,7 @@ message UnitAppearance optional Hair beard = 6; optional Hair moustache = 7; optional Hair sideburns = 8; + optional string description = 9; } message InventoryItem diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index 7dced3b9f..3efcd80a5 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -1750,6 +1750,8 @@ static command_result GetUnitListInside(color_ostream &stream, const BlockReques appearance->add_colors(unit->appearance.colors[j]); appearance->set_size_modifier(unit->appearance.size_modifier); + appearance->set_description(Units::getDescription(unit)); + send_unit->set_profession_id(unit->profession); std::vector pvec;