Exemple #1
0
    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;
        }
    }
Exemple #2
0
 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);
             }
         }
     }
 }
Exemple #3
0
    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);
            }
        }
    }
Exemple #4
0
    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;
                }
            }
        }
    }
Exemple #5
0
 // Use this for initialization
 void Start()
 {
     color = (gameObject.name == "Green" ? TrafficLightLogic.State.GREEN : (gameObject.name == "Red" ? TrafficLightLogic.State.RED : TrafficLightLogic.State.YELLOW));
 }