diff --git a/Assets/Resources/Sprites/Editor/ui/add-file.png b/Assets/Resources/Sprites/Editor/ui/add-file.png index f42e6bcbd..77dca7a14 100644 Binary files a/Assets/Resources/Sprites/Editor/ui/add-file.png and b/Assets/Resources/Sprites/Editor/ui/add-file.png differ diff --git a/Assets/Resources/Sprites/Editor/ui/save.png b/Assets/Resources/Sprites/Editor/ui/save.png index 60cc600f7..050006a09 100644 Binary files a/Assets/Resources/Sprites/Editor/ui/save.png and b/Assets/Resources/Sprites/Editor/ui/save.png differ diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity index fd1985be6..3d412f17e 100644 --- a/Assets/Scenes/Editor.unity +++ b/Assets/Scenes/Editor.unity @@ -2758,7 +2758,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 85, y: 0} + m_AnchoredPosition: {x: 82.70001, y: 0} m_SizeDelta: {x: 35, y: 35} m_Pivot: {x: 0, y: 0.5} --- !u!114 &678553526 @@ -5929,6 +5929,9 @@ MonoBehaviour: Screen: {fileID: 558010761} GridGameSelector: {fileID: 1154875943} Timeline: {fileID: 1861169747} + NewBTN: {fileID: 1683100750} + OpenBTN: {fileID: 0} + SaveBTN: {fileID: 0} --- !u!114 &1423699438 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5941,8 +5944,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f86858990a87c764892672104bdaef1f, type: 3} m_Name: m_EditorClassIdentifier: - level: {fileID: 4900000, guid: 4b7512c586e16a847a5b8490bf35e852, type: 3} - music: {fileID: 8300000, guid: 92cf585c80f8fb843964e525aef1406c, type: 3} + level: {fileID: 4900000, guid: cbe1a43c8ddc790498fde2e01e66d23e, type: 3} + music: {fileID: 8300000, guid: 51af38323954a8d44874780ba4577fb4, type: 3} debugUI: 0 playOnStart: 0 editor: 1 @@ -6663,7 +6666,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 45, y: 0} + m_AnchoredPosition: {x: 42.700012, y: 0} m_SizeDelta: {x: 35, y: 35} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1665554291 @@ -6903,7 +6906,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 5, y: 0} + m_AnchoredPosition: {x: 2.7, y: 0} m_SizeDelta: {x: 35, y: 35} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1683100750 diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index a77da2c82..58d4dc81e 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -23,6 +23,11 @@ namespace RhythmHeavenMania.Editor [Header("Components")] [SerializeField] private Timeline Timeline; + [Header("Toolbar")] + [SerializeField] private Button NewBTN; + [SerializeField] private Button OpenBTN; + [SerializeField] private Button SaveBTN; + public static List EventObjs = new List(); public static Editor instance { get; private set; } @@ -51,6 +56,10 @@ namespace RhythmHeavenMania.Editor } GridGameSelector.GetComponent().SelectGame("Game Manager", 1); + + Tooltip.instance.AddTooltip(NewBTN.gameObject, "New"); + Tooltip.instance.AddTooltip(OpenBTN.gameObject, "Open"); + Tooltip.instance.AddTooltip(SaveBTN.gameObject, "Save"); } public void Update() diff --git a/Assets/Scripts/LevelEditor/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline.cs index e21e616d1..a0a084bb0 100644 --- a/Assets/Scripts/LevelEditor/Timeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline.cs @@ -108,10 +108,10 @@ namespace RhythmHeavenMania.Editor lastBeatPos = Conductor.instance.songPositionInBeats; - if (Input.GetMouseButton(1) && !Conductor.instance.isPlaying) + if (Input.GetMouseButton(1) && !Conductor.instance.isPlaying && CheckIfMouseInTimeline()) { RectTransformUtility.ScreenPointToLocalPointInRectangle(TimelineContent, Input.mousePosition, Editor.instance.EditorCamera, out lastMousePos); - TimelineSlider.localPosition = new Vector3(Mathp.Round2Nearest(lastMousePos.x + 0.12f, 0.25f), TimelineSlider.transform.localPosition.y); + TimelineSlider.localPosition = new Vector3(Mathf.Clamp(Mathp.Round2Nearest(lastMousePos.x + 0.12f, 0.25f), 0, Mathf.Infinity), TimelineSlider.transform.localPosition.y); Conductor.instance.SetBeat(TimelineSlider.transform.localPosition.x); } diff --git a/Assets/Scripts/Util/Jukebox.cs b/Assets/Scripts/Util/Jukebox.cs index 38e5c0dcd..1d3e5d9d5 100644 --- a/Assets/Scripts/Util/Jukebox.cs +++ b/Assets/Scripts/Util/Jukebox.cs @@ -46,7 +46,9 @@ namespace RhythmHeavenMania.Util AudioSource aus = oneShot.AddComponent(); aus.playOnAwake = false; Sound snd = oneShot.AddComponent(); - snd.clip = Resources.Load($"Sfx/{name}"); + AudioClip clip = Resources.Load($"Sfx/{name}"); + snd.clip = clip; + // snd.pitch = (clip.length / Conductor.instance.secPerBeat); } public static void PlayOneShotGame(string name) diff --git a/Assets/Scripts/Util/Sound.cs b/Assets/Scripts/Util/Sound.cs index c93d9f5ea..08bea75ab 100644 --- a/Assets/Scripts/Util/Sound.cs +++ b/Assets/Scripts/Util/Sound.cs @@ -7,21 +7,48 @@ namespace RhythmHeavenMania.Util public class Sound : MonoBehaviour { public AudioClip clip; - public float pitch; + public float pitch = 1; private AudioSource audioSource; + private int pauseTimes = 0; + + private float startTime; + private void Start() { audioSource = GetComponent(); - audioSource.PlayOneShot(clip); - StartCoroutine(play()); + audioSource.clip = clip; + audioSource.pitch = pitch; + audioSource.PlayScheduled(Time.time); + + startTime = Conductor.instance.songPosition; } - private IEnumerator play() + private void Update() { - yield return new WaitForSeconds(clip.length); - Destroy(this.gameObject); + if (Conductor.instance.isPaused && !Conductor.instance.isPlaying && pauseTimes == 0) + { + audioSource.Pause(); + pauseTimes = 1; + print("paused"); + } + else if (Conductor.instance.isPlaying && !Conductor.instance.isPaused && pauseTimes == 1) + { + audioSource.Play(); + print("played"); + pauseTimes = 0; + } + + else if (!Conductor.instance.isPlaying && !Conductor.instance.isPaused) + { + Destroy(this.gameObject); + } + + if (Conductor.instance.songPosition > startTime + clip.length) + { + Destroy(this.gameObject); + } } } }