Example #1
0
 /// <summary>
 /// The update function is to catch input and to do the movement of the agent, this is temporary code. for testing purposes only. 
 /// </summary>
 void Update()
 {
     if (!currentlyMoving)
     {
         if (pathList.Count > 0)
         {
             if (pathList[0] == currentMovePoint.neighborList[0])
             //if (Input.GetKeyDown(KeyCode.UpArrow) && currentMovePoint.North)
             {
                 pointToMoveTo = currentMovePoint.neighborList[0];
                 currentMovementDirection = DirectionOfMovement.North;
                 currentlyMoving = true;
                 currentMovementTime = timeToMoveToPoint;
             }
             else if (pathList[0] == currentMovePoint.neighborList[2])
             //else if (Input.GetKeyDown(KeyCode.DownArrow) && currentMovePoint.South)
             {
                 pointToMoveTo = currentMovePoint.neighborList[2];
                 currentMovementDirection = DirectionOfMovement.South;
                 currentlyMoving = true;
                 currentMovementTime = timeToMoveToPoint;
             }
             else if (pathList[0] == currentMovePoint.neighborList[3])
             //else if (Input.GetKeyDown(KeyCode.LeftArrow) && currentMovePoint.West)
             {
                 pointToMoveTo = currentMovePoint.neighborList[3];
                 currentMovementDirection = DirectionOfMovement.West;
                 currentlyMoving = true;
                 currentMovementTime = timeToMoveToPoint;
             }
             else if (pathList[0] == currentMovePoint.neighborList[1])
             //else if (Input.GetKeyDown(KeyCode.RightArrow) && currentMovePoint.East)
             {
                 pointToMoveTo = currentMovePoint.neighborList[1];
                 currentMovementDirection = DirectionOfMovement.East;
                 currentlyMoving = true;
                 currentMovementTime = timeToMoveToPoint;
             }
         }
     }
     else
     {
         switch (currentMovementDirection)
         {
             case DirectionOfMovement.North:
                 if (currentMovementTime < 0.0f)
                 {
                     currentMovePoint = pointToMoveTo;
                     currentMovementDirection = DirectionOfMovement.None;
                     currentMovementTime = 0.0f;
                     transform.position = currentMovePoint.transform.position;
                     currentlyMoving = false;
                     pointToMoveTo = null;
                     pathList.RemoveAt(0);
                     if (GridBehavior.preCombat && pathList.Count == 0)
                         theGrid.startCombat();
                 }
                 else
                 {
                     float forTForLerp = (timeToMoveToPoint - currentMovementTime) / timeToMoveToPoint;
                     float forTheChangeInZ = Mathf.Lerp(currentMovePoint.transform.position.z, pointToMoveTo.transform.position.z, forTForLerp);
                     transform.position = new Vector3(transform.position.x, transform.position.y, forTheChangeInZ);
                     currentMovementTime -= Time.deltaTime;
                 }
                 break;
             case DirectionOfMovement.South:
                 if (currentMovementTime < 0.0f)
                 {
                     currentMovePoint = pointToMoveTo;
                     currentMovementDirection = DirectionOfMovement.None;
                     currentMovementTime = 0.0f;
                     transform.position = currentMovePoint.transform.position;
                     currentlyMoving = false;
                     pointToMoveTo = null;
                     pathList.RemoveAt(0);
                     if (GridBehavior.preCombat && pathList.Count == 0)
                         theGrid.startCombat();
                 }
                 else
                 {
                     float forTForLerp = (timeToMoveToPoint - currentMovementTime) / timeToMoveToPoint;
                     float forTheChangeInZ = Mathf.Lerp(currentMovePoint.transform.position.z, pointToMoveTo.transform.position.z, forTForLerp);
                     transform.position = new Vector3(transform.position.x, transform.position.y, forTheChangeInZ);
                     currentMovementTime -= Time.deltaTime;
                 }
                 break;
             case DirectionOfMovement.East:
                 if (currentMovementTime < 0.0f)
                 {
                     currentMovePoint = pointToMoveTo;
                     currentMovementDirection = DirectionOfMovement.None;
                     currentMovementTime = 0.0f;
                     transform.position = currentMovePoint.transform.position;
                     currentlyMoving = false;
                     pointToMoveTo = null;
                     pathList.RemoveAt(0);
                     if (GridBehavior.preCombat && pathList.Count == 0)
                         theGrid.startCombat();
                 }
                 else
                 {
                     float forTForLerp = (timeToMoveToPoint - currentMovementTime) / timeToMoveToPoint;
                     float forTheChangeInX = Mathf.Lerp(currentMovePoint.transform.position.x, pointToMoveTo.transform.position.x, forTForLerp);
                     transform.position = new Vector3(forTheChangeInX, transform.position.y, transform.position.z);
                     currentMovementTime -= Time.deltaTime;
                 }
                 break;
             case DirectionOfMovement.West:
                 if (currentMovementTime < 0.0f)
                 {
                     currentMovePoint = pointToMoveTo;
                     currentMovementDirection = DirectionOfMovement.None;
                     currentMovementTime = 0.0f;
                     transform.position = currentMovePoint.transform.position;
                     currentlyMoving = false;
                     pointToMoveTo = null;
                     pathList.RemoveAt(0);
                     if (GridBehavior.preCombat && pathList.Count == 0)
                         theGrid.startCombat();
                 }
                 else
                 {
                     float forTForLerp = (timeToMoveToPoint - currentMovementTime) / timeToMoveToPoint;
                     float forTheChangeInX = Mathf.Lerp(currentMovePoint.transform.position.x, pointToMoveTo.transform.position.x, forTForLerp);
                     transform.position = new Vector3(forTheChangeInX, transform.position.y, transform.position.z);
                     currentMovementTime -= Time.deltaTime;
                 }
                 break;
         }
     }
 }
Example #2
0
		public Piece Move(DirectionOfMovement directionOfMovement)
		{
			var moveDictionary = new Dictionary<DirectionOfMovement, Func<Piece>>()
			{
				{DirectionOfMovement.Down, () =>
						new Piece(Coordinates.Select(x => x.Move(0,1)))},
				{DirectionOfMovement.Up, () =>
					new Piece(Coordinates.Select(x => x.Move(0,-1)))},
				{DirectionOfMovement.Left, () =>
					new Piece(Coordinates.Select(x => x.Move(-1,0)))},
				{DirectionOfMovement.Right, () =>
					new Piece(Coordinates.Select(x => x.Move(1,0)))}
			};

			return moveDictionary[directionOfMovement]();
		}