private void MoveToEnemy(Character character) { Character closestEnemy = charList[0]; int minDistance = (int)Math.Sqrt(((int)character.getPosition().Y / 60 - (int)closestEnemy.getPosition().Y / 60) * ((int)character.getPosition().Y / 60 - (int)closestEnemy.getPosition().Y / 60) - ((int)character.getPosition().X / 60 - (int)closestEnemy.getPosition().X / 60) * ((int)character.getPosition().X / 60 - (int)closestEnemy.getPosition().X) / 60); for (int i = 0; i < map.getHeight(); i++) { for (int j = 0; j < map.getWidth(); j++) { if (map.GetSquare(i, j).getCurrentChar() != null && map.GetSquare(i, j).getCurrentChar().PlayerIndex == 1) { Character temp = map.GetSquare(i, j).getCurrentChar(); int distance = (int)Math.Sqrt(((int)character.getPosition().Y / 60 - (int)temp.getPosition().Y / 60) * ((int)character.getPosition().Y / 60 - (int)temp.getPosition().Y / 60) - ((int)character.getPosition().X / 60 - (int)temp.getPosition().X / 60) * ((int)character.getPosition().X / 60 - (int)temp.getPosition().X / 60)); if (distance < minDistance) { closestEnemy = temp; minDistance = distance; } } } } if (character.HasMoved == false) { cursor.MoveHelper(character); int distance = 9000; Vector2 toMove = new Vector2(); for (int i = 0; i < map.getHeight(); i++) { for (int j = 0; j < map.getWidth(); j++) { if (map.GetSquare(i, j).IsMovable == true) { int distanceToEnemy = (int)Math.Sqrt(Math.Pow((int)j - ((int)closestEnemy.getPosition().Y / 60), 2) + Math.Pow((int)i - ((int)closestEnemy.getPosition().X / 60), 2)); if (distanceToEnemy < distance) { if(distanceToEnemy >= 1) { distance = distanceToEnemy; toMove.X = i; toMove.Y = j; } } } } } character.Move((int)toMove.X, (int)toMove.Y); character.HasMoved = true; cursor.ClearBoard(); } }
private void MoveToCamp(Character character) { Vector2 campPosition; Vector2 minCampPosition = new Vector2(); ; int minCampDistance = 9000; Character nearbyCamp; foreach (Character camp in charList) { if (camp.CharType == "camp") { campPosition = camp.getPosition(); campPosition.X = (int)campPosition.X / 60; campPosition.Y = (int)campPosition.Y / 60; if ((int)Math.Sqrt((campPosition.X * campPosition.X) + (campPosition.Y * campPosition.Y)) < minCampDistance) { minCampPosition = campPosition; nearbyCamp = camp; } } } cursor.MoveHelper(character); int minDistance = 9000; Vector2 toMove = new Vector2(); for (int i = 0; i < map.getHeight(); i++) { for (int j = 0; j < map.getWidth(); j++) { if (map.GetSquare(i, j).IsMovable == true) { int distanceToCamp = (int)Math.Sqrt(Math.Abs((i - minCampPosition.Y) * (i - minCampPosition.Y)) - Math.Abs((j - minCampPosition.X) * (j - minCampPosition.X))); if (distanceToCamp < minDistance) { minDistance = distanceToCamp; toMove.X = j; toMove.Y = i; } } } } if (character.HasMoved == false) { character.Move((int)toMove.Y, (int)toMove.X); character.HasMoved = true; //map.GetSquare((int)character.getPosition().Y / 60, (int)character.getPosition().X / 60).TileDeselect(); cursor.ClearBoard(); if ((int)(character.getPosition().X / 60) + 1 < 10 && map.GetSquare((int)(character.getPosition().Y / 60), (int)(character.getPosition().X / 60) + 1).getCurrentChar() != null) { if (map.GetSquare((int)(character.getPosition().Y / 60), (int)(character.getPosition().X / 60) + 1).getCurrentChar().CharType == "camp") { BuyMercenary(character); } } if ((int)(character.getPosition().Y / 60) - 1 >= 0 && map.GetSquare((int)(character.getPosition().Y / 60) - 1, (int)(character.getPosition().X / 60)).getCurrentChar() != null) { if (map.GetSquare((int)(character.getPosition().Y / 60) - 1, (int)(character.getPosition().X / 60)).getCurrentChar().CharType == "camp") { BuyMercenary(character); } } if ((int)(character.getPosition().X / 60) - 1 >= 0 && map.GetSquare((int)(character.getPosition().Y / 60), (int)(character.getPosition().X / 60) - 1).getCurrentChar() != null) { if (map.GetSquare((int)(character.getPosition().Y / 60), (int)(character.getPosition().X / 60) - 1).getCurrentChar().CharType == "camp") { BuyMercenary(character); } } if ((character.getPosition().Y / 60) + 1 < 10 && map.GetSquare((int)(character.getPosition().Y / 60) + 1, (int)(character.getPosition().X / 60)).getCurrentChar() != null) { if (map.GetSquare((int)(character.getPosition().Y / 60) + 1, (int)(character.getPosition().X / 60)).getCurrentChar().CharType == "camp") { BuyMercenary(character); } } } }