示例#1
0
        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);
        }
示例#2
0
        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);
        }