Skip to content

Game.Prefabs.ZonePreferencePrefab

Assembly: Assembly-CSharp.dll
Namespace: Game.Prefabs

Type: class

Base: PrefabBase

Summary:
Prefab used to configure zone preference parameters for the game's zoning AI. The class exposes a set of tuning floats (significance and neutral land value) for Residential, Commercial, Industrial and Office zone types and writes those values into a ZonePreferenceData component on the entity during LateInitialize. This prefab is intended to be included in the prefab pipeline so the resulting entity has the ZonePreferenceData component populated with the configured values.


Fields

  • public float m_ResidentialSignificanceServices = 100f
    Significance weight for services when evaluating residential zoning. Default: 100.

  • public float m_ResidentialSignificanceWorkplaces = 50f
    Significance weight for nearby workplaces for residential zoning. Default: 50.

  • public float m_ResidentialSignificanceLandValue = -1f
    Significance of land value for residential preference (negative values reduce preference). Default: -1.

  • public float m_ResidentialSignificancePollution = -100f
    Significance weight for pollution when evaluating residential zoning (negative means pollution reduces desirability). Default: -100.

  • public float m_ResidentialNeutralLandValue = 10f
    Neutral land-value baseline for residential calculations. Default: 10.

  • public float m_CommercialSignificanceConsumers = 100f
    Significance weight for consumer presence when evaluating commercial zoning. Default: 100.

  • public float m_CommercialSignificanceCompetitors = 200f
    Significance weight for competitor presence for commercial zoning. Default: 200.

  • public float m_CommercialSignificanceWorkplaces = 70f
    Significance weight for workplaces affecting commercial zones. Default: 70.

  • public float m_CommercialSignificanceLandValue = -0.5f
    Significance of land value for commercial preference. Default: -0.5.

  • public float m_CommercialNeutralLandValue = 20f
    Neutral land-value baseline for commercial calculations. Default: 20.

  • public float m_IndustrialSignificanceInput = 100f
    Significance weight for input availability for industrial zoning. Default: 100.

  • public float m_IndustrialSignificanceOutside = 100f
    Significance of outside supply/markets for industrial zones. Default: 100.

  • public float m_IndustrialSignificanceLandValue = -1f
    Significance of land value for industrial preference. Default: -1.

  • public float m_IndustrialNeutralLandValue = 5f
    Neutral land-value baseline for industrial calculations. Default: 5.

  • public float m_OfficeSignificanceEmployees = 100f
    Significance weight for available employees when evaluating office zoning. Default: 100.

  • public float m_OfficeSignificanceServices = 100f
    Significance weight for services when evaluating office zoning. Default: 100.

Properties

  • This class does not declare any public properties.

Constructors

  • public ZonePreferencePrefab()
    Uses the default parameterless constructor (none explicitly defined). The prefab's public fields are initialized with their defined default values.

Methods

  • public override void GetPrefabComponents(HashSet<ComponentType> components)
    Adds required component types to the prefab. This implementation calls base.GetPrefabComponents(components) then adds ComponentType.ReadWrite() so that the resulting entity will contain a ZonePreferenceData component.

  • public override void GetArchetypeComponents(HashSet<ComponentType> components)
    Calls the base implementation. Present to allow adding archetype-specific components if needed, but in this implementation it does not add extra types beyond the base.

  • public override void LateInitialize(EntityManager entityManager, Entity entity)
    Called late in prefab initialization to set component data on the created entity. This implementation writes a new ZonePreferenceData to the entity using the current field values (maps each m_* field into the corresponding ZonePreferenceData field). This requires that ZonePreferenceData is present on the entity (GetPrefabComponents ensures it).

Usage Example

// Example: a custom prefab instance will have the configured values copied to the entity's ZonePreferenceData
public override void LateInitialize(EntityManager entityManager, Entity entity)
{
    base.LateInitialize(entityManager, entity);
    // ZonePreferenceData is set with the values from the prefab fields
    entityManager.SetComponentData(entity, new ZonePreferenceData
    {
        m_ResidentialSignificanceServices = m_ResidentialSignificanceServices,
        m_ResidentialSignificanceWorkplaces = m_ResidentialSignificanceWorkplaces,
        m_ResidentialSignificanceLandValue = m_ResidentialSignificanceLandValue,
        m_ResidentialSignificancePollution = m_ResidentialSignificancePollution,
        m_ResidentialNeutralLandValue = m_ResidentialNeutralLandValue,
        m_CommercialSignificanceCompetitors = m_CommercialSignificanceCompetitors,
        m_CommercialSignificanceConsumers = m_CommercialSignificanceConsumers,
        m_CommercialSignificanceWorkplaces = m_CommercialSignificanceWorkplaces,
        m_CommercialSignificanceLandValue = m_CommercialSignificanceLandValue,
        m_CommercialNeutralLandValue = m_CommercialNeutralLandValue,
        m_IndustrialSignificanceInput = m_IndustrialSignificanceInput,
        m_IndustrialSignificanceLandValue = m_IndustrialSignificanceLandValue,
        m_IndustrialSignificanceOutside = m_IndustrialSignificanceOutside,
        m_IndustrialNeutralLandValue = m_IndustrialNeutralLandValue,
        m_OfficeSignificanceEmployees = m_OfficeSignificanceEmployees,
        m_OfficeSignificanceServices = m_OfficeSignificanceServices
    });
}

Notes and tips: - Ensure ZonePreferenceData is defined and matches the fields assigned here. If its layout changes, update this prefab accordingly. - GetPrefabComponents must include ZonePreferenceData (as done) so entity archetype contains the component before SetComponentData is called. - Adjust the public float values in the prefab asset to tune AI preferences for different zone types.