Beispiel #1
0
        /// <summary>
        /// Adds a shuttle to the world or updates the position of an existing shuttle.
        /// </summary>
        /// <param name="shuttleId">The ID number of the shuttle.</param>
        /// <param name="location">The shuttle's current location.</param>
        /// <param name="name">The name of the shuttle.</param>
        /// <param name="bearing">The heading of the shuttle in degrees from north.</param>
        /// <param name="cardinalPoint">The heading of the shuttle as a cardinal direcation (e.g. Northwest).</param>
        /// <param name="speed">The speed of the shuttle in miles per hour.</param>
        /// <param name="route">The id of the shuttle route. -1 indicates that the shuttle is not on a route.</param>
        public void AddOrUpdateShuttle(int shuttleId, Coordinate location, string name, int bearing, string cardinalPoint, int speed, int route = -1)
        {
            Shuttle s = this.shuttles[shuttleId];
            Route   r = this.routes[route];

            if (s == null)
            {
                s                = new Shuttle();
                s.Id             = shuttleId;
                s.Location       = location;
                s.Name           = name;
                s.Bearing        = bearing;
                s.CardinalPoint  = cardinalPoint;
                s.Speed          = speed;
                s.LastUpdateTime = CurrentTimeMillis();

                this.shuttles.Add(s.Id, s);

                if (r != null)
                {
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }

                s.SnapToRoute();
            }
            else
            {
                s.LastUpdateTime = CurrentTimeMillis();
                s.Location       = location;
                s.Speed          = speed;
                s.Bearing        = bearing;
                s.CardinalPoint  = cardinalPoint;
                s.Name           = name;

                if (r == null && s.CurrentRoute != null)
                {
                    s.CurrentRoute.shuttles.Remove(s.Id);
                    s.CurrentRoute = null;
                }
                else if (r != null && s.CurrentRoute != null && s.CurrentRoute != r)
                {
                    s.CurrentRoute.shuttles.Remove(s.Id);
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }
                else if (r != null && s.CurrentRoute == null)
                {
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }

                s.SnapToRoute();
            }
        }
Beispiel #2
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            Shuttle s = obj as Shuttle;

            if (s == null)
            {
                return(false);
            }

            return(this.Id == s.Id);
        }
        /// <summary>
        /// Adds a shuttle to the world or updates the position of an existing shuttle.
        /// </summary>
        /// <param name="shuttleId">The ID number of the shuttle.</param>
        /// <param name="location">The shuttle's current location.</param>
        /// <param name="name">The name of the shuttle.</param>
        /// <param name="bearing">The heading of the shuttle in degrees from north.</param>
        /// <param name="cardinalPoint">The heading of the shuttle as a cardinal direcation (e.g. Northwest).</param>
        /// <param name="speed">The speed of the shuttle in miles per hour.</param>
        /// <param name="route">The id of the shuttle route. -1 indicates that the shuttle is not on a route.</param>
        public void AddOrUpdateShuttle(int shuttleId, Coordinate location, string name, int bearing, string cardinalPoint, int speed, int route = -1)
        {
            Shuttle s = this.shuttles[shuttleId];
            Route r = this.routes[route];

            if (s == null)
            {
                s = new Shuttle();
                s.Id = shuttleId;
                s.Location = location;
                s.Name = name;
                s.Bearing = bearing;
                s.CardinalPoint = cardinalPoint;
                s.Speed = speed;
                s.LastUpdateTime = CurrentTimeMillis();

                this.shuttles.Add(s.Id, s);

                if (r != null)
                {
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }

                s.SnapToRoute();
            }
            else
            {
                s.LastUpdateTime = CurrentTimeMillis();
                s.Location = location;
                s.Speed = speed;
                s.Bearing = bearing;
                s.CardinalPoint = cardinalPoint;
                s.Name = name;

                if (r == null && s.CurrentRoute != null)
                {
                    s.CurrentRoute.shuttles.Remove(s.Id);
                    s.CurrentRoute = null;
                }
                else if (r != null && s.CurrentRoute != null && s.CurrentRoute != r)
                {
                    s.CurrentRoute.shuttles.Remove(s.Id);
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }
                else if (r != null && s.CurrentRoute == null)
                {
                    s.CurrentRoute = r;
                    r.shuttles.Add(s.Id, s);
                }

                s.SnapToRoute();
            }
        }