Show / Hide Table of Contents

Class GameStateProperty

An abstact class that represents some property of the game state. Extending the class allows for new properties and mechanics to be added into the game without need of big overhaul in the codebase.

Inheritance
System.Object
UnityEngine.Object
UnityEngine.Component
UnityEngine.Behaviour
UnityEngine.MonoBehaviour
GameStateProperty
EnergyConsumption
Funds
InfectionRate
PopulationState
ResourceConsumption
TimeState
WasteGenerated
Inherited Members
UnityEngine.MonoBehaviour.IsInvoking()
UnityEngine.MonoBehaviour.CancelInvoke()
UnityEngine.MonoBehaviour.Invoke(System.String, System.Single)
UnityEngine.MonoBehaviour.InvokeRepeating(System.String, System.Single, System.Single)
UnityEngine.MonoBehaviour.CancelInvoke(System.String)
UnityEngine.MonoBehaviour.IsInvoking(System.String)
UnityEngine.MonoBehaviour.StartCoroutine(System.String)
UnityEngine.MonoBehaviour.StartCoroutine(System.String, System.Object)
UnityEngine.MonoBehaviour.StartCoroutine(System.Collections.IEnumerator)
UnityEngine.MonoBehaviour.StartCoroutine_Auto(System.Collections.IEnumerator)
UnityEngine.MonoBehaviour.StopCoroutine(System.Collections.IEnumerator)
UnityEngine.MonoBehaviour.StopCoroutine(UnityEngine.Coroutine)
UnityEngine.MonoBehaviour.StopCoroutine(System.String)
UnityEngine.MonoBehaviour.StopAllCoroutines()
UnityEngine.MonoBehaviour.print(System.Object)
UnityEngine.MonoBehaviour.useGUILayout
UnityEngine.MonoBehaviour.runInEditMode
UnityEngine.Behaviour.enabled
UnityEngine.Behaviour.isActiveAndEnabled
UnityEngine.Component.GetComponent(System.Type)
UnityEngine.Component.GetComponent<T>()
UnityEngine.Component.TryGetComponent(System.Type, UnityEngine.Component)
UnityEngine.Component.TryGetComponent<T>(T)
UnityEngine.Component.GetComponent(System.String)
UnityEngine.Component.GetComponentInChildren(System.Type, System.Boolean)
UnityEngine.Component.GetComponentInChildren(System.Type)
UnityEngine.Component.GetComponentInChildren<T>(System.Boolean)
UnityEngine.Component.GetComponentInChildren<T>()
UnityEngine.Component.GetComponentsInChildren(System.Type, System.Boolean)
UnityEngine.Component.GetComponentsInChildren(System.Type)
UnityEngine.Component.GetComponentsInChildren<T>(System.Boolean)
UnityEngine.Component.GetComponentsInChildren<T>(System.Boolean, System.Collections.Generic.List<T>)
UnityEngine.Component.GetComponentsInChildren<T>()
UnityEngine.Component.GetComponentsInChildren<T>(System.Collections.Generic.List<T>)
UnityEngine.Component.GetComponentInParent(System.Type)
UnityEngine.Component.GetComponentInParent<T>()
UnityEngine.Component.GetComponentsInParent(System.Type, System.Boolean)
UnityEngine.Component.GetComponentsInParent(System.Type)
UnityEngine.Component.GetComponentsInParent<T>(System.Boolean)
UnityEngine.Component.GetComponentsInParent<T>(System.Boolean, System.Collections.Generic.List<T>)
UnityEngine.Component.GetComponentsInParent<T>()
UnityEngine.Component.GetComponents(System.Type)
UnityEngine.Component.GetComponents(System.Type, System.Collections.Generic.List<UnityEngine.Component>)
UnityEngine.Component.GetComponents<T>(System.Collections.Generic.List<T>)
UnityEngine.Component.GetComponents<T>()
UnityEngine.Component.CompareTag(System.String)
UnityEngine.Component.SendMessageUpwards(System.String, System.Object, UnityEngine.SendMessageOptions)
UnityEngine.Component.SendMessageUpwards(System.String, System.Object)
UnityEngine.Component.SendMessageUpwards(System.String)
UnityEngine.Component.SendMessageUpwards(System.String, UnityEngine.SendMessageOptions)
UnityEngine.Component.SendMessage(System.String, System.Object)
UnityEngine.Component.SendMessage(System.String)
UnityEngine.Component.SendMessage(System.String, System.Object, UnityEngine.SendMessageOptions)
UnityEngine.Component.SendMessage(System.String, UnityEngine.SendMessageOptions)
UnityEngine.Component.BroadcastMessage(System.String, System.Object, UnityEngine.SendMessageOptions)
UnityEngine.Component.BroadcastMessage(System.String, System.Object)
UnityEngine.Component.BroadcastMessage(System.String)
UnityEngine.Component.BroadcastMessage(System.String, UnityEngine.SendMessageOptions)
UnityEngine.Component.transform
UnityEngine.Component.gameObject
UnityEngine.Component.tag
UnityEngine.Object.GetInstanceID()
UnityEngine.Object.GetHashCode()
UnityEngine.Object.Equals(System.Object)
UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Vector3, UnityEngine.Quaternion)
UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Vector3, UnityEngine.Quaternion, UnityEngine.Transform)
UnityEngine.Object.Instantiate(UnityEngine.Object)
UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Transform)
UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Transform, System.Boolean)
UnityEngine.Object.Instantiate<T>(T)
UnityEngine.Object.Instantiate<T>(T, UnityEngine.Vector3, UnityEngine.Quaternion)
UnityEngine.Object.Instantiate<T>(T, UnityEngine.Vector3, UnityEngine.Quaternion, UnityEngine.Transform)
UnityEngine.Object.Instantiate<T>(T, UnityEngine.Transform)
UnityEngine.Object.Instantiate<T>(T, UnityEngine.Transform, System.Boolean)
UnityEngine.Object.Destroy(UnityEngine.Object, System.Single)
UnityEngine.Object.Destroy(UnityEngine.Object)
UnityEngine.Object.DestroyImmediate(UnityEngine.Object, System.Boolean)
UnityEngine.Object.DestroyImmediate(UnityEngine.Object)
UnityEngine.Object.FindObjectsOfType(System.Type)
UnityEngine.Object.FindObjectsOfType(System.Type, System.Boolean)
UnityEngine.Object.DontDestroyOnLoad(UnityEngine.Object)
UnityEngine.Object.DestroyObject(UnityEngine.Object, System.Single)
UnityEngine.Object.DestroyObject(UnityEngine.Object)
UnityEngine.Object.FindSceneObjectsOfType(System.Type)
UnityEngine.Object.FindObjectsOfTypeIncludingAssets(System.Type)
UnityEngine.Object.FindObjectsOfType<T>()
UnityEngine.Object.FindObjectsOfType<T>(System.Boolean)
UnityEngine.Object.FindObjectOfType<T>()
UnityEngine.Object.FindObjectOfType<T>(System.Boolean)
UnityEngine.Object.FindObjectsOfTypeAll(System.Type)
UnityEngine.Object.FindObjectOfType(System.Type)
UnityEngine.Object.FindObjectOfType(System.Type, System.Boolean)
UnityEngine.Object.ToString()
UnityEngine.Object.name
UnityEngine.Object.hideFlags
System.Object.Equals(System.Object, System.Object)
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
Namespace: GDA.GameStateProperties
Assembly: Assembly-CSharp.dll
Syntax
public abstract class GameStateProperty : MonoBehaviour

Fields

_value

Internal variable for value. Used for Serialization.

Declaration
[HideIf("hideValue")]
[SerializeField]
protected float _value
Field Value
Type Description
System.Single

clampMax

Whether the GameStateProperty should be clamped to a maximum value.

Declaration
[SerializeField]
protected bool clampMax
Field Value
Type Description
System.Boolean

clampMin

Whether the GameStateProperty should be clamped to a minimum value.

Declaration
[SerializeField]
protected bool clampMin
Field Value
Type Description
System.Boolean

max

Minimum value that the GameStateProperty is clamped to if clampMax is true.

Declaration
[ShowIf("clampMax")]
[SerializeField]
protected float max
Field Value
Type Description
System.Single

min

Minimum value that the GameStateProperty is clamped to if clampMin is true.

Declaration
[ShowIf("clampMin")]
[SerializeField]
protected float min
Field Value
Type Description
System.Single

Properties

GameOverText

The text that is incorporated into NPC dialogue when a GameStateProperty reaches max severity and results in a gameover.

Declaration
public abstract string GameOverText { get; }
Property Value
Type Description
System.String

hideValue

Whether to hide the _value attribute in the Unity Editor. Usually for when a Child class overrides the value property.

Declaration
protected virtual bool hideValue { get; }
Property Value
Type Description
System.Boolean

NegativeEvaluation

The text that is incorporated into NPC dialogue when a product is worse than another with regards to a GameStateProperty.

Declaration
public abstract string NegativeEvaluation { get; }
Property Value
Type Description
System.String

PositiveEvaluation

The text that is incorporated into NPC dialogue when a product is better than another with regards to a GameStateProperty.

Declaration
public abstract string PositiveEvaluation { get; }
Property Value
Type Description
System.String

scale

Amount to scale the raw values before applying changes to the GameStateProperty.

Declaration
protected virtual float scale { get; }
Property Value
Type Description
System.Single

severity

The severity of the GameStateProperty. Override to customize how severity is calculated.

Declaration
public virtual int severity { get; }
Property Value
Type Description
System.Int32

value

The value of the GameStateProperty

Declaration
public virtual float value { get; protected set; }
Property Value
Type Description
System.Single

Methods

ApplyEffect(Product)

Applies the effect of a single product to the GameStateProperty. Generally unused, because it does not take into account other factors outside of the product (User Group, etc).

Declaration
public virtual void ApplyEffect(Product product)
Parameters
Type Name Description
Product product
See Also
ApplyEffect(Proposal)

ApplyEffect(Proposal)

Applies the effect of a (processed) Proposal on the GameStateProperty. Calculation may take into account considerations from the whole proposal (required quantity, user group etc.) and not solely from the products, and thus is substantially different from CalculateEffect(Product) If decision is Nill, method will do nothing

Declaration
public virtual void ApplyEffect(Proposal proposal)
Parameters
Type Name Description
Proposal proposal

ApplyEffectUnscaled(Single)

Applies a fixed change to the value of the GameStateProperty, without scaling.

Declaration
public virtual void ApplyEffectUnscaled(float amt)
Parameters
Type Name Description
System.Single amt

Amount to change

CalculateEffect(Product)

Calculates the effect of a single product on the GameStateProperty.

Declaration
public abstract float CalculateEffect(Product product)
Parameters
Type Name Description
Product product

Product to use for calculation

Returns
Type Description
System.Single

The effect of the product on the GameStateProperty

CalculateEffect(Proposal)

Calculates the effect of a (processed) Proposal on the GameStateProperty. Calculation may take into account considerations from the whole proposal (required quantity, user group etc.) and not solely from the products, and thus is substantially different from CalculateEffect(Product) If decision is Nill, method will return erronous results

Declaration
public virtual float CalculateEffect(Proposal proposal)
Parameters
Type Name Description
Proposal proposal

The processed proposal to make the calculation with

Returns
Type Description
System.Single

The effect of the proposal on the GameStateProperty

GetBetterProduct(Proposal)

Takes a proposal, and returns the product that would be more beneficial/less detrimental to the GameStateProperty.

Declaration
public virtual Product GetBetterProduct(Proposal proposal)
Parameters
Type Name Description
Proposal proposal

Proposal to check

Returns
Type Description
Product

The better product out of productA and productB

ScaleEffect(Single)

Scales an effect (change in value) and scales it:

    First by the scale of the GameStateProperty
    Then by a Log10 scale, so that changes with small magnitude are still relevant to the player.
Declaration
protected float ScaleEffect(float effect)
Parameters
Type Name Description
System.Single effect
Returns
Type Description
System.Single

The scaled effect

SetValue(Single)

Sets the value of the GameStateProperty.

Declaration
public virtual void SetValue(float value)
Parameters
Type Name Description
System.Single value

value to set

Events

OnMaxSeverity

Event that fires when a GameStateProperty reaches maximum severity.

Declaration
public static event Action OnMaxSeverity
Event Type
Type Description
System.Action
In This Article
Back to top Generated by DocFX