mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Fix applying designs via weapons in gpose.
This commit is contained in:
parent
fdee4c4ca8
commit
ecf6008b71
2 changed files with 25 additions and 8 deletions
|
|
@ -19,7 +19,8 @@ public class StateEditor(
|
||||||
Configuration config,
|
Configuration config,
|
||||||
ItemManager items,
|
ItemManager items,
|
||||||
DesignMerger merger,
|
DesignMerger merger,
|
||||||
ModSettingApplier modApplier) : IDesignEditor
|
ModSettingApplier modApplier,
|
||||||
|
GPoseService gPose) : IDesignEditor
|
||||||
{
|
{
|
||||||
protected readonly InternalStateEditor Editor = editor;
|
protected readonly InternalStateEditor Editor = editor;
|
||||||
protected readonly StateApplier Applier = applier;
|
protected readonly StateApplier Applier = applier;
|
||||||
|
|
@ -276,12 +277,27 @@ public class StateEditor(
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var currentType = state.ModelData.Item(weaponSlot).Type;
|
var currentType = state.ModelData.Item(weaponSlot).Type;
|
||||||
if (!settings.FromJobChange && mergedDesign.Weapons.TryGetValue(currentType, out var weapon))
|
if (!settings.FromJobChange)
|
||||||
{
|
{
|
||||||
var source = settings.UseSingleSource ? settings.Source :
|
if (gPose.InGPose)
|
||||||
weapon.Item2 is StateSource.Game ? StateSource.Game : weapon.Item2;
|
{
|
||||||
Editor.ChangeItem(state, weaponSlot, weapon.Item1, source, out _,
|
Editor.ChangeItem(state, weaponSlot, mergedDesign.Design.DesignData.Item(weaponSlot),
|
||||||
settings.Key);
|
settings.UseSingleSource ? settings.Source : mergedDesign.Sources[weaponSlot, false], out var old, settings.Key);
|
||||||
|
var oldSource = state.Sources[weaponSlot, false];
|
||||||
|
gPose.AddActionOnLeave(() =>
|
||||||
|
{
|
||||||
|
if (old.Type == state.BaseData.Item(weaponSlot).Type)
|
||||||
|
Editor.ChangeItem(state, weaponSlot, old, oldSource, out _, settings.Key);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mergedDesign.Weapons.TryGetValue(currentType, out var weapon))
|
||||||
|
{
|
||||||
|
var source = settings.UseSingleSource ? settings.Source :
|
||||||
|
weapon.Item2 is StateSource.Game ? StateSource.Game : weapon.Item2;
|
||||||
|
Editor.ChangeItem(state, weaponSlot, weapon.Item1, source, out _,
|
||||||
|
settings.Key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,9 @@ public sealed class StateManager(
|
||||||
Configuration config,
|
Configuration config,
|
||||||
JobChangeState jobChange,
|
JobChangeState jobChange,
|
||||||
DesignMerger merger,
|
DesignMerger merger,
|
||||||
ModSettingApplier modApplier)
|
ModSettingApplier modApplier,
|
||||||
: StateEditor(editor, applier, @event, jobChange, config, items, merger, modApplier), IReadOnlyDictionary<ActorIdentifier, ActorState>
|
GPoseService gPose)
|
||||||
|
: StateEditor(editor, applier, @event, jobChange, config, items, merger, modApplier, gPose), IReadOnlyDictionary<ActorIdentifier, ActorState>
|
||||||
{
|
{
|
||||||
private readonly Dictionary<ActorIdentifier, ActorState> _states = [];
|
private readonly Dictionary<ActorIdentifier, ActorState> _states = [];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue