public void setState(TrafficLightLogic.State state) { setLight(state == color); switch (color) { case TrafficLightLogic.State.YELLOW: setCollider(state == TrafficLightLogic.State.YELLOW || state == TrafficLightLogic.State.RED); break; case TrafficLightLogic.State.RED: setCollider(state == TrafficLightLogic.State.RED); break; default: break; } }
private static void AutosetTrafficLightProperties() { foreach (TrafficLightLogic trafficLight in TrafficLights) { if (trafficLight.getState() == TrafficLightLogic.State.NOT_INITIALISED) { // Get rotation, angles 45-135 & 225-315 should have same color, and the rest the other color float firstLightRotation = trafficLight.getRotation(); List <TrafficLightLogic> relatedTrafficLights = TrafficLights.Where(p => p.getPos() == trafficLight.getPos()).ToList(); foreach (TrafficLightLogic relatedTrafficLight in relatedTrafficLights) { float lightRotation = Mathf.Abs((relatedTrafficLight.getRotation() - firstLightRotation) % 180f); TrafficLightLogic.State state = lightRotation > 45f && lightRotation <= 135f ? TrafficLightLogic.State.GREEN : TrafficLightLogic.State.RED; relatedTrafficLight.setState(state); } } } }
private static void ApplyStateOnTrafficLight(TrafficLightLogic trafficLight, TrafficLightLogic.State state) { TrafficLightLogic.State otherState = state == TrafficLightLogic.State.GREEN ? TrafficLightLogic.State.RED : TrafficLightLogic.State.GREEN; trafficLight.setState(state); Dictionary <RelationState, List <TrafficLightLogic> > trafficLightEntry = TrafficLightRelations [trafficLight]; if (trafficLightEntry.ContainsKey(RelationState.SAME_DIRECTION)) { foreach (TrafficLightLogic sameDirectionLight in trafficLightEntry[RelationState.SAME_DIRECTION]) { sameDirectionLight.setState(state); } foreach (TrafficLightLogic otherDirectionLight in trafficLightEntry[RelationState.CROSSING_DIRECTION]) { otherDirectionLight.setState(otherState); } } }
public static void ApplyConfig(XmlNode objectNode) { string id = objectNode.Attributes.GetNamedItem("id").Value; TrafficLightLogic trafficLight = GetTrafficLightById(id); if (trafficLight) { foreach (XmlNode propertyNode in objectNode.ChildNodes) { switch (propertyNode.Name) { case "time": float time = float.Parse(propertyNode.InnerText); ApplyTimeOnTrafficLight(trafficLight, time); break; case "state": TrafficLightLogic.State state = propertyNode.InnerText == "RED" ? TrafficLightLogic.State.RED : TrafficLightLogic.State.GREEN; ApplyStateOnTrafficLight(trafficLight, state); break; } } } }
// Use this for initialization void Start() { color = (gameObject.name == "Green" ? TrafficLightLogic.State.GREEN : (gameObject.name == "Red" ? TrafficLightLogic.State.RED : TrafficLightLogic.State.YELLOW)); }