More native func work
This commit is contained in:
parent
e6fdde028e
commit
e141c8370e
3 changed files with 49 additions and 9 deletions
|
|
@ -46,7 +46,7 @@ namespace SlotPolicy {
|
|||
std::string code;
|
||||
std::int32_t sortOrder;
|
||||
bool advanced;
|
||||
std::string translationKey() {
|
||||
std::string translationKey() const {
|
||||
return "$SkyOutSys_Desc_PolicyName_" + code;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ namespace OutfitSystem {
|
|||
}
|
||||
}// namespace BodySlotListing
|
||||
namespace BodySlotPolicy {
|
||||
std::vector<RE::BSFixedString> BodySlotPoliciesForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::vector<RE::BSFixedString> BodySlotPolicyNamesForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*,
|
||||
RE::BSFixedString name) {
|
||||
|
|
@ -381,10 +381,15 @@ namespace OutfitSystem {
|
|||
RE::StaticFunctionTag*,
|
||||
RE::BSFixedString name,
|
||||
std::uint32_t slot,
|
||||
std::uint32_t policy) {
|
||||
RE::BSFixedString code) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
auto& outfit = service.getOutfit(name.data());
|
||||
outfit.setSlotPolicy(static_cast<RE::BIPED_OBJECT>(slot), static_cast<SlotPolicy::Preference>(policy));
|
||||
std::string codeString(code);
|
||||
auto found = std::find_if(SlotPolicy::g_policiesMetadata.begin(), SlotPolicy::g_policiesMetadata.end(), [&](const SlotPolicy::Metadata& first) {
|
||||
return first.code == codeString;
|
||||
});
|
||||
if (found == SlotPolicy::g_policiesMetadata.end()) return;
|
||||
outfit.setSlotPolicy(static_cast<RE::BIPED_OBJECT>(slot), static_cast<SlotPolicy::Preference>(found - SlotPolicy::g_policiesMetadata.begin()));
|
||||
}
|
||||
void SetBodySlotPolicyToDefaultForOutfit(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
|
|
@ -394,7 +399,32 @@ namespace OutfitSystem {
|
|||
auto& outfit = service.getOutfit(name.data());
|
||||
outfit.setDefaultSlotPolicy();
|
||||
}
|
||||
|
||||
std::vector<RE::BSFixedString> GetAvailablePolicyNames(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*) {
|
||||
auto policies = SlotPolicy::g_policiesMetadata;
|
||||
std::sort(policies.begin(), policies.end(), [](const SlotPolicy::Metadata& first, const SlotPolicy::Metadata& second) {
|
||||
return first.code < second.code;
|
||||
});
|
||||
std::vector<RE::BSFixedString> result;
|
||||
for (const auto& policy : policies) {
|
||||
result.emplace_back(policy.translationKey());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
std::vector<RE::BSFixedString> GetAvailablePolicyCodes(RE::BSScript::IVirtualMachine* registry,
|
||||
std::uint32_t stackId,
|
||||
RE::StaticFunctionTag*) {
|
||||
auto policies = SlotPolicy::g_policiesMetadata;
|
||||
std::sort(policies.begin(), policies.end(), [](const SlotPolicy::Metadata& first, const SlotPolicy::Metadata& second) {
|
||||
return first.code < second.code;
|
||||
});
|
||||
std::vector<RE::BSFixedString> result;
|
||||
for (const auto& policy : policies) {
|
||||
result.emplace_back(policy.code);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
namespace StringSorts {
|
||||
std::vector<RE::BSFixedString> NaturalSort_ASCII(RE::BSScript::IVirtualMachine* registry,
|
||||
|
|
@ -1122,9 +1152,9 @@ bool OutfitSystem::RegisterPapyrus(RE::BSScript::IVirtualMachine* registry) {
|
|||
}
|
||||
{//body slot policy
|
||||
registry->RegisterFunction(
|
||||
"BodySlotPoliciesForOutfit",
|
||||
"BodySlotPolicyNamesForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::BodySlotPoliciesForOutfit);
|
||||
BodySlotPolicy::BodySlotPolicyNamesForOutfit);
|
||||
registry->RegisterFunction(
|
||||
"SetBodySlotPoliciesForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
|
|
@ -1133,6 +1163,14 @@ bool OutfitSystem::RegisterPapyrus(RE::BSScript::IVirtualMachine* registry) {
|
|||
"SetBodySlotPolicyToDefaultForOutfit",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::SetBodySlotPolicyToDefaultForOutfit);
|
||||
registry->RegisterFunction(
|
||||
"GetAvailablePolicyNames",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::GetAvailablePolicyNames);
|
||||
registry->RegisterFunction(
|
||||
"GetAvailablePolicyCodes",
|
||||
"SkyrimOutfitSystemNativeFuncs",
|
||||
BodySlotPolicy::GetAvailablePolicyCodes);
|
||||
}
|
||||
{// string sorts
|
||||
registry->RegisterFunction(
|
||||
|
|
|
|||
|
|
@ -75,9 +75,11 @@ Bool Function GetOutfitPassthroughStatus(String asOutfitName) Global Native
|
|||
Function SetOutfitPassthroughStatus(String asOutfitName, Bool abPassthrough) Global Native
|
||||
Bool Function GetOutfitEquipRequiredStatus(String asOutfitName) Global Native
|
||||
Function SetOutfitEquipRequiredStatus(String asOutfitName, Bool asEquipRequired) Global Native
|
||||
String[] Function BodySlotPoliciesForOutfit(String asOutfitName) Global Native
|
||||
Function SetBodySlotPoliciesForOutfit(String asOutfitName, Int aiSlot, Int aiPolicy) Global Native
|
||||
String[] Function BodySlotPolicyNamesForOutfit(String asOutfitName) Global Native
|
||||
Function SetBodySlotPoliciesForOutfit(String asOutfitName, Int aiSlot, String aiPolicyCode) Global Native
|
||||
Function SetBodySlotPolicyToDefaultForOutfit(String asOutfitName) Global Native
|
||||
String[] Function GetAvailablePolicyNames() Global Native
|
||||
String[] Function GetAvailablePolicyCodes() Global Native
|
||||
String Function GetSelectedOutfit (Actor actor) Global Native
|
||||
Bool Function IsEnabled () Global Native
|
||||
String[] Function ListOutfits (Bool favoritesOnly = False) Global Native
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue