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))); }
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; }
private void OnAdd(FollowerData d) { SmoothPopUpManager.ShowPopUp(EnemyArrowPosition.position, "<color=green>+1</color> " + d.DisplayName, Color.white, true); ResetFollowers(); }