Remove PalettePlusChecker and config options to disable Advanced Customization and Advanced Dyes.

This commit is contained in:
Ottermandias 2025-03-02 13:24:51 +01:00
parent 425c9471fb
commit 528aae7eee
14 changed files with 66 additions and 172 deletions

View file

@ -25,7 +25,6 @@ public class StateApplier(
MetaService _metaService,
ObjectManager _objects,
CrestService _crests,
Configuration _config,
DirectXService _directX)
{
/// <summary> Simply force a redraw regardless of conditions. </summary>
@ -291,30 +290,26 @@ public class StateApplier(
}
/// <summary> Change the customize parameters on models. Can change multiple at once. </summary>
public void ChangeParameters(ActorData data, CustomizeParameterFlag flags, in CustomizeParameterData values, bool force)
public void ChangeParameters(ActorData data, CustomizeParameterFlag flags, in CustomizeParameterData values)
{
if (!force && !_config.UseAdvancedParameters || flags == 0)
if (flags == 0)
return;
foreach (var actor in data.Objects.Where(a => a is { IsCharacter: true, Model.IsHuman: true }))
actor.Model.ApplyParameterData(flags, values);
}
/// <inheritdoc cref="ChangeParameters(ActorData,CustomizeParameterFlag,in CustomizeParameterData,bool)"/>
/// <inheritdoc cref="ChangeParameters(ActorData,CustomizeParameterFlag,in CustomizeParameterData)"/>
public ActorData ChangeParameters(ActorState state, CustomizeParameterFlag flags, bool apply)
{
var data = GetData(state);
if (apply)
ChangeParameters(data, flags, state.ModelData.Parameters, state.IsLocked);
ChangeParameters(data, flags, state.ModelData.Parameters);
return data;
}
public unsafe void ChangeMaterialValue(ActorState state, ActorData data, MaterialValueIndex changedIndex, ColorRow? changedValue,
bool force)
public unsafe void ChangeMaterialValue(ActorState state, ActorData data, MaterialValueIndex changedIndex, ColorRow? changedValue)
{
if (!force && !_config.UseAdvancedDyes)
return;
foreach (var actor in data.Objects.Where(a => a is { IsCharacter: true, Model.IsHuman: true }))
{
if (!changedIndex.TryGetTexture(actor, out var texture))
@ -341,16 +336,13 @@ public class StateApplier(
{
var data = GetData(state);
if (apply)
ChangeMaterialValue(state, data, index, state.Materials.TryGetValue(index, out var v) ? v.Model : null, state.IsLocked);
ChangeMaterialValue(state, data, index, state.Materials.TryGetValue(index, out var v) ? v.Model : null);
return data;
}
public unsafe void ChangeMaterialValues(ActorData data, in StateMaterialManager materials, bool force)
public unsafe void ChangeMaterialValues(ActorData data, in StateMaterialManager materials)
{
if (!force && !_config.UseAdvancedDyes)
return;
var groupedMaterialValues = materials.Values.Select(p => (MaterialValueIndex.FromKey(p.Key), p.Value))
.GroupBy(p => (p.Item1.DrawObject, p.Item1.SlotIndex, p.Item1.MaterialIndex));
@ -410,8 +402,8 @@ public class StateApplier(
ChangeMetaState(actors, MetaIndex.WeaponState, state.ModelData.IsWeaponVisible());
ChangeMetaState(actors, MetaIndex.VisorState, state.ModelData.IsVisorToggled());
ChangeCrests(actors, state.ModelData.CrestVisibility);
ChangeParameters(actors, state.OnlyChangedParameters(), state.ModelData.Parameters, state.IsLocked);
ChangeMaterialValues(actors, state.Materials, state.IsLocked);
ChangeParameters(actors, state.OnlyChangedParameters(), state.ModelData.Parameters);
ChangeMaterialValues(actors, state.Materials);
}
}

View file

@ -41,7 +41,7 @@ public class StateListener : IDisposable
private readonly HeadGearVisibilityChanged _headGearVisibility;
private readonly VisorStateChanged _visorState;
private readonly WeaponVisibilityChanged _weaponVisibility;
private readonly StateFinalized _stateFinalized;
private readonly StateFinalized _stateFinalized;
private readonly AutoDesignApplier _autoDesignApplier;
private readonly FunModule _funModule;
private readonly HumanModelList _humans;
@ -88,7 +88,7 @@ public class StateListener : IDisposable
_condition = condition;
_crestService = crestService;
_bonusSlotUpdating = bonusSlotUpdating;
_stateFinalized = stateFinalized;
_stateFinalized = stateFinalized;
Subscribe();
}
@ -225,7 +225,7 @@ public class StateListener : IDisposable
// then we do not want to use our restricted gear protection
// since we assume the player has that gear modded to availability.
var locked = false;
if (actor.Identifier(_actors, out var identifier)
if (actor.Identifier(_actors, out var identifier)
&& _manager.TryGetValue(identifier, out var state))
{
HandleEquipSlot(actor, state, slot, ref armor);
@ -889,7 +889,7 @@ public class StateListener : IDisposable
case StateSource.Manual:
if (state.BaseData.Parameters.Set(flag, newValue))
_manager.ChangeCustomizeParameter(state, flag, newValue, ApplySettings.Game);
else if (_config.UseAdvancedParameters)
else
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
break;
case StateSource.IpcManual:
@ -900,8 +900,7 @@ public class StateListener : IDisposable
break;
case StateSource.Fixed:
state.BaseData.Parameters.Set(flag, newValue);
if (_config.UseAdvancedParameters)
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
break;
case StateSource.IpcFixed:
state.BaseData.Parameters.Set(flag, newValue);
@ -910,14 +909,12 @@ public class StateListener : IDisposable
case StateSource.Pending:
state.BaseData.Parameters.Set(flag, newValue);
state.Sources[flag] = StateSource.Manual;
if (_config.UseAdvancedParameters)
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
break;
case StateSource.IpcPending:
state.BaseData.Parameters.Set(flag, newValue);
state.Sources[flag] = StateSource.IpcManual;
if (_config.UseAdvancedParameters)
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
model.ApplySingleParameterData(flag, state.ModelData.Parameters);
break;
}
}

View file

@ -297,7 +297,7 @@ public sealed class StateManager(
{
actors = Applier.ChangeParameters(state, CustomizeParameterExtensions.All, true);
foreach (var (idx, mat) in state.Materials.Values)
Applier.ChangeMaterialValue(state, actors, MaterialValueIndex.FromKey(idx), mat.Game, true);
Applier.ChangeMaterialValue(state, actors, MaterialValueIndex.FromKey(idx), mat.Game);
}
state.Materials.Clear();