Example #1
0
        public DirectionOfTravel GetDirectionOfTravel()
        {
            _directionOfTravel    = _newDirectionOfTravel ?? _directionOfTravel;
            _newDirectionOfTravel = null;

            return(_directionOfTravel);
        }
Example #2
0
        private GameBoardCoordinate CalculateNewSnakeSegment(DirectionOfTravel directionOfTravel)
        {
            var snakeHead = _snakeBody.Last();

            switch (directionOfTravel)
            {
            case DirectionOfTravel.Up:

                return(new GameBoardCoordinate(snakeHead.X, snakeHead.Y - 1));

                break;

            case DirectionOfTravel.Right:

                return(new GameBoardCoordinate(snakeHead.X + 1, snakeHead.Y));

                break;

            case DirectionOfTravel.Down:

                return(new GameBoardCoordinate(snakeHead.X, snakeHead.Y + 1));

                break;

            case DirectionOfTravel.Left:

                return(new GameBoardCoordinate(snakeHead.X - 1, snakeHead.Y));

                break;

            default:
                throw new ArgumentOutOfRangeException("directionOfTravel");
            }
        }
Example #3
0
        public GameBoardCoordinate AddNewSnakeSegment(DirectionOfTravel directionOfTravel)
        {
            var newSnakeSegment = CalculateNewSnakeSegment(directionOfTravel);

            _snakeBody.Enqueue(newSnakeSegment);

            return(newSnakeSegment);
        }
Example #4
0
        public void ChangeDirectionOfTravel(DirectionOfTravel directionOfTravel)
        {
            if (_directionOfTravel == directionOfTravel || _directionOfTravel == GetOpposite(directionOfTravel))
            {
                return;
            }

            _newDirectionOfTravel = directionOfTravel;
        }
Example #5
0
 private void DoChangePlayerOneDirectionOfTravel(DirectionOfTravel directionOfTravel)
 {
     try
     {
         _playerOneSnakey.ChangeDirectionOfTravel(directionOfTravel);
     }
     catch (Exception)
     {
         // TODO
     }
 }
Example #6
0
        public Car(int CarId, DirectionOfTravel Direction = DirectionOfTravel.NorthToSouth, bool WaitAtStopSign = false)
        {
            this.CarId          = CarId;
            this.WaitAtStopSign = WaitAtStopSign;

            Random rnd = new Random();

            MovementSleep         = rnd.Next(50, 101);  // Creates a number between 50 and 100 for milliseconds to sleep between movements
            MilesLengthOfTrip     = rnd.Next(200, 501); // Creates a number between 200 and 500 for miles in trip to complete
            MilesTillIntersection = rnd.Next(10, 51);   // Creates a number between 10 and 50 for miles until this car reaches the intersection
            MilesTillPitStop      = rnd.Next(10, 51);   // Creates a number between 10 and 50 for miles until this car needs a pit stop for servicing
        }
Example #7
0
        private void DoChangePlayerTwoDirectionOfTravel(DirectionOfTravel directionOfTravel)
        {
            try
            {
                ISnakeyViewModel snakey = _playerTwoSnakey ?? _playerOneSnakey;

                snakey.ChangeDirectionOfTravel(directionOfTravel);
            }
            catch (Exception)
            {
                // TODO
            }
        }
Example #8
0
        public SnakeyViewModel
        (
            SnakeyToken snakeyToken,
            TimeSpan interval,
            bool doesSnakeySpeedUp,
            DirectionOfTravel initialDirectionOfTravel,
            GameBoardCoordinate initial
        )
        {
            _snakeyToken       = snakeyToken;
            _doesSnakeySpeedUp = doesSnakeySpeedUp;
            _interval          = _initialInterval = interval;
            _directionOfTravel = initialDirectionOfTravel;

            _snakeBody = new Queue <GameBoardCoordinate>();
            _snakeBody.Enqueue(initial);
        }
Example #9
0
        private DirectionOfTravel GetOpposite(DirectionOfTravel directionOfTravel)
        {
            switch (directionOfTravel)
            {
            case DirectionOfTravel.Up:
                return(DirectionOfTravel.Down);

            case DirectionOfTravel.Right:
                return(DirectionOfTravel.Left);

            case DirectionOfTravel.Down:
                return(DirectionOfTravel.Up);

            case DirectionOfTravel.Left:
                return(DirectionOfTravel.Right);

            default:
                throw new ArgumentOutOfRangeException("directionOfTravel");
            }
        }
Example #10
0
    public void update(float timedelta)
    {
        // Exit early if we are not actually a traffic light.
        if (horizontalRoad == null)
        {
            phase = DirectionOfTravel.Left;
        }
        else if (verticalRoad == null)
        {
            phase = DirectionOfTravel.Up;
        }

        if (horizontalRoad != null && horizontalRoad.size == Size.Large)
        {
            releaseACarInDirection(DirectionOfTravel.Left);
            releaseACarInDirection(DirectionOfTravel.Right);
        }

        if (verticalRoad != null && verticalRoad.size == Size.Large)
        {
            releaseACarInDirection(DirectionOfTravel.Up);
            releaseACarInDirection(DirectionOfTravel.Down);
        }

        // Check to see if we need to change the light.
        currentSeconds += timedelta;
        if (currentSeconds > totalSeconds)
        {
            currentSeconds = 0;
            phase          = (DirectionOfTravel)(((byte)phase + 1) % 4);
        }


        releaseACarInDirection(phase);
        releaseACarInDirection(((DirectionOfTravel)(((byte)phase + 2) % 4)));
    }
Example #11
0
    /*
     * We want to get a RoadTile relative to this one.
     *
     * Returns: Nullable RoadTile
     */
    public RoadTile getNeighborRoadTile(DirectionOfTravel directionOfTravel)
    {
        switch (directionOfTravel)
        {
        case DirectionOfTravel.Up:
            if (location.row + 1 >= roadManager.tiles.GetLength(0))
            {
                return(null);
            }
            return(roadManager.tiles[location.row + 1, location.col]);

        case DirectionOfTravel.Down:
            if (location.row <= 0)
            {
                return(null);
            }
            return(roadManager.tiles[location.row - 1, location.col]);

        case DirectionOfTravel.Left:
            if (location.col <= 0)
            {
                return(null);
            }
            return(roadManager.tiles[location.row, location.col - 1]);

        case DirectionOfTravel.Right:
            if (location.col + 1 >= roadManager.tiles.GetLength(1))
            {
                return(null);
            }
            return(roadManager.tiles[location.row, location.col + 1]);

        default:
            return(null);
        }
    }
Example #12
0
 protected void PassengerSummonsElevatorOnFloor(int floor, DirectionOfTravel directionOfTravel)
 {
     Brains.EnqueueSummonRequest(floor, directionOfTravel);
 }
Example #13
0
 public SummonRequest(int floor, DirectionOfTravel directionOfTravel)
     : base(floor)
 {
     DirectionOfTravel = directionOfTravel;
 }
Example #14
0
    private void releaseACarInDirection(DirectionOfTravel dir)
    {
        // Debug.
        var a = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 2);
        var b = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 3);

        switch (dir)
        {
        case DirectionOfTravel.Up:
            if (roadManager.data.drawDebug)
            {
                Debug.DrawLine(a, b, Color.magenta, 0.5f);
            }

            if (upQueue.Count > 0)
            {
                if (upQueue.Peek().canMove())
                {
                    upQueue.Peek().move();
                    upQueue.Dequeue();
                }
            }
            else
            {
                // Debug.Log("Nothing in queue UP");
                currentSeconds += 0.1f;     // Help the clock along.
            }

            break;

        case DirectionOfTravel.Down:
            a = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 2);
            b = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 1);
            if (roadManager.data.drawDebug)
            {
                Debug.DrawLine(a, b, Color.magenta, 0.5f);
            }

            if (downQueue.Count > 0)
            {
                if (downQueue.Peek().canMove())
                {
                    downQueue.Peek().move();
                    downQueue.Dequeue();
                }
            }
            else
            {
                // Debug.Log("Nothing in queue DOWN");
                currentSeconds += 0.1f;     // Help the clock along.
            }

            break;

        case DirectionOfTravel.Left:
            a = new Vector3(location.col * 4 + 1, 8, location.row * 4 + 2);
            b = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 2);
            if (roadManager.data.drawDebug)
            {
                Debug.DrawLine(a, b, Color.magenta, 0.5f);
            }

            if (leftQueue.Count > 0)
            {
                if (leftQueue.Peek().canMove())
                {
                    leftQueue.Peek().move();
                    leftQueue.Dequeue();
                }
            }
            else
            {
                // Debug.Log("Nothing in queue LEFT");
                currentSeconds += 0.1f;     // Help the clock along.
            }

            break;

        case DirectionOfTravel.Right:
            a = new Vector3(location.col * 4 + 3, 8, location.row * 4 + 2);
            b = new Vector3(location.col * 4 + 2, 8, location.row * 4 + 2);
            if (roadManager.data.drawDebug)
            {
                Debug.DrawLine(a, b, Color.magenta, 0.5f);
            }
            if (rightQueue.Count > 0)
            {
                if (rightQueue.Peek().canMove())
                {
                    rightQueue.Peek().move();
                    rightQueue.Dequeue();
                }
            }
            else
            {
                // Debug.Log("Nothing in queue RIGHT");
                currentSeconds += 0.1f;     // Help the clock along.
            }

            break;
        }
    }
Example #15
0
 public void EnqueueSummonRequest(int floor, DirectionOfTravel directionOfTravel)
 {
     _requests.Add(new SummonRequest(floor, directionOfTravel));
 }
    void Update()
    {
        if(!Eneble){
            return;
        }

        // проверим надоли дальше двигать
            if(Direction == DirectionOfTravel.StartFinish){
                if(Orientation == PlatformOrientation.Vertical){
                    if(transform.position.y == Finish){
                        Direction = DirectionOfTravel.FinishStart;
                        Eneble = Loop;
                        return;
                    }
                }
                else{
                    if(transform.position.x == Finish){
                        Direction = DirectionOfTravel.FinishStart;
                        Eneble = Loop;
                        return;
                    }
                }
            }
            else{
                if(Orientation == PlatformOrientation.Vertical){
                    if(transform.position.y == Start){
                        Direction = DirectionOfTravel.StartFinish;
                        Eneble = Loop;
                        return;
                    }
                }
                else{
                    if(transform.position.x == Start){
                        Direction = DirectionOfTravel.StartFinish;
                        Eneble = Loop;
                        return;
                    }
                }
            }

        // двигаем объект
        if(Direction ==DirectionOfTravel.StartFinish){
            if(PositiveDirection){
                if(Orientation == PlatformOrientation.Vertical){
                    if((Finish - transform.position.y) < Parallax){
                        transform.position = transform.position + CalculateParralaxVector(Finish - transform.position.y);
                    }
                    else{
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
                else{
                    if((Finish - transform.position.x) < Parallax){
                        transform.position = transform.position + CalculateParralaxVector(Finish - transform.position.x);
                    }
                    else{
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
            }
            else{
                if(Orientation == PlatformOrientation.Vertical){
                    if((transform.position.y - Finish) < Parallax){
                        transform.position = transform.position - CalculateParralaxVector(transform.position.y - Finish);
                    }
                    else{
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }
                else{
                    if((transform.position.x - Finish) < Parallax){
                        transform.position = transform.position - CalculateParralaxVector(transform.position.x - Finish);
                    }
                    else{
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }

            }
        }
        else{
            if(!PositiveDirection){
                if(Orientation == PlatformOrientation.Vertical){
                    if((Start - transform.position.y) < Parallax){
                        transform.position = transform.position + CalculateParralaxVector(Start - transform.position.y);
                    }
                    else{
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
                else{
                    if((Start - transform.position.x) < Parallax){
                        transform.position = transform.position + CalculateParralaxVector(Start - transform.position.x);
                    }
                    else{
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
            }
            else{
                if(Orientation == PlatformOrientation.Vertical){
                    if((transform.position.y - Start) < Parallax){
                        transform.position = transform.position - CalculateParralaxVector(transform.position.y - Start);
                    }
                    else{
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }
                else{
                    if((transform.position.x - Start) < Parallax){
                        transform.position =  transform.position - CalculateParralaxVector(transform.position.x - Start);
                    }
                    else{
                        transform.position = transform.position - CalculateParralaxVector(Parallax);;
                    }
                }
            }

        }
    }
Example #17
0
        private void calculateDirectionOfTravel()
        {
            DirectionOfTravel result;

            if (previousCell == null)
            {
                //  By default report that the agent is heading north
                result = DirectionOfTravel.NORTH;
            }
            else
            {
                if (currentCell.Coordinates.Y < previousCell.Coordinates.Y)
                    result = DirectionOfTravel.NORTH;
                else
                    if (currentCell.Equals(previousCell.CellToSouth))
                        result = DirectionOfTravel.SOUTH;
                    else
                        if (currentCell.Equals(previousCell.CellToEast))
                            result = DirectionOfTravel.EAST;
                        else
                            if (currentCell.Equals(previousCell.CellToWest))
                                result = DirectionOfTravel.WEST;
                            else
                            {
                                Debug.WriteLine("Invalid heading reached whilst evaluating direction of travel");

                                result = DirectionOfTravel.NORTH;
                            }
            }

            directionOfTravel = result;
        }
    void Update()
    {
        if (!Eneble)
        {
            return;
        }

        // проверим надоли дальше двигать
        if (Direction == DirectionOfTravel.StartFinish)
        {
            if (Orientation == PlatformOrientation.Vertical)
            {
                if (transform.position.y == Finish)
                {
                    Direction = DirectionOfTravel.FinishStart;
                    Eneble    = Loop;
                    return;
                }
            }
            else
            {
                if (transform.position.x == Finish)
                {
                    Direction = DirectionOfTravel.FinishStart;
                    Eneble    = Loop;
                    return;
                }
            }
        }
        else
        {
            if (Orientation == PlatformOrientation.Vertical)
            {
                if (transform.position.y == Start)
                {
                    Direction = DirectionOfTravel.StartFinish;
                    Eneble    = Loop;
                    return;
                }
            }
            else
            {
                if (transform.position.x == Start)
                {
                    Direction = DirectionOfTravel.StartFinish;
                    Eneble    = Loop;
                    return;
                }
            }
        }

        // двигаем объект
        if (Direction == DirectionOfTravel.StartFinish)
        {
            if (PositiveDirection)
            {
                if (Orientation == PlatformOrientation.Vertical)
                {
                    if ((Finish - transform.position.y) < Parallax)
                    {
                        transform.position = transform.position + CalculateParralaxVector(Finish - transform.position.y);
                    }
                    else
                    {
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
                else
                {
                    if ((Finish - transform.position.x) < Parallax)
                    {
                        transform.position = transform.position + CalculateParralaxVector(Finish - transform.position.x);
                    }
                    else
                    {
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
            }
            else
            {
                if (Orientation == PlatformOrientation.Vertical)
                {
                    if ((transform.position.y - Finish) < Parallax)
                    {
                        transform.position = transform.position - CalculateParralaxVector(transform.position.y - Finish);
                    }
                    else
                    {
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }
                else
                {
                    if ((transform.position.x - Finish) < Parallax)
                    {
                        transform.position = transform.position - CalculateParralaxVector(transform.position.x - Finish);
                    }
                    else
                    {
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }
            }
        }
        else
        {
            if (!PositiveDirection)
            {
                if (Orientation == PlatformOrientation.Vertical)
                {
                    if ((Start - transform.position.y) < Parallax)
                    {
                        transform.position = transform.position + CalculateParralaxVector(Start - transform.position.y);
                    }
                    else
                    {
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
                else
                {
                    if ((Start - transform.position.x) < Parallax)
                    {
                        transform.position = transform.position + CalculateParralaxVector(Start - transform.position.x);
                    }
                    else
                    {
                        transform.position = transform.position + CalculateParralaxVector(Parallax);
                    }
                }
            }
            else
            {
                if (Orientation == PlatformOrientation.Vertical)
                {
                    if ((transform.position.y - Start) < Parallax)
                    {
                        transform.position = transform.position - CalculateParralaxVector(transform.position.y - Start);
                    }
                    else
                    {
                        transform.position = transform.position - CalculateParralaxVector(Parallax);
                    }
                }
                else
                {
                    if ((transform.position.x - Start) < Parallax)
                    {
                        transform.position = transform.position - CalculateParralaxVector(transform.position.x - Start);
                    }
                    else
                    {
                        transform.position = transform.position - CalculateParralaxVector(Parallax);;
                    }
                }
            }
        }
    }
Example #19
0
    /*
     * Starting from the tile we are in, can we go in cardinal direction. If so, we return the cost. As determined by the cost function.
     *
     * If we have a road then, we check to see if it goes in the right direction
     * Otherwise, we return true if our direct neighbor has a road in any direction
     *
     */
    public int?costOfTravelInDirectionOfTravel(DirectionOfTravel directionOfTravel, RoadTile nextRoadTile)
    {
        switch (directionOfTravel)
        {
        case DirectionOfTravel.Up:
            // If we have a vertical road, and they have a vertical road going up
            if (verticalRoad != null && verticalRoad.up_left && nextRoadTile.verticalRoad != null && nextRoadTile.verticalRoad.up_left)
            {
                var cost = 0;     //roadManager.tiles[tile.location.row, tile.location.col].upQueue.Count;
                return(verticalRoad.cost() / 2 + nextRoadTile.verticalRoad.cost() / 2 + cost);
            }
            else if (verticalRoad != null && verticalRoad.up_left && nextRoadTile.horizontalRoad != null)
            {
                var cost = 0;     //roadManager.tiles[tile.location.row, tile.location.col].upQueue.Count;
                return(verticalRoad.cost() + cost);
            }

            break;

        case DirectionOfTravel.Down:
            if (verticalRoad != null && verticalRoad.down_right && nextRoadTile.verticalRoad != null && nextRoadTile.verticalRoad.down_right)
            {
                return(verticalRoad.cost() / 2 + nextRoadTile.verticalRoad.cost() / 2);
            }
            else if (verticalRoad != null && verticalRoad.down_right && nextRoadTile.horizontalRoad != null)
            {
                var cost = 0;     //roadManager.tiles[tile.location.row, tile.location.col].upQueue.Count;
                return(verticalRoad.cost() + cost);
            }

            break;

        case DirectionOfTravel.Left:
            if (horizontalRoad != null && horizontalRoad.up_left && nextRoadTile.horizontalRoad != null && nextRoadTile.horizontalRoad.up_left)
            {
                return(horizontalRoad.cost() / 2 + nextRoadTile.horizontalRoad.cost() / 2);
            }
            else if (horizontalRoad != null && horizontalRoad.up_left && nextRoadTile.verticalRoad != null)
            {
                var cost = 0;     //roadManager.tiles[tile.location.row, tile.location.col].upQueue.Count;
                return(horizontalRoad.cost() + cost);
            }

            break;

        case DirectionOfTravel.Right:
            if (horizontalRoad != null && horizontalRoad.down_right && nextRoadTile.horizontalRoad != null && nextRoadTile.horizontalRoad.down_right)
            {
                return(horizontalRoad.cost() / 2 + nextRoadTile.horizontalRoad.cost() / 2);
            }
            else if (horizontalRoad != null && horizontalRoad.down_right && nextRoadTile.verticalRoad != null)
            {
                var cost = 0;     //roadManager.tiles[tile.location.row, tile.location.col].upQueue.Count;
                return(horizontalRoad.cost() + cost);
            }

            break;
        }

        return(null);
    }