Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion PracticePlugin/LooperUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using BeatSaberMarkupLanguage;

namespace PracticePlugin
{
Expand Down Expand Up @@ -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<ImageView>();
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<ImageView>();
rectTransform = startCursorImage.rectTransform;
Expand All @@ -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<LooperCursor>();
_startCursor.BeginDragEvent += CursorOnBeginDragEvent;
Expand All @@ -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<LooperCursor>();
_endCursor.BeginDragEvent += CursorOnBeginDragEvent;
_endCursor.EndDragEvent += CursorOnEndDragEvent;
Expand Down
35 changes: 21 additions & 14 deletions PracticePlugin/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -337,21 +343,19 @@ public void OnActiveSceneChanged(Scene oldScene, Scene newScene)
_spawnController = Resources.FindObjectsOfTypeAll<BeatmapObjectSpawnController>().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<AudioManagerSO>().FirstOrDefault();
AudioTimeSync = Resources.FindObjectsOfTypeAll<AudioTimeSyncController>().FirstOrDefault();
Expand All @@ -371,9 +375,8 @@ public void OnActiveSceneChanged(Scene oldScene, Scene newScene)
else
_timeScale = _levelData.GameplayCoreSceneSetupData.gameplayModifiers.songSpeedMul;
SharedCoroutineStarter.instance.StartCoroutine(DelayedSetup());

}

}
}

Expand Down Expand Up @@ -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>();
_uiElementsCreator.ValueChangedEvent += UIElementsCreatorOnValueChangedEvent;
_uiElementsCreator.Init();
uiObj.transform.SetParent(canvas);
// CurvedCanvasSettings curvedCanvasSettings = uiObj.AddComponent<CurvedCanvasSettings>();
// 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;

Expand Down Expand Up @@ -648,4 +655,4 @@ public static TextMeshProUGUI CreateText(RectTransform parent, string text, Vect
return textMesh;
}
}
}
}
2 changes: 1 addition & 1 deletion PracticePlugin/PracticeUI.bsml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<bg xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='https://monkeymanboy.github.io/BSML-Docs/ https://raw.githubusercontent.com/monkeymanboy/BSML-Docs/gh-pages/BSMLSchema.xsd'>
<settings-container child-control-width='true' child-expand-width='true' anchor-pos-y='-40'>
<settings-container child-control-width='true' child-expand-width='true' anchor-pos-y='-52'>
<increment-setting value='speed' formatter='speedFormatter' on-change='setSpeed' text='Speed' increment='0.1' min='0' max='3'></increment-setting>
<increment-setting formatter='njsFormatter' value='njs' on-change='setnjs' text='NJS' increment='1' min='1' max='50' integer-only='true'></increment-setting>
<increment-setting formatter='spawnOffsetFormatter' value='offset' on-change='setoffset' text='Spawn Offset' increment='0.1' min='-2' max='2' integer-only='false'></increment-setting>
Expand Down
21 changes: 17 additions & 4 deletions PracticePlugin/SongSeeker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
using UnityEngine.EventSystems;
using UnityEngine.UI;
using HMUI;
using BeatSaberMarkupLanguage;

namespace PracticePlugin
{
public class SongSeeker : MonoBehaviour, IDragHandler, IPointerDownHandler
Expand Down Expand Up @@ -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>("_audioSource");
var rectTransform = transform as RectTransform;
rectTransform.anchorMin = Vector2.right * 0.5f;
Expand All @@ -54,31 +60,38 @@ 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<ImageView>();
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<ImageView>();
rectTransform = _seekCursor.rectTransform;
rectTransform.SetParent(_seekBar.transform, false);
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<RectTransform>(), "0:00", new Vector2(-83f, -1f));
_currentTime = BeatSaberUI.CreateText(this.GetComponent<RectTransform>(), "0:00", new Vector2(-83f, -1f));
_currentTime.fontSize = 5f;
// rectTransform = _currentTime.rectTransform;
// rectTransform.anchorMin = Vector2.up * 0.5f;
Expand All @@ -89,7 +102,7 @@ public void Init()
// _currentTime.fontSizeMin = 1;
_currentTime.alignment = TextAlignmentOptions.Right;

_timeLength = Plugin.CreateText(this.GetComponent<RectTransform>(), "0:00", new Vector2(87f, -1f));
_timeLength = BeatSaberUI.CreateText(this.GetComponent<RectTransform>(), "0:00", new Vector2(87f, -1f));
_timeLength.fontSize = 5f;
_timeLength.alignment = TextAlignmentOptions.Left;

Expand Down