private static float DistanceToNearestPlayer(Charakter charakter, Point near) { Vector3 hilf1 = new Vector3(charakter.LogicalPosition.X - (charakter.LogicalPosition.Y - (charakter.LogicalPosition.Y & 1)) / 2, -(charakter.LogicalPosition.X - (charakter.LogicalPosition.Y - (charakter.LogicalPosition.Y & 1)) / 2) - charakter.LogicalPosition.Y, charakter.LogicalPosition.Y); Vector3 hilf2 = new Vector3(near.X - (near.Y - (near.Y & 1)) / 2, -(near.X - (near.Y - (near.Y & 1)) / 2) - near.Y, near.Y); float hilf3 = Math.Max(Math.Abs(hilf1.X - hilf2.X), Math.Abs(hilf1.Y - hilf2.Y)); hilf3 = Math.Max(hilf3, Math.Abs(hilf1.Z - hilf2.Z)); return(hilf3); }
private static Point NearestPlayerCharacter(Charakter character) { Vector3 hilf = HexMap._board[character.LogicalPosition.X, character.LogicalPosition.Y].Position; Point nearest = character.LogicalPosition; float bestdistance = float.MaxValue; foreach (Charakter player in HexMap.playableCharacter) { Vector3 hilf2 = HexMap._board[player.LogicalPosition.X, player.LogicalPosition.Y].Position; if ((hilf - hilf2).Length() < bestdistance) { bestdistance = (hilf - hilf2).Length(); nearest = player.LogicalPosition; } } return(nearest); }