diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity index a083d0282..e6c07bc32 100644 --- a/Assets/Scenes/Editor.unity +++ b/Assets/Scenes/Editor.unity @@ -1638,7 +1638,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 358789044} - - component: {fileID: 358789045} - component: {fileID: 358789046} m_Layer: 5 m_Name: Content @@ -1658,6 +1657,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 841081096} + - {fileID: 1149103345} - {fileID: 1549727852} m_Father: {fileID: 590210126} m_RootOrder: 0 @@ -1665,34 +1666,8 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 3.4249878, y: -20.69043} - m_SizeDelta: {x: -6.849988, y: -41.380432} + m_SizeDelta: {x: -6.849982, y: -41.380646} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &358789045 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358789043} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 45 - m_Right: 0 - m_Top: 30 - m_Bottom: 30 - m_ChildAlignment: 0 - m_Spacing: 5 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 --- !u!114 &358789046 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4228,12 +4203,12 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 1549727852} + m_Father: {fileID: 358789044} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 0, y: -60} + m_AnchoredPosition: {x: 0, y: -60.004875} m_SizeDelta: {x: 35, y: 35} m_Pivot: {x: 0, y: 0} --- !u!114 &841081097 @@ -5471,12 +5446,12 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 1549727852} + m_Father: {fileID: 358789044} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 45, y: -60} + m_AnchoredPosition: {x: 45, y: -60.004875} m_SizeDelta: {x: 320, y: 35} m_Pivot: {x: 0, y: 0} --- !u!114 &1149103346 @@ -7269,6 +7244,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1549727852} + - component: {fileID: 1549727853} m_Layer: 5 m_Name: GameObject m_TagString: Untagged @@ -7286,17 +7262,41 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 841081096} - - {fileID: 1149103345} + m_Children: [] m_Father: {fileID: 358789044} - m_RootOrder: 0 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -99999} - m_SizeDelta: {x: 0, y: 99999} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!114 &1549727853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549727851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 45 + m_Right: 0 + m_Top: 25 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &1567318395 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index 108f731be..195b99c5e 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -57,8 +57,6 @@ namespace RhythmHeavenMania.Editor GameIcon_.name = EventCaller.instance.minigames[i].displayName; } - GridGameSelector.GetComponent().SelectGame("Game Manager", 1); - Tooltip.instance.AddTooltip(NewBTN.gameObject, "New"); Tooltip.instance.AddTooltip(OpenBTN.gameObject, "Open"); Tooltip.instance.AddTooltip(SaveBTN.gameObject, "Save"); diff --git a/Assets/Scripts/LevelEditor/EventSelector.meta b/Assets/Scripts/LevelEditor/EventSelector.meta new file mode 100644 index 000000000..501b11084 --- /dev/null +++ b/Assets/Scripts/LevelEditor/EventSelector.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5d9268cae8d83043a31b826d64b9495 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs new file mode 100644 index 000000000..419c1728d --- /dev/null +++ b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs @@ -0,0 +1,181 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +using TMPro; +using DG.Tweening; +using Starpelly; + +namespace RhythmHeavenMania.Editor +{ + public class GridGameSelector : MonoBehaviour + { + public string SelectedMinigame; + + [Header("Components")] + public GameObject GameEventSelector; + public GameObject EventRef; + public GameObject CurrentSelected; + private RectTransform eventsParent; + + [Header("Properties")] + private EventCaller.MiniGame mg; + private bool gameOpen; + [SerializeField] private int currentEventIndex; + private int dragTimes; + public float posDif; + public int ignoreSelectCount; + + private void Start() + { + eventsParent = EventRef.transform.parent.GetChild(2).GetComponent(); + SelectGame("Game Manager", 1); + + SetColors(); + } + + private void Update() + { + if (gameOpen) + { + if (Input.GetKeyDown(KeyCode.DownArrow)) + { + UpdateIndex(currentEventIndex + 1); + } + else if (Input.GetKeyDown(KeyCode.UpArrow)) + { + UpdateIndex(currentEventIndex - 1); + } + } + + if (Input.mouseScrollDelta.y != 0) + { + UpdateIndex(currentEventIndex - Mathf.RoundToInt(Input.mouseScrollDelta.y)); + } + } + + #region Functions + + public void UpdateIndex(int amount, bool updateCol = true) + { + currentEventIndex = amount; + + EventRef.transform.parent.DOKill(); + CurrentSelected.transform.DOKill(); + + if (currentEventIndex < 0) + currentEventIndex = eventsParent.childCount - 1; + else if (currentEventIndex > eventsParent.childCount - 1) + currentEventIndex = 0; + + if (currentEventIndex > 2 && eventsParent.childCount >= 8) + { + if (eventsParent.childCount - 4 > currentEventIndex) + { + EventRef.transform.parent.DOLocalMoveY((EventRef.GetComponent().sizeDelta.y) * (currentEventIndex - 2), 0.35f).SetEase(Ease.OutExpo); + } + else + { + EventRef.transform.parent.DOLocalMoveY((EventRef.GetComponent().sizeDelta.y) * (eventsParent.childCount - 7), 0.35f).SetEase(Ease.OutExpo); + } + } + else + EventRef.transform.parent.DOLocalMoveY(0, 0.35f).SetEase(Ease.OutExpo); + + CurrentSelected.transform.DOLocalMoveY(eventsParent.transform.GetChild(currentEventIndex).localPosition.y + eventsParent.transform.localPosition.y, 0.35f).SetEase(Ease.OutExpo); + + if (updateCol) + SetColors(currentEventIndex); + } + + public void SelectGame(string gameName, int index) + { + mg = EventCaller.instance.minigames.Find(c => c.displayName == gameName); + transform.GetChild(index).GetChild(0).gameObject.SetActive(true); + SelectedMinigame = gameName; + gameOpen = true; + + DestroyEvents(); + AddEvents(); + + currentEventIndex = 0; + UpdateIndex(0, false); + + Editor.instance.SetGameEventTitle($"Select game event for {gameName}"); + } + + private void AddEvents() + { + if (mg.name != "gameManager") + { + GameObject sg = Instantiate(EventRef, eventsParent); + sg.GetComponent().text = "switchGame"; + sg.SetActive(true); + sg.GetComponent().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); + } + + for (int i = 0; i < mg.actions.Count; i++) + { + if (mg.actions[i].actionName == "switchGame") continue; + GameObject g = Instantiate(EventRef, eventsParent); + g.GetComponent().text = mg.actions[i].actionName; + g.SetActive(true); + } + } + + private void DestroyEvents() + { + for (int i = 0; i < transform.childCount; i++) + { + transform.GetChild(i).GetChild(0).gameObject.SetActive(false); + } + + for (int i = 0; i < eventsParent.childCount; i++) + { + Destroy(eventsParent.GetChild(i).gameObject); + } + } + + private void SetColors(int index = 0) + { + CurrentSelected.GetComponent().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); + + for (int i = 0; i < eventsParent.transform.childCount; i++) + eventsParent.GetChild(i).GetComponent().color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB(); + + eventsParent.GetChild(index).GetComponent().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); + } + + #endregion + + #region Events + + public void Drag() + { + if (Conductor.instance.NotStopped()) return; + + if (Timeline.instance.CheckIfMouseInTimeline() && dragTimes < 1) + { + dragTimes++; + if (currentEventIndex == 0) + { + Timeline.instance.AddEventObject($"gameManager/switchGame/{mg.name}", true, new Vector3(0, 0)); + } + else + { + Timeline.instance.AddEventObject(mg.name + "/" + mg.actions[currentEventIndex - 1].actionName, true, new Vector3(0, 0)); + } + } + } + + public void Drop() + { + if (Conductor.instance.NotStopped()) return; + + dragTimes = 0; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Scripts/LevelEditor/GridGameSelector.cs.meta b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs.meta similarity index 100% rename from Assets/Scripts/LevelEditor/GridGameSelector.cs.meta rename to Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs.meta diff --git a/Assets/Scripts/LevelEditor/GridGameSelectorGame.cs b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelectorGame.cs similarity index 100% rename from Assets/Scripts/LevelEditor/GridGameSelectorGame.cs rename to Assets/Scripts/LevelEditor/EventSelector/GridGameSelectorGame.cs diff --git a/Assets/Scripts/LevelEditor/GridGameSelectorGame.cs.meta b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelectorGame.cs.meta similarity index 100% rename from Assets/Scripts/LevelEditor/GridGameSelectorGame.cs.meta rename to Assets/Scripts/LevelEditor/EventSelector/GridGameSelectorGame.cs.meta diff --git a/Assets/Scripts/LevelEditor/GridGameSelector.cs b/Assets/Scripts/LevelEditor/GridGameSelector.cs deleted file mode 100644 index 52fb1b232..000000000 --- a/Assets/Scripts/LevelEditor/GridGameSelector.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - -using TMPro; -using DG.Tweening; -using Starpelly; - -namespace RhythmHeavenMania.Editor -{ - public class GridGameSelector : MonoBehaviour - { - public string SelectedMinigame; - - [Header("Components")] - public GameObject GameEventSelector; - public GameObject EventRef; - public GameObject CurrentSelected; - - [Header("Properties")] - private EventCaller.MiniGame mg; - private bool gameOpen; - [SerializeField] private int currentEventIndex; - private int dragTimes; - public float posDif; - public int ignoreSelectCount; - - private void Update() - { - if (gameOpen) - { - if (Input.GetKeyDown(KeyCode.DownArrow)) - { - UpdateIndex(currentEventIndex + 1); - } - else if (Input.GetKeyDown(KeyCode.UpArrow)) - { - UpdateIndex(currentEventIndex - 1); - } - } - - if (Input.mouseScrollDelta.y != 0) - { - UpdateIndex(currentEventIndex - Mathf.RoundToInt(Input.mouseScrollDelta.y)); - } - } - - #region Events - - public void Drag() - { - if (Conductor.instance.NotStopped()) return; - - if (Timeline.instance.CheckIfMouseInTimeline() && dragTimes < 1) - { - dragTimes++; - if (currentEventIndex == 0) - { - Timeline.instance.AddEventObject($"gameManager/switchGame/{mg.name}", true, new Vector3(0, 0)); - } - else - { - Timeline.instance.AddEventObject(mg.name + "/" + mg.actions[currentEventIndex - 1].actionName, true, new Vector3(0, 0)); - } - } - } - - public void Drop() - { - if (Conductor.instance.NotStopped()) return; - - dragTimes = 0; - } - - #endregion - - #region Functions - - public void UpdateIndex(int amount) - { - } - - public void SelectGame(string gameName, int index) - { - DestroyEvents(); - - transform.GetChild(index).GetChild(0).gameObject.SetActive(true); - - SelectedMinigame = gameName; - - mg = EventCaller.instance.minigames.Find(c => c.displayName == gameName); - - AddEvents(); - - gameOpen = true; - - currentEventIndex = 0; - - Editor.instance.SetGameEventTitle($"Select game event for {gameName}"); - } - - private void AddEvents() - { - - } - - private void DestroyEvents() - { - - } - - #endregion - } -} \ No newline at end of file