コード例 #1
0
    private int FindPosToInsert([NotNull] List <PlanetData> planets, int planetIndex, [NotNull] QuadTreeLeaf visitedLeaf)
    {
        var posToInsert = -1;

        for (int j = mConstants.GetPlanetsToVisualize() - 1; j > -1; --j)
        {
            if (j > planets.Count - 1)
            {
                continue;
            }

            var inStoreDistance   = Math.Abs(mPlayer.Score - planets[j].Score);
            var pretenderDistance = Math.Abs(mPlayer.Score - visitedLeaf.GetPlanetRating(planetIndex));
            if (inStoreDistance > pretenderDistance)
            {
                posToInsert = j;
                continue;
            }
            if (inStoreDistance == pretenderDistance)
            {
                var pretenderPlanet = visitedLeaf.GetPlanetData(planetIndex);
                var distanceToStore = (mPlayer.GetX() - planets[j].X) * (mPlayer.GetX() - planets[j].X)
                                      + (mPlayer.GetY() - planets[j].Y) * (mPlayer.GetY() - planets[j].Y);
                var distanceToPretender = (mPlayer.GetX() - pretenderPlanet.X) * (mPlayer.GetX() - pretenderPlanet.X)
                                          + (mPlayer.GetY() - pretenderPlanet.Y) * (mPlayer.GetY() - pretenderPlanet.Y);
                if (distanceToPretender < distanceToStore)
                {
                    posToInsert = j;
                    continue;
                }
            }
            break;
        }
        return(posToInsert);
    }