Game event selector broken, unity ui fucking sucks

This commit is contained in:
Braedon
2022-01-16 17:51:57 -05:00
parent 66a445439b
commit 9af52ba043
6 changed files with 610 additions and 124 deletions

View File

@ -123,8 +123,6 @@ namespace RhythmHeavenMania.Editor
if (selectionBox.Overlaps(GetWorldRect(e.GetComponent<RectTransform>())))
{
print(selectionBox);
print(GetWorldRect(e.GetComponent<RectTransform>()));
Selections.instance.DragSelect(e);
selected++;
}

View File

@ -23,6 +23,8 @@ namespace RhythmHeavenMania.Editor
private bool gameOpen;
[SerializeField] private int currentEventIndex;
private int dragTimes;
public float posDif;
public int ignoreSelectCount;
private void Update()
{
@ -30,13 +32,18 @@ namespace RhythmHeavenMania.Editor
{
if (Input.GetKeyDown(KeyCode.DownArrow))
{
UpdateIndex(1);
UpdateIndex(currentEventIndex + 1);
}
else if (Input.GetKeyDown(KeyCode.UpArrow))
{
UpdateIndex(-1);
UpdateIndex(currentEventIndex - 1);
}
}
if (Input.mouseScrollDelta.y != 0)
{
UpdateIndex(currentEventIndex - Mathf.RoundToInt(Input.mouseScrollDelta.y));
}
}
#region Events
@ -72,27 +79,67 @@ namespace RhythmHeavenMania.Editor
public void UpdateIndex(int amount)
{
currentEventIndex += amount;
currentEventIndex = amount;
EventRef.transform.parent.parent.DOKill();
CurrentSelected.transform.DOKill();
if (currentEventIndex < 0)
{
currentEventIndex = EventRef.transform.parent.childCount - 2;
currentEventIndex = EventRef.transform.parent.childCount - (ignoreSelectCount + 1);
}
else if (currentEventIndex > EventRef.transform.parent.childCount - 2)
else if (currentEventIndex > EventRef.transform.parent.childCount - (ignoreSelectCount + 1))
{
currentEventIndex = 0;
}
if (currentEventIndex > 2)
{
EventRef.transform.parent.parent.transform.DOLocalMoveY((EventRef.GetComponent<RectTransform>().sizeDelta.y + 5) * (currentEventIndex - 2), 0.35f).SetEase(Ease.OutExpo);
if (EventRef.transform.parent.childCount - ignoreSelectCount - 4 > currentEventIndex)
{
EventRef.transform.parent.parent.DOLocalMoveY((EventRef.GetComponent<RectTransform>().sizeDelta.y + 5) * (currentEventIndex - 2), 0.35f).SetEase(Ease.OutExpo);
}
else
{
EventRef.transform.parent.parent.DOLocalMoveY((EventRef.GetComponent<RectTransform>().sizeDelta.y + 5) * (EventRef.transform.parent.childCount - 9), 0.35f).SetEase(Ease.OutExpo);
}
}
else
{
EventRef.transform.parent.parent.transform.DOLocalMoveY(0, 0.35f).SetEase(Ease.OutExpo);
}
CurrentSelected.transform.DOLocalMoveY(EventRef.transform.parent.GetChild(currentEventIndex + 1).transform.localPosition.y, 0.35f).SetEase(Ease.OutExpo);
for (int i = ignoreSelectCount; i < EventRef.transform.parent.childCount; i++)
{
float easeTime = 0.35f;
Ease ease = Ease.OutCirc;
int curIndex = currentEventIndex + ignoreSelectCount;
EventRef.transform.parent.GetChild(i).DOKill();
EventRef.transform.parent.GetChild(i).localPosition = new Vector3(EventRef.transform.parent.GetChild(i).localPosition.x, EventRef.transform.localPosition.y - ((i - ignoreSelectCount) * EventRef.GetComponent<RectTransform>().sizeDelta.y));
if (i < curIndex)
{
EventRef.transform.parent.GetChild(i).transform.DOLocalMove(new Vector3
(EventRef.transform.localPosition.x + (posDif),
EventRef.transform.parent.GetChild(i).transform.localPosition.y), easeTime).SetEase(ease);
}
else if (i > curIndex)
{
EventRef.transform.parent.GetChild(i).transform.DOLocalMove(new Vector3
(EventRef.transform.localPosition.x + (posDif),
EventRef.transform.parent.GetChild(i).transform.localPosition.y), easeTime).SetEase(ease);
}
else if (i == curIndex)
{
EventRef.transform.parent.GetChild(i).transform.DOLocalMove(new Vector3
(EventRef.transform.localPosition.x,
EventRef.transform.parent.GetChild(i).transform.localPosition.y), easeTime).SetEase(ease);
}
}
CurrentSelected.transform.DOLocalMoveY(EventRef.transform.parent.GetChild(currentEventIndex + ignoreSelectCount).transform.localPosition.y, 0.35f).SetEase(Ease.OutExpo);
SetColor(currentEventIndex);
}
@ -110,8 +157,10 @@ namespace RhythmHeavenMania.Editor
AddEvents();
gameOpen = true;
currentEventIndex = 0;
SetColor(0);
UpdateIndex(0);
}
private void AddEvents()
@ -136,12 +185,12 @@ namespace RhythmHeavenMania.Editor
private void SetColor(int ind)
{
for (int i = 0; i < EventRef.transform.parent.childCount; i++)
for (int i = ignoreSelectCount; i < EventRef.transform.parent.childCount; i++)
{
EventRef.transform.parent.GetChild(i).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventNormalCol.Hex2RGB();
}
EventRef.transform.parent.GetChild(ind + 1).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
EventRef.transform.parent.GetChild(ind + ignoreSelectCount).GetComponent<TMP_Text>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
CurrentSelected.GetComponent<Image>().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB();
}
@ -152,7 +201,7 @@ namespace RhythmHeavenMania.Editor
transform.GetChild(i).GetChild(0).gameObject.SetActive(false);
}
for (int i = 1; i < EventRef.transform.parent.childCount; i++)
for (int i = ignoreSelectCount; i < EventRef.transform.parent.childCount; i++)
{
Destroy(EventRef.transform.parent.GetChild(i).gameObject);
}

View File

@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace RhythmHeavenMania.Editor
@ -15,6 +16,16 @@ namespace RhythmHeavenMania.Editor
instance = this;
}
private void Update()
{
var buggedSelections = eventsSelected.FindAll(c => c == null);
if (buggedSelections.Count > 0)
{
for (int i = 0; i < buggedSelections.Count; i++)
Deselect(buggedSelections[i]);
}
}
public void ClickSelect(TimelineEventObj eventToAdd)
{
DeselectAll();