Create body slot policy native funcs
This commit is contained in:
parent
e4509f2642
commit
e6fdde028e
3 changed files with 50 additions and 1 deletions
|
|
@ -314,7 +314,6 @@ namespace OutfitSystem {
|
|||
data.bodySlots.push_back(i);
|
||||
data.armors.push_back(armor);
|
||||
{// name
|
||||
// TESFullName* pFullName = DYNAMIC_CAST(armor, RE::TESObjectARMO, TESFullName);
|
||||
auto pFullName = skyrim_cast<RE::TESFullName*>(armor);
|
||||
if (pFullName)
|
||||
data.armorNames.emplace_back(pFullName->fullName.data());
|
||||
|
|
@ -364,6 +363,39 @@ namespace OutfitSystem {
|
|||
return result;
|
||||
}
|
||||
}// namespace BodySlotListing
|
||||
namespace BodySlotPolicy {
|
||||
std::vector<RE::BSFixedString> BodySlotPoliciesForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*,
|
||||
RE::BSFixedString name) {
|
||||
std::vector<RE::BSFixedString> result;
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
auto& outfit = service.getOutfit(name.data());
|
||||
for (const auto policy : outfit.slotPolicies) {
|
||||
result.emplace_back(SlotPolicy::g_policiesMetadata.at(static_cast<char>(policy)).translationKey());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
void SetBodySlotPoliciesForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*,
|
||||
RE::BSFixedString name,
|
||||
std::uint32_t slot,
|
||||
std::uint32_t policy) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
auto& outfit = service.getOutfit(name.data());
|
||||
outfit.setSlotPolicy(static_cast<RE::BIPED_OBJECT>(slot), static_cast<SlotPolicy::Preference>(policy));
|
||||
}
|
||||
void SetBodySlotPolicyToDefaultForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*,
|
||||
RE::BSFixedString name) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
auto& outfit = service.getOutfit(name.data());
|
||||
outfit.setDefaultSlotPolicy();
|
||||
}
|
||||
|
||||
}
|
||||
namespace StringSorts {
|
||||
std::vector<RE::BSFixedString> NaturalSort_ASCII(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
|
|
@ -1088,6 +1120,20 @@ bool OutfitSystem::RegisterPapyrus(RE::BSScript::IVirtualMachine* registry) {
|
|||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotListing::Clear);
|
||||
}
|
||||
{//body slot policy
|
||||
registry->RegisterFunction(
|
||||
"BodySlotPoliciesForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::BodySlotPoliciesForOutfit);
|
||||
registry->RegisterFunction(
|
||||
"SetBodySlotPoliciesForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::SetBodySlotPoliciesForOutfit);
|
||||
registry->RegisterFunction(
|
||||
"SetBodySlotPolicyToDefaultForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::SetBodySlotPolicyToDefaultForOutfit);
|
||||
}
|
||||
{// string sorts
|
||||
registry->RegisterFunction(
|
||||
"NaturalSort_ASCII",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue