Exemplo n.º 1
0
    private void OnSongRouletteItemChangedSlot(SlotChangeEvent slotChangeEvent)
    {
        int newSelectedSongIndex = SelectedSongIndex;

        if (slotChangeEvent.Direction == ESlotListDirection.TowardsNextSlot)
        {
            newSelectedSongIndex = NumberUtils.Mod(SelectedSongIndex - 1, songs.Count);
            foreach (SongRouletteItem songRouletteItem in songRouletteItems)
            {
                RouletteItemPlaceholder nextPlaceholder = songRouletteItem.GetCurrentSlot().GetNextSlot() as RouletteItemPlaceholder;
                songRouletteItem.TargetRouletteItem = nextPlaceholder != null && activeRouletteItemPlaceholders.Contains(nextPlaceholder)
                    ? nextPlaceholder
                    : null;
            }

            int newlyCreatedSongIndex = NumberUtils.Mod(newSelectedSongIndex - (activeRouletteItemPlaceholders.Count / 2), songs.Count);
            CreateSongRouletteItem(songs[newlyCreatedSongIndex], activeRouletteItemPlaceholders.First());
        }
        else if (slotChangeEvent.Direction == ESlotListDirection.TowardsPreviousSlot)
        {
            newSelectedSongIndex = NumberUtils.Mod(SelectedSongIndex + 1, songs.Count);
            foreach (SongRouletteItem songRouletteItem in songRouletteItems)
            {
                RouletteItemPlaceholder previousPlaceholder = songRouletteItem.GetCurrentSlot().GetPreviousSlot() as RouletteItemPlaceholder;
                songRouletteItem.TargetRouletteItem = previousPlaceholder != null && activeRouletteItemPlaceholders.Contains(previousPlaceholder)
                    ? previousPlaceholder
                    : null;
            }

            int newlyCreatedSongIndex = NumberUtils.Mod(newSelectedSongIndex + (activeRouletteItemPlaceholders.Count / 2), songs.Count);
            CreateSongRouletteItem(songs[newlyCreatedSongIndex], activeRouletteItemPlaceholders.Last());
        }
        Selection.Value = new SongSelection(songs[newSelectedSongIndex], newSelectedSongIndex, songs.Count);
    }
Exemplo n.º 2
0
    void Start()
    {
        activeRouletteItemPlaceholders = new List <RouletteItemPlaceholder>(rouletteItemPlaceholders);
        centerItemIndex = (int)Math.Floor(rouletteItemPlaceholders.Count / 2f);
        centerItem      = rouletteItemPlaceholders[centerItemIndex];

        if (!showRouletteItemPlaceholders)
        {
            foreach (RouletteItemPlaceholder item in rouletteItemPlaceholders)
            {
                Image image = item.GetComponentInChildren <Image>();
                image.enabled = false;
            }
        }
    }
Exemplo n.º 3
0
    private SongRouletteItem CreateSongRouletteItem(SongMeta songMeta, RouletteItemPlaceholder rouletteItem)
    {
        SongRouletteItem item = Instantiate(songRouletteItemPrefab);

        item.transform.SetParent(transform);
        item.SongMeta = songMeta;
        item.RectTransform.anchorMin        = rouletteItem.RectTransform.anchorMin;
        item.RectTransform.anchorMax        = rouletteItem.RectTransform.anchorMax;
        item.RectTransform.sizeDelta        = Vector2.zero;
        item.RectTransform.anchoredPosition = Vector2.zero;
        item.TargetRouletteItem             = rouletteItem;
        item.AnimTime  = 1;
        item.ScaleTime = 1;

        item.GetComponent <Button>().onClick.AddListener(() => SelectSong(songMeta));

        songRouletteItems.Add(item);
        return(item);
    }
Exemplo n.º 4
0
    private SongRouletteItem CreateSongRouletteItem(SongMeta songMeta, RouletteItemPlaceholder rouletteItem)
    {
        SongRouletteItem item = Instantiate(songRouletteItemPrefab);

        item.transform.SetParent(transform);
        item.SongMeta = songMeta;
        item.RectTransform.anchorMin        = rouletteItem.RectTransform.anchorMin;
        item.RectTransform.anchorMax        = rouletteItem.RectTransform.anchorMax;
        item.RectTransform.sizeDelta        = Vector2.zero;
        item.RectTransform.anchoredPosition = Vector2.zero;
        item.TargetRouletteItem             = rouletteItem;
        item.RectTransform.localScale       = Vector3.zero;

        Button button = item.GetComponent <Button>();

        button.onClick.AddListener(() => OnSongButtonClicked(songMeta));
        songMetaToButtonMap[songMeta] = button;

        songRouletteItems.Add(item);
        return(item);
    }
Exemplo n.º 5
0
    private SongRouletteItem CreateSongRouletteItem(SongMeta songMeta, RouletteItemPlaceholder rouletteItem)
    {
        SongRouletteItem item = Instantiate(songRouletteItemPrefab, songRouletteItemContainer);

        injector.InjectAllComponentsInChildren(item);
        item.name     = songMeta.Artist + "-" + songMeta.Title;
        item.SongMeta = songMeta;
        item.RectTransform.anchorMin        = rouletteItem.RectTransform.anchorMin;
        item.RectTransform.anchorMax        = rouletteItem.RectTransform.anchorMax;
        item.RectTransform.sizeDelta        = Vector2.zero;
        item.RectTransform.anchoredPosition = Vector2.zero;
        item.TargetRouletteItem             = rouletteItem;

        Button button = item.GetComponent <Button>();

        button.OnClickAsObservable().Subscribe(_ => OnSongButtonClicked(songMeta));
        songMetaToButtonMap[songMeta] = button;

        songRouletteItems.Add(item);
        SlotListControl.ListItems.Add(item);
        return(item);
    }
Exemplo n.º 6
0
    void Start()
    {
        for (int i = 0; i < rouletteItemPlaceholders.Count; i++)
        {
            ISlotListSlot previousSlot = 0 <= (i - 1) ? rouletteItemPlaceholders[i - 1] : null;
            ISlotListSlot nextSlot     = (i + 1) <= (rouletteItemPlaceholders.Count - 1) ? rouletteItemPlaceholders[i + 1] : null;
            rouletteItemPlaceholders[i].SetNeighborSlots(previousSlot, nextSlot);
        }
        SlotListControl.SlotChangeEventStream.Subscribe(OnSongRouletteItemChangedSlot);

        activeRouletteItemPlaceholders = new List <RouletteItemPlaceholder>(rouletteItemPlaceholders);
        centerItemIndex = (int)Math.Floor(rouletteItemPlaceholders.Count / 2f);
        centerItem      = rouletteItemPlaceholders[centerItemIndex];

        if (!showRouletteItemPlaceholders)
        {
            foreach (RouletteItemPlaceholder item in rouletteItemPlaceholders)
            {
                Image image = item.GetComponentInChildren <Image>();
                image.enabled = false;
            }
        }
    }