MCPcopy Create free account
hub / github.com/DFHack/dfhack / setItemFromName

Function setItemFromName

plugins/autoclothing.cpp:321–349  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

319}
320
321std::optional<ClothingRequirement> setItemFromName(string name)
322{
323 auto SEARCH_ITEM_RAWS = [&name]<typename FT>(FT df::itemdef_handlerst:: * rawType, df::job_type job, df::item_type item) -> std::optional<ClothingRequirement>
324 {
325 auto& itemdefs = world->raws.itemdefs.*rawType;
326 auto it = std::find_if(itemdefs.begin(), itemdefs.end(), [&name] (auto& itemdef) {
327 string fullName = itemdef->adjective.empty() ? itemdef->name : itemdef->adjective + " " + itemdef->name;
328 return fullName == name;
329 });
330 if (it != itemdefs.end())
331 {
332 auto& itemdef = *it;
333 return ClothingRequirement{.jobType = job, .itemType = item, .item_subtype = itemdef->subtype};
334 }
335 return std::nullopt;
336 };
337
338 if (auto v = SEARCH_ITEM_RAWS(&df::itemdef_handlerst::armor, df::job_type::MakeArmor, df::item_type::ARMOR))
339 return v;
340 if (auto v = SEARCH_ITEM_RAWS(&df::itemdef_handlerst::gloves, df::job_type::MakeGloves, df::item_type::GLOVES))
341 return v;
342 if (auto v = SEARCH_ITEM_RAWS(&df::itemdef_handlerst::shoes, df::job_type::MakeShoes, df::item_type::SHOES))
343 return v;
344 if (auto v = SEARCH_ITEM_RAWS(&df::itemdef_handlerst::helms, df::job_type::MakeHelm, df::item_type::HELM))
345 return v;
346 if (auto v = SEARCH_ITEM_RAWS(&df::itemdef_handlerst::pants, df::job_type::MakePants, df::item_type::PANTS))
347 return v;
348 return std::nullopt;
349}
350
351static std::optional<ClothingRequirement> setItemFromToken(string token) {
352 ItemTypeInfo itemInfo;

Callers 1

setItemFunction · 0.85

Calls 3

beginMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected