public void createBehaviour(Metadata metadata, BehaviourFactory behaviourFactory) { if (gameObject.GetComponent <ComponentBehaviour>()) { Debug.LogWarning("ComponentBehaviour is already attached.", transform); } else { foreach (var key in Enum.GetValues(typeof(environmentKeys))) { if (metadata.containsMetatagKey(key: key.ToString())) { componentBehaviour = behaviourFactory .CreateBehaviour(gameObject, BaseType.Environment); return; } } if (metadata.containsMetatagKey(key: "highway")) { componentBehaviour = behaviourFactory .CreateBehaviour(gameObject, BaseType.Road); } else { componentBehaviour = behaviourFactory .CreateBehaviour(gameObject, BaseType.Unknown); } } }
public void Subscribe(TrafficLighter trafficLighter, string behaviourType, int startPosition) { trafficLighter.Behaviour = behaviourFactory.CreateBehaviour(behaviourType, startPosition, trafficLighter.Bulbs); trafficLighters.Add(trafficLighter); }