diff --git a/PracticePlugin/LooperUI.cs b/PracticePlugin/LooperUI.cs index 5372588..c1925cc 100644 --- a/PracticePlugin/LooperUI.cs +++ b/PracticePlugin/LooperUI.cs @@ -3,6 +3,7 @@ using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; +using BeatSaberMarkupLanguage; namespace PracticePlugin { @@ -54,13 +55,19 @@ public void Init(SongSeeker songSeeker) _prevEndTime = 1; } + var tex = Texture2D.whiteTexture; + var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.one * 0.5f, 100, 1); + _lineDuration = new GameObject("Line Duration").AddComponent(); var rectTransform = _lineDuration.rectTransform; rectTransform.SetParent(transform, false); rectTransform.anchorMin = Vector2.up * 0.5f; rectTransform.anchorMax = Vector2.up * 0.5f; rectTransform.sizeDelta = Vector2.zero; + _lineDuration.sprite = sprite; + _lineDuration.type = Image.Type.Simple; _lineDuration.color = LineDurationColor; + _lineDuration.material = Utilities.ImageResources.NoGlowMat; var startCursorImage = new GameObject("Start Cursor").AddComponent(); rectTransform = startCursorImage.rectTransform; @@ -69,7 +76,10 @@ public void Init(SongSeeker songSeeker) rectTransform.anchorMax = Vector2.up * 0.5f; rectTransform.sizeDelta = CursorSize; rectTransform.localEulerAngles = new Vector3(0, 0, 45); + startCursorImage.sprite = sprite; + startCursorImage.type = Image.Type.Simple; startCursorImage.color = StartColor; + startCursorImage.material = Utilities.ImageResources.NoGlowMat; _startCursor = startCursorImage.gameObject.AddComponent(); _startCursor.BeginDragEvent += CursorOnBeginDragEvent; @@ -83,8 +93,11 @@ public void Init(SongSeeker songSeeker) rectTransform.anchorMax = Vector2.up * 0.5f; rectTransform.sizeDelta = CursorSize; rectTransform.localEulerAngles = new Vector3(0, 0, 45); + endCursorImage.sprite = sprite; + endCursorImage.type = Image.Type.Simple; endCursorImage.color = EndColor; - + endCursorImage.material = Utilities.ImageResources.NoGlowMat; + _endCursor = endCursorImage.gameObject.AddComponent(); _endCursor.BeginDragEvent += CursorOnBeginDragEvent; _endCursor.EndDragEvent += CursorOnEndDragEvent; diff --git a/PracticePlugin/Plugin.cs b/PracticePlugin/Plugin.cs index ee3c721..a551e5d 100644 --- a/PracticePlugin/Plugin.cs +++ b/PracticePlugin/Plugin.cs @@ -13,6 +13,11 @@ using IPA; using BS_Utils.Gameplay; using BeatSaberMarkupLanguage; +using ModestTree; +using BeatSaberMarkupLanguage.ViewControllers; +using UnityEngine.UIElements; +using BS_Utils.Utilities; + namespace PracticePlugin { [Plugin(RuntimeOptions.SingleStartInit)] @@ -142,6 +147,7 @@ public void OnApplicationStart() adjustNJSWithSpeed = Config.GetBool("PracticePlugin", "Adjust NJS With Speed", false, true); SceneManager.activeSceneChanged += OnActiveSceneChanged; SceneManager.sceneLoaded += OnSceneLoaded; + } public void OnSceneLoaded(Scene arg0, LoadSceneMode arg1) @@ -337,21 +343,19 @@ public void OnActiveSceneChanged(Scene oldScene, Scene newScene) _spawnController = Resources.FindObjectsOfTypeAll().FirstOrDefault(); } - - if (_lastLevelId != _levelData.GameplayCoreSceneSetupData.difficultyBeatmap.level.levelID && !string.IsNullOrEmpty(_lastLevelId)) { PlayingNewSong = true; // TimeScale = 1; - _lastLevelId = _levelData.GameplayCoreSceneSetupData.difficultyBeatmap.level.levelID; + _lastLevelId = _levelData.GameplayCoreSceneSetupData.difficultyBeatmap.level.levelID; } else { PlayingNewSong = false; } - + _lastLevelId = _levelData.GameplayCoreSceneSetupData.difficultyBeatmap.level.levelID; _mixer = Resources.FindObjectsOfTypeAll().FirstOrDefault(); AudioTimeSync = Resources.FindObjectsOfTypeAll().FirstOrDefault(); @@ -371,9 +375,8 @@ public void OnActiveSceneChanged(Scene oldScene, Scene newScene) else _timeScale = _levelData.GameplayCoreSceneSetupData.gameplayModifiers.songSpeedMul; SharedCoroutineStarter.instance.StartCoroutine(DelayedSetup()); - } - + } } @@ -407,21 +410,25 @@ public System.Collections.IEnumerator DelayedSetup() if (canvas == null) { Console.WriteLine("Canvas Null"); - } - BSMLParser.instance.Parse(BeatSaberMarkupLanguage.Utilities.GetResourceContent(Assembly.GetExecutingAssembly(), "PracticePlugin.PracticeUI.bsml"), canvas.gameObject, PracticeUI.instance); - var uiObj = new GameObject("PracticePlugin Seeker UI"); + BSMLParser.instance.Parse(BeatSaberMarkupLanguage.Utilities.GetResourceContent(Assembly.GetExecutingAssembly(), "PracticePlugin.PracticeUI.bsml"), canvas.gameObject, PracticeUI.instance); + GameObject uiObj = new GameObject("PracticePlugin Seeker UI", typeof(RectTransform)); + (uiObj.transform as RectTransform).anchorMin = new Vector2(0, 0); + (uiObj.transform as RectTransform).anchorMax = new Vector2(1, 1); + (uiObj.transform as RectTransform).sizeDelta = new Vector2(0, 0); + _uiElementsCreator = uiObj.AddComponent(); _uiElementsCreator.ValueChangedEvent += UIElementsCreatorOnValueChangedEvent; _uiElementsCreator.Init(); - uiObj.transform.SetParent(canvas); - // CurvedCanvasSettings curvedCanvasSettings = uiObj.AddComponent(); - // curvedCanvasSettings.SetRadius(150f); + + uiObj.transform.SetParent(canvas, false); + uiObj.transform.localScale = new Vector3(1, 1, 1); - uiObj.transform.localPosition = new Vector3(0, -65f, 0f); + uiObj.transform.localPosition = new Vector3(0f, -3f, 0f); + // TimeScale = TimeScale; @@ -648,4 +655,4 @@ public static TextMeshProUGUI CreateText(RectTransform parent, string text, Vect return textMesh; } } -} \ No newline at end of file +} diff --git a/PracticePlugin/PracticeUI.bsml b/PracticePlugin/PracticeUI.bsml index a6edc24..0e11882 100644 --- a/PracticePlugin/PracticeUI.bsml +++ b/PracticePlugin/PracticeUI.bsml @@ -1,5 +1,5 @@  - + diff --git a/PracticePlugin/SongSeeker.cs b/PracticePlugin/SongSeeker.cs index 91985e0..09af40f 100644 --- a/PracticePlugin/SongSeeker.cs +++ b/PracticePlugin/SongSeeker.cs @@ -5,6 +5,8 @@ using UnityEngine.EventSystems; using UnityEngine.UI; using HMUI; +using BeatSaberMarkupLanguage; + namespace PracticePlugin { public class SongSeeker : MonoBehaviour, IDragHandler, IPointerDownHandler @@ -43,6 +45,10 @@ public class SongSeeker : MonoBehaviour, IDragHandler, IPointerDownHandler internal int _startTimeSamples; public void Init() { + var tex = Texture2D.whiteTexture; + var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.one * 0.5f, 100, 1); + + _songAudioSource = Plugin.AudioTimeSync.GetPrivateField("_audioSource"); var rectTransform = transform as RectTransform; rectTransform.anchorMin = Vector2.right * 0.5f; @@ -54,18 +60,21 @@ public void Init() rectTransform = _seekBackg.rectTransform; rectTransform.SetParent(transform, false); rectTransform.sizeDelta = SeekBarSize; + _seekBackg.sprite = sprite; + _seekBackg.type = Image.Type.Simple; _seekBackg.color = BackgroundColor; + _seekBackg.material = Utilities.ImageResources.NoGlowMat; _seekBar = new GameObject("Seek Bar").AddComponent(); rectTransform = _seekBar.rectTransform; rectTransform.SetParent(transform, false); rectTransform.sizeDelta = SeekBarSize; - var tex = Texture2D.whiteTexture; - var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.one * 0.5f, 100, 1); + _seekBar.sprite = sprite; _seekBar.type = Image.Type.Filled; _seekBar.fillMethod = Image.FillMethod.Horizontal; _seekBar.color = ForegroundColor; + _seekBar.material = Utilities.ImageResources.NoGlowMat; _seekCursor = new GameObject("Seek Cursor").AddComponent(); rectTransform = _seekCursor.rectTransform; @@ -73,12 +82,16 @@ public void Init() rectTransform.anchorMin = Vector2.up * 0.5f; rectTransform.anchorMax = Vector2.up * 0.5f; rectTransform.sizeDelta = SeekCursorSize; + + _seekCursor.sprite = sprite; + _seekCursor.type = Image.Type.Simple; _seekCursor.color = SeekCursorColor; + _seekCursor.material = Utilities.ImageResources.NoGlowMat; - _currentTime = Plugin.CreateText(this.GetComponent(), "0:00", new Vector2(-83f, -1f)); + _currentTime = BeatSaberUI.CreateText(this.GetComponent(), "0:00", new Vector2(-83f, -1f)); _currentTime.fontSize = 5f; // rectTransform = _currentTime.rectTransform; // rectTransform.anchorMin = Vector2.up * 0.5f; @@ -89,7 +102,7 @@ public void Init() // _currentTime.fontSizeMin = 1; _currentTime.alignment = TextAlignmentOptions.Right; - _timeLength = Plugin.CreateText(this.GetComponent(), "0:00", new Vector2(87f, -1f)); + _timeLength = BeatSaberUI.CreateText(this.GetComponent(), "0:00", new Vector2(87f, -1f)); _timeLength.fontSize = 5f; _timeLength.alignment = TextAlignmentOptions.Left;