public DirectionOfTravel GetDirectionOfTravel() { _directionOfTravel = _newDirectionOfTravel ?? _directionOfTravel; _newDirectionOfTravel = null; return(_directionOfTravel); }
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"); } }
public GameBoardCoordinate AddNewSnakeSegment(DirectionOfTravel directionOfTravel) { var newSnakeSegment = CalculateNewSnakeSegment(directionOfTravel); _snakeBody.Enqueue(newSnakeSegment); return(newSnakeSegment); }
public void ChangeDirectionOfTravel(DirectionOfTravel directionOfTravel) { if (_directionOfTravel == directionOfTravel || _directionOfTravel == GetOpposite(directionOfTravel)) { return; } _newDirectionOfTravel = directionOfTravel; }
private void DoChangePlayerOneDirectionOfTravel(DirectionOfTravel directionOfTravel) { try { _playerOneSnakey.ChangeDirectionOfTravel(directionOfTravel); } catch (Exception) { // TODO } }
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 }
private void DoChangePlayerTwoDirectionOfTravel(DirectionOfTravel directionOfTravel) { try { ISnakeyViewModel snakey = _playerTwoSnakey ?? _playerOneSnakey; snakey.ChangeDirectionOfTravel(directionOfTravel); } catch (Exception) { // TODO } }
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); }
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"); } }
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))); }
/* * 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); } }
protected void PassengerSummonsElevatorOnFloor(int floor, DirectionOfTravel directionOfTravel) { Brains.EnqueueSummonRequest(floor, directionOfTravel); }
public SummonRequest(int floor, DirectionOfTravel directionOfTravel) : base(floor) { DirectionOfTravel = directionOfTravel; }
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; } }
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);; } } } } }
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);; } } } } }
/* * 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); }