Exemple #1
0
    private void OnClick(ItemDropBubble it, Action onClick, Action onDone)
    {
        SmoothPopUpManager.ShowPopUp(it.transform.localPosition, $"<color=green>+1</color> {it.Item.GetName()}", ConfigObject.GetColorFromRarity(it.Item.Rarity));

        if (!EquipItemProcessor.Instance.ProcessItem(it.Item, () => {
            Pool.Return(it.gameObject);
            onClick?.Invoke();
        }))
        {
            SoundManager.Instance.PlaySound(SoundManager.Instance.PickUp, 1);
        }
    }
    void OnChange(int val)
    {
        if (prevVal != -1 && val > prevVal)
        {
            SmoothPopUpManager.ShowPopUp(SpawnPointOfNumberIncreasePopUp.position, "+" + (val - prevVal), Color.green, true);
        }
        prevVal = val;
        var prog = previous.GetProgress();

        ProgressText.text = $"{prog.current} / {prog.max}";
        ProgressFill.rectTransform.anchorMax =
            ProgressFill.rectTransform.anchorMax.SetX(Mathf.Clamp01((float)(prog.current / prog.max)));
    }
Exemple #3
0
    IEnumerator PlaySong(Action <float> onDone)
    {
        float time = 0;


        int topIndex    = 0;
        int middleIndex = 0;
        int bottomIndex = 0;

        List <ClickReceiver> ActiveNotes    = new List <ClickReceiver>();
        List <ClickReceiver> NotesToDestroy = new List <ClickReceiver>();

        int Misses = 0;
        int Hits   = 0;

        MissArea.MouseClick2D.RemoveAllListeners();
        MissArea.MouseClick2D.AddListener(pos => {
            SmoothPopUpManager.ShowPopUp(pos, "Miss!", Color.red, true);
            Misses++;
        });

        while (ActiveNotes.Count > 0 ||
               topIndex < Song.TopNotes.Count ||
               middleIndex < Song.MiddleNotes.Count ||
               bottomIndex < Song.BottomNotes.Count())
        {
            time += Time.deltaTime;
            if (topIndex < Song.TopNotes.Count && Song.TopNotes[topIndex].AppearTime < time)
            {
                //Spawn Top Note
                var note = Instantiate(NotePrefab, TopParent, false);

                RectTransform rt = (RectTransform)note.transform;
                rt.anchoredPosition = rt.anchoredPosition.SetX(StartX);

                note.MouseDown2D.AddListener(vec => {
                    NotesToDestroy.Add(note);
                    Hits++;
                    SmoothPopUpManager.ShowPopUp(note.transform.position, "Hit!", Color.green, true);
                });
                ActiveNotes.Add(note);
                topIndex++;
            }

            if (middleIndex < Song.MiddleNotes.Count() && Song.MiddleNotes[middleIndex].AppearTime < time)
            {
                // Spawn middle note
                var note = Instantiate(NotePrefab, MiddleParent, false);

                RectTransform rt = (RectTransform)note.transform;
                rt.anchoredPosition = rt.anchoredPosition.SetX(StartX);

                note.MouseDown2D.AddListener(vec => {
                    NotesToDestroy.Add(note);
                    Hits++;
                    SmoothPopUpManager.ShowPopUp(note.transform.position, "Hit!", Color.green, true);
                });
                ActiveNotes.Add(note);
                middleIndex++;
            }

            if (bottomIndex < Song.BottomNotes.Count && Song.BottomNotes[bottomIndex].AppearTime < time)
            {
                //Spawn bottom note
                var note = Instantiate(NotePrefab, BottomParent, false);

                RectTransform rt = (RectTransform)note.transform;
                rt.anchoredPosition = rt.anchoredPosition.SetX(StartX);

                note.MouseDown2D.AddListener(vec => {
                    NotesToDestroy.Add(note);
                    Hits++;
                    SmoothPopUpManager.ShowPopUp(note.transform.position, "Hit!", Color.green, true);
                });
                ActiveNotes.Add(note);
                bottomIndex++;
            }

            float dist = Time.deltaTime * Song.PixelsPerSecond;

            foreach (var note in ActiveNotes)
            {
                RectTransform rt = (RectTransform)note.transform;
                rt.anchoredPosition = rt.anchoredPosition.AddX(-dist);

                if (rt.anchoredPosition.x < 0)
                {
                    if (NotesToDestroy.Contains(note))
                    {
                        // Click it on the frame it was going out
                    }
                    else
                    {
                        SmoothPopUpManager.ShowPopUp(note.transform.position, "Miss!", Color.red, true);
                        Misses++;
                    }
                    NotesToDestroy.Add(note);
                }
            }

            foreach (var note in NotesToDestroy)
            {
                ActiveNotes.Remove(note);
                Destroy(note.gameObject);
            }

            NotesToDestroy.Clear();

            yield return(null);
        }

        float acc;

        if (Misses == 0)
        {
            acc = 1;
        }
        else
        {
            acc = (float)Hits / (Hits + Misses);
        }
        Debug.Log($"Song done. Acc: {acc}");
        Blocker.SetActive(false);
        Area.SetActive(false);
        onDone?.Invoke(acc);
    }
 void Awake()
 {
     popUpPool = new ObjectPrefabPool(PopUpPrefab, transform, 2);
     instance  = this;
 }
Exemple #5
0
 private void OnAdd(FollowerData d)
 {
     SmoothPopUpManager.ShowPopUp(EnemyArrowPosition.position, "<color=green>+1</color> " + d.DisplayName, Color.white, true);
     ResetFollowers();
 }