First version of backend for multi-actor that builds
Only lightly tested. Still need to figure out "frontend" and test with other actors somehow.
This commit is contained in:
parent
f17c48993e
commit
6364cbf662
6 changed files with 149 additions and 85 deletions
|
|
@ -4,6 +4,7 @@
|
|||
#pragma warning( disable : 4267 ) // SKSE has some integer conversion when returning arrays. Returned arrays should be limited to 32-bit size().
|
||||
#pragma warning( disable : 5053 ) // SKSE uses explicit(<expr>) vendor extension.
|
||||
#include "skse64/PapyrusNativeFunctions.h"
|
||||
#include "RE/FormComponents/TESForm/TESObjectREFR/Actor/Character/PlayerCharacter.h"
|
||||
#pragma warning( pop )
|
||||
|
||||
#include "skse64/PapyrusObjects.h"
|
||||
|
|
@ -492,7 +493,7 @@ extern SKSESerializationInterface* g_Serialization;
|
|||
}
|
||||
BSFixedString GetSelectedOutfit(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
return service.currentOutfit().name.c_str();
|
||||
return service.currentOutfit(RE::PlayerCharacter::GetSingleton()).name.c_str();
|
||||
}
|
||||
bool IsEnabled(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
|
|
@ -613,7 +614,7 @@ extern SKSESerializationInterface* g_Serialization;
|
|||
}
|
||||
void SetSelectedOutfit(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*, BSFixedString name) {
|
||||
auto& service = ArmorAddonOverrideService::GetInstance();
|
||||
service.setOutfit(name.data);
|
||||
service.setOutfit(name.data, RE::PlayerCharacter::GetSingleton());
|
||||
}
|
||||
void SetLocationBasedAutoSwitchEnabled(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*, bool value) {
|
||||
ArmorAddonOverrideService::GetInstance().setLocationBasedAutoSwitchEnabled(value);
|
||||
|
|
@ -670,7 +671,7 @@ extern SKSESerializationInterface* g_Serialization;
|
|||
}
|
||||
location = location->parentLoc;
|
||||
}
|
||||
return service.checkLocationType(keywords, weather_flags);
|
||||
return service.checkLocationType(keywords, weather_flags, RE::PlayerCharacter::GetSingleton());
|
||||
}
|
||||
UInt32 IdentifyLocationType(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*, BGSLocation* location_skse, TESWeather* weather_skse) {
|
||||
// NOTE: Identify the location for Papyrus. In the event no location is identified, we lie to Papyrus and say "World".
|
||||
|
|
@ -691,7 +692,7 @@ extern SKSESerializationInterface* g_Serialization;
|
|||
RE::DebugNotification(message, nullptr, false);
|
||||
*/
|
||||
if (location.has_value()) {
|
||||
service.setOutfitUsingLocation(location.value());
|
||||
service.setOutfitUsingLocation(location.value(), RE::PlayerCharacter::GetSingleton());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -701,13 +702,13 @@ extern SKSESerializationInterface* g_Serialization;
|
|||
// Location outfit assignment is never allowed to be empty string. Use unset instead.
|
||||
return;
|
||||
}
|
||||
return ArmorAddonOverrideService::GetInstance().setLocationOutfit(LocationType(location), name.data);
|
||||
return ArmorAddonOverrideService::GetInstance().setLocationOutfit(LocationType(location), name.data, RE::PlayerCharacter::GetSingleton());
|
||||
}
|
||||
void UnsetLocationOutfit(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*, UInt32 location) {
|
||||
return ArmorAddonOverrideService::GetInstance().unsetLocationOutfit(LocationType(location));
|
||||
return ArmorAddonOverrideService::GetInstance().unsetLocationOutfit(LocationType(location), RE::PlayerCharacter::GetSingleton());
|
||||
}
|
||||
BSFixedString GetLocationOutfit(VMClassRegistry* registry, UInt32 stackId, StaticFunctionTag*, UInt32 location) {
|
||||
auto outfit = ArmorAddonOverrideService::GetInstance().getLocationOutfit(LocationType(location));
|
||||
auto outfit = ArmorAddonOverrideService::GetInstance().getLocationOutfit(LocationType(location), RE::PlayerCharacter::GetSingleton());
|
||||
if (outfit.has_value()) {
|
||||
return BSFixedString(outfit.value().c_str());
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue