mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-25 11:05:16 +00:00
Finally perfected grid game selector
This commit is contained in:
parent
e7d35d45e8
commit
5ac4d0c8fd
8 changed files with 227 additions and 155 deletions
|
@ -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
|
||||
|
|
|
@ -57,8 +57,6 @@ namespace RhythmHeavenMania.Editor
|
|||
GameIcon_.name = EventCaller.instance.minigames[i].displayName;
|
||||
}
|
||||
|
||||
GridGameSelector.GetComponent<GridGameSelector>().SelectGame("Game Manager", 1);
|
||||
|
||||
Tooltip.instance.AddTooltip(NewBTN.gameObject, "New");
|
||||
Tooltip.instance.AddTooltip(OpenBTN.gameObject, "Open");
|
||||
Tooltip.instance.AddTooltip(SaveBTN.gameObject, "Save");
|
||||
|
|
8
Assets/Scripts/LevelEditor/EventSelector.meta
Normal file
8
Assets/Scripts/LevelEditor/EventSelector.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c5d9268cae8d83043a31b826d64b9495
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
181
Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs
Normal file
181
Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs
Normal file
|
@ -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<RectTransform>();
|
||||
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<RectTransform>().sizeDelta.y) * (currentEventIndex - 2), 0.35f).SetEase(Ease.OutExpo);
|
||||
}
|
||||
else
|
||||
{
|
||||
EventRef.transform.parent.DOLocalMoveY((EventRef.GetComponent<RectTransform>().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<TMP_Text>().text = "switchGame";
|
||||
sg.SetActive(true);
|
||||
sg.GetComponent<TMP_Text>().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<TMP_Text>().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<Image>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
|
||||
|
||||
for (int i = 0; i < eventsParent.transform.childCount; i++)
|
||||
eventsParent.GetChild(i).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
|
||||
|
||||
eventsParent.GetChild(index).GetComponent<TMP_Text>().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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue