Exemplo n.º 1
0
    public void Sort(MapSortCriterium criterium, bool reverse)
    {
        List <MapListElement> maps = new List <MapListElement>();

        for (int i = 0; i < mapListContent.childCount; i++)
        {
            maps.Add(mapListContent.GetChild(i).GetComponent <MapListElement>());
        }

        IEnumerable <MapListElement> sort;

        switch (criterium)
        {
        case MapSortCriterium.Title:
            sort = Enumerable.OrderBy(maps, (el) => el.mapTitleText.text,
                                      new AlphabetComparer(reverse));
            break;

        case MapSortCriterium.Author:
            sort = Enumerable.OrderBy(maps, (el) => el.mapAuthorText.text,
                                      new AlphabetComparer(reverse));
            break;

        case MapSortCriterium.Record:
            sort = Enumerable.OrderBy(maps, (el) => el.recordText.text,
                                      new RecordComparer(reverse));
            break;

        case MapSortCriterium.Rating:
            sort = Enumerable.OrderBy(maps, (el) => - el.ratingImage.fillAmount,
                                      new FloatComparer(reverse));
            break;

        case MapSortCriterium.Difficulty:
            sort = Enumerable.OrderBy(maps, (el) => - el.difficultyImage.fillAmount,
                                      new FloatComparer(reverse));
            break;

        default:
            Debug.LogError("Unkown map sort criterium: " + criterium);
            sort = null;
            break;
        }

        int eli = 0;

        foreach (MapListElement el in sort)
        {
            for (int j = eli; j < maps.Count; j++)
            {
                if (el == mapListContent.GetChild(j).GetComponent <MapListElement>())
                {
                    mapListContent.GetChild(j).SetSiblingIndex(eli);
                    break;
                }
            }
            eli++;
        }
    }
Exemplo n.º 2
0
    public void Sort(int criterium)
    {
        MapSortCriterium nextCriterium = (MapSortCriterium)criterium;

        lastReverse ^= nextCriterium == lastCriterium;
        Sort(nextCriterium, lastReverse);
        lastCriterium = nextCriterium;
    }