public void Movement(GameTime gameTime) { if (hasAggro(position, playerposition)) { int[] tempNode = new int[2]; MoveMe.mobs = mobs; MoveMe.allies = allies; tempNode = MoveMe.DoSearch(position); moveingToPosition.X = tempNode[0]; moveingToPosition.Y = tempNode[1]; direction = MoveMe.chosenDirection; moving = true; fTotalElapsedTime = 0; } if (targetAlly) { if (((Math.Abs(targetedAlly.position[0] - position[0]) + (Math.Abs(targetedAlly.position[1] - position[1])))) < 2) { aniSprite.Attacking = true; aniSprite.Walking = false; } } else { if (((Math.Abs(playerposition[0] - position[0]) + (Math.Abs(playerposition[1] - position[1])))) < 2) { aniSprite.Attacking = true; aniSprite.Walking = false; } } }
/// <summary> /// Allows the game component to update itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> public override void Update(GameTime gameTime) { if (alive) { float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; fTotalElapsedTime += elapsed; if (fTotalElapsedTime > 0.016) { if (!moving) { //moveingFrom = new Vector2(position[0], position[1]); int[] tempNode = new int[2]; CheckAggro(); if (!Aggro) { MoveMe.playerposition = playerposition; } else { MoveMe.playerposition = targetMob.position; } oldPosition = position; MoveMe.mobs = mobs; MoveMe.allies = allies; tempNode = MoveMe.DoSearch(position); moveingToPosition.X = tempNode[0]; moveingToPosition.Y = tempNode[1]; direction = MoveMe.chosenDirection; moving = true; //position = tempNode; <- for insta move } fTotalElapsedTime = 0; } } aniSprite.Update(gameTime); calculateDraw(); base.Update(gameTime); }