Game.Prefabs.Modes.PoliceConfigurationMode
Assembly: Game (inferred)
Namespace: Game.Prefabs.Modes
Type: class
Base: EntityQueryModePrefab
Summary:
PoliceConfigurationMode is a mode prefab used to tweak police-related simulation configuration at runtime. It exposes a set of multiplier and override fields that modify the values in a PoliceConfigurationData component (usually a singleton). Most fields multiply the existing runtime values, while a few replace them. This prefab is intended for use by the game's mode/prefab system to apply and restore police configuration parameters (crime accumulation, effects, coverage, recurrence, population reduction, etc.).
Fields
-
public float m_MaxCrimeAccumulationMultiplier
Multiplier applied to PoliceConfigurationData.m_MaxCrimeAccumulation when ApplyModeData is called. Values <1 reduce max crime accumulation; values >1 increase it. -
public float m_CrimeAccumulationToleranceMultiplier
Multiplier applied to PoliceConfigurationData.m_CrimeAccumulationTolerance. Adjusts how tolerant the system is to accumulated crime per unit time/area. -
public int m_HomeCrimeEffectMultiplier
Integer multiplier applied to PoliceConfigurationData.m_HomeCrimeEffect. Scales the home-related crime effect. -
public int m_WorkplaceCrimeEffectMultiplier
Integer multiplier applied to PoliceConfigurationData.m_WorkplaceCrimeEffect. Scales the workplace-related crime effect. -
public float m_WelfareCrimeRecurrenceFactor
This value is assigned directly to PoliceConfigurationData.m_WelfareCrimeRecurrenceFactor (it is not multiplied). Use this to set recurrence factor for welfare-related crime behavior. -
public float m_CrimePoliceCoverageFactorMultiflier
Multiplier applied to PoliceConfigurationData.m_CrimePoliceCoverageFactor. Note: the field name contains a typo ("Multiflier"). It still functions as the coverage-factor multiplier used in ApplyModeData. -
public float m_CrimePopulationReductionMultiplier
Multiplier applied to PoliceConfigurationData.m_CrimePopulationReduction. Adjusts population reduction effect tied to crime.
Properties
- (none)
This class does not declare properties. It exposes public fields for configuration that the prefab system reads/serializes.
Constructors
public PoliceConfigurationMode()
Default constructor (implicitly provided). Typical instances are created/managed by the prefab system; you can also create one via ScriptableObject.CreateInstance if needed.
Methods
-
public override EntityQueryDesc GetEntityQueryDesc()
Returns an EntityQueryDesc configured to select entities that have a PoliceConfigurationData component (read-only). The returned query has All = [PoliceConfigurationData]. This query is used by the prefab/mode system to find the singleton or relevant entity to modify. -
protected override void RecordChanges(EntityManager entityManager, Entity entity)
Reads the PoliceConfigurationData component from the given entity using entityManager.GetComponentData(entity). The method currently only reads the data (likely to mark or capture state), it does not modify it directly. -
public override JobHandle ApplyModeData(EntityManager entityManager, EntityQuery requestedQuery, JobHandle deps)
Applies this mode's settings to the matched PoliceConfigurationData singleton. Steps: - Retrieves the singleton entity from requestedQuery via GetSingletonEntity().
- Loads the PoliceConfigurationData component for that entity.
- Multiplies or assigns fields on the component:
- m_MaxCrimeAccumulation *= m_MaxCrimeAccumulationMultiplier
- m_CrimeAccumulationTolerance *= m_CrimeAccumulationToleranceMultiplier
- m_HomeCrimeEffect *= m_HomeCrimeEffectMultiplier
- m_WorkplaceCrimeEffect *= m_WorkplaceCrimeEffectMultiplier
- m_WelfareCrimeRecurrenceFactor = m_WelfareCrimeRecurrenceFactor (assignment)
- m_CrimePoliceCoverageFactor *= m_CrimePoliceCoverageFactorMultiflier
- m_CrimePopulationReduction *= m_CrimePopulationReductionMultiplier
- Writes the modified component back with entityManager.SetComponentData.
- Returns the provided deps JobHandle unchanged. Notes:
- requestedQuery is expected to contain a singleton PoliceConfigurationData entity; GetSingletonEntity() will throw if the query does not match exactly one entity.
-
Most adjustments are multiplicative; the welfare recurrence factor is overwritten.
-
public override void RestoreDefaultData(EntityManager entityManager, ref NativeArray<Entity> entities, PrefabSystem prefabSystem)
Restores PoliceConfigurationData to values defined by the original prefab: - Uses entities[0] as the entity to restore.
- Loads the PoliceConfigurationPrefab from prefabSystem for that entity.
- Copies each relevant value from the prefab to the entity's PoliceConfigurationData:
- m_MaxCrimeAccumulation
- m_CrimeAccumulationTolerance
- m_HomeCrimeEffect
- m_WorkplaceCrimeEffect
- m_WelfareCrimeRecurrenceFactor
- m_CrimePoliceCoverageFactor
- m_CrimePopulationReduction
- Calls entityManager.SetComponentData to write the restored values. Notes:
- This method assumes the first element of the entities array is the PoliceConfiguration entity associated with the prefab.
Usage Example
// Create and configure a mode instance (in editor/mod initialization or runtime)
PoliceConfigurationMode mode = ScriptableObject.CreateInstance<PoliceConfigurationMode>();
mode.m_MaxCrimeAccumulationMultiplier = 0.8f; // reduce max crime accumulation by 20%
mode.m_CrimeAccumulationToleranceMultiplier = 1.1f; // increase tolerance slightly
mode.m_HomeCrimeEffectMultiplier = 1; // keep home effect
mode.m_WorkplaceCrimeEffectMultiplier = 2; // double workplace effect
mode.m_WelfareCrimeRecurrenceFactor = 0.5f; // set recurrence factor directly
mode.m_CrimePoliceCoverageFactorMultiflier = 1.2f; // increase police coverage factor by 20%
mode.m_CrimePopulationReductionMultiplier = 1.0f; // no change
// Apply the mode to the game's PoliceConfigurationData singleton:
// (requires valid EntityManager and a query matching PoliceConfigurationData)
EntityQuery query = mode.GetEntityQueryDesc().ToEntityQuery(entityManager);
mode.ApplyModeData(entityManager, query, default(JobHandle));
Notes and tips: - ApplyModeData expects the query to resolve to the singleton PoliceConfiguration entity. If you get exceptions, verify the query and that the component exists. - Most fields are multiplicative; be careful stacking multiple modes or repeated application as values will compound. - RestoreDefaultData uses the original prefab values via PrefabSystem to reset runtime changes. If you change prefab defaults, RestoreDefaultData will reflect those new defaults.