using System; using Ichni.RhythmGame.Beatmap; using TMPro; using UnityEngine; namespace Ichni.RhythmGame { public class TriggerConnectJudgeUnit : NoteJudgeUnit { public GameElement connectedJudgeTrigger; protected override GameObject GetHintImagePrefab() => GameManager.instance.basePrefabs.triggerHint; public TriggerConnectJudgeUnit(NoteBase note, GameElement judgeTrigger) : base(note) { this.connectedJudgeTrigger = judgeTrigger; } public override void SetShowingJudge(bool isShowing) { if(connectedJudgeTrigger == null) return; base.SetShowingJudge(isShowing); if (judgeHintImage != null) { judgeHintImage.GetComponent().text = connectedJudgeTrigger.elementName; } } public override void UpdateJudge() { if(note.isFirstJudged || connectedJudgeTrigger == null) return; Vector2 noteScreenPosition = note.noteScreenPosition; RectTransform canvasRect = GameManager.instance.judgeHintCanvas.GetComponent(); if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, noteScreenPosition, null, out Vector2 uiPosition)) { judgeHintImage.anchoredPosition = uiPosition; } } public override NoteJudgeUnit_BM ConvertToBM() { return new TriggerConnectJudgeUnit_BM(connectedJudgeTrigger.elementGuid); } } namespace Beatmap { public class TriggerConnectJudgeUnit_BM : NoteJudgeUnit_BM { public Guid connectedTriggerID; public TriggerConnectJudgeUnit_BM() { } public TriggerConnectJudgeUnit_BM(Guid connectedTriggerID) { this.connectedTriggerID = connectedTriggerID; } public override NoteJudgeUnit ConvertToGameType(NoteBase attachedNote) { return new TriggerConnectJudgeUnit(attachedNote, GameElement_BM.GetElement(connectedTriggerID)); } } } }