ok it kinda works now

This commit is contained in:
Rapandrasmus 2023-11-26 19:44:27 +01:00
parent 42bcf245b5
commit 7d96793e2c
5 changed files with 100 additions and 36 deletions

View file

@ -4505,6 +4505,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_gameSelectionEventRef: {fileID: 1119871594}
_headerObject: {fileID: 1039002537}
_headerText: {fileID: 93287373}
--- !u!1 &170980090
GameObject:
m_ObjectHideFlags: 0
@ -21412,6 +21414,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_categoryRef: {fileID: 167275725}
_spacing: -55
_headerOffset: 61
--- !u!1 &889256060
GameObject:
m_ObjectHideFlags: 0
@ -26829,7 +26833,7 @@ MonoBehaviour:
posDif: 15
ignoreSelectCount: 2
_newGameEventSelector: {fileID: 516264814}
_cateGoryRef: {fileID: 167275725}
_categoryManager: {fileID: 879299405}
--- !u!114 &1154875948
MonoBehaviour:
m_ObjectHideFlags: 0

View file

@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace HeavenStudio.Editor
@ -7,6 +8,26 @@ namespace HeavenStudio.Editor
public class GameSelectionCategory : MonoBehaviour
{
[SerializeField] private NewGameSelectionEvent _gameSelectionEventRef;
[SerializeField] private GameObject _headerObject;
[SerializeField] private TMP_Text _headerText;
public void SetHeaderText(string text)
{
_headerText.text = text;
}
public void HeaderSetActive(bool active)
{
_headerObject.SetActive(active);
}
public void AddEvent(Minigames.GameAction action)
{
NewGameSelectionEvent spawnedEvent = Instantiate(_gameSelectionEventRef, transform);
spawnedEvent.SetText(action.displayName);
spawnedEvent.SetActiveGearIcon(action.parameters != null && action.parameters.Count > 0);
spawnedEvent.gameObject.SetActive(true);
}
}
}

View file

@ -6,7 +6,67 @@ namespace HeavenStudio.Editor
{
public class GameSelectionCategoryManager : MonoBehaviour
{
[Header("Components")]
[SerializeField] private GameSelectionCategory _categoryRef;
[Header("Properties")]
[SerializeField] private float _spacing = 0f;
[SerializeField] private float _headerOffset = 39.8f;
private List<GameSelectionCategory> _categories = new();
public void StartCategories(List<Minigames.GameAction> actions, string gameName)
{
string lastHeader = string.Empty;
GameSelectionCategory lastHeaderObject = null;
float currentY = _categoryRef.transform.localPosition.y;
// eventually add the switch games here
for (int i = 0; i < actions.Count; i++)
{
var action = actions[i];
if (action.hidden || action.actionName == "switchGame") continue;
if ((i == 0 && gameName != "gameManager") || (gameName == "gameManager" && i == 1) || (action.categoryName != lastHeader && action.categoryName != string.Empty))
{
if ((i != 0 && gameName != "gameManager") || (gameName == "gameManager" && i != 1))
{
Canvas.ForceUpdateCanvases();
currentY += _spacing - lastHeaderObject.GetComponent<RectTransform>().rect.height;
}
lastHeader = action.categoryName;
GameSelectionCategory spawnedCategory = Instantiate(_categoryRef, transform);
lastHeaderObject = spawnedCategory;
_categories.Add(spawnedCategory);
if (lastHeader != string.Empty)
{
spawnedCategory.SetHeaderText(lastHeader);
}
else
{
spawnedCategory.HeaderSetActive(false);
currentY += _headerOffset;
}
spawnedCategory.transform.localPosition = new Vector3(spawnedCategory.transform.localPosition.x, currentY);
spawnedCategory.gameObject.SetActive(true);
}
lastHeaderObject.AddEvent(action);
}
}
public void DestroyCategories()
{
for (int i = 0; i < _categories.Count; i++)
{
Destroy(_categories[i].gameObject);
}
_categories.Clear();
}
}
}

View file

@ -458,7 +458,7 @@ namespace HeavenStudio.Editor
[Header("New Game Event Selection")]
[SerializeField] private GameObject _newGameEventSelector;
[SerializeField] private GameSelectionCategory _cateGoryRef;
[SerializeField] private GameSelectionCategoryManager _categoryManager;
private bool _usingOld = false;
@ -480,37 +480,12 @@ namespace HeavenStudio.Editor
private void SelectGameNew(int index)
{
NewDestroyEvents();
NewAddEvents();
NewAddEvents(index);
}
private void NewAddEvents(int index = 0)
{
/*if (!EventCaller.FXOnlyGames().Contains(SelectedMinigame))
{
NewGameSelectionEvent sg = Instantiate(_newEventRef, _newEventsParent).GetComponent<NewGameSelectionEvent>();
sg.SetText("Switch Game");
sg.gameObject.SetActive(true);
}
else
{
index++;
if (SelectedMinigame.name == "gameManager") index++;
}
for (var i = 0; i < SelectedMinigame.actions.Count; i++)
{
var action = SelectedMinigame.actions[i];
if (action.actionName == "switchGame" || action.hidden) continue;
//NewGameSelectionEvent g = Instantiate(_newEventRef, _newEventsParent).GetComponent<NewGameSelectionEvent>();
g.SetText(action.displayName);
if (action.parameters != null && action.parameters.Count > 0)
g.SetActiveGearIcon(true);
g.gameObject.SetActive(true);
}*/
_categoryManager.StartCategories(SelectedMinigame.actions, SelectedMinigame.name);
}
private void NewDestroyEvents()
@ -520,10 +495,7 @@ namespace HeavenStudio.Editor
transform.GetChild(i).GetChild(0).gameObject.SetActive(false);
}
/*for (int i = 0; i < _newEventsParent.childCount; i++)
{
Destroy(_newEventsParent.GetChild(i).gameObject);
}*/
_categoryManager.DestroyCategories();
}
public void Disable()

View file

@ -556,7 +556,8 @@ namespace HeavenStudio
this.preFunction = prescheduleFunction ?? delegate { };
this.priority = priority;
this.preFunctionLength = preFunctionLength;
this.categoryName = categoryName;
if (categoryName != null) this.categoryName = categoryName;
else this.categoryName = string.Empty;
//todo: converting to new versions of GameActions
@ -781,7 +782,10 @@ namespace HeavenStudio
new((x, y) => (Util.EasingFunction.Ease)x != Util.EasingFunction.Ease.Instant, new string[] { "colorA", "valA" })
})
}
),
)
{
categoryName = "Test 1"
},
new GameAction("filter", "Filter", 1f, true,
new List<Param>()
{
@ -819,7 +823,10 @@ namespace HeavenStudio
new Param("ease", Util.EasingFunction.Ease.Linear, "Ease Type"),
new Param("axis", GameCamera.CameraAxis.All, "Axis", "The axis to move the camera on" )
}
),
)
{
categoryName = "Test2"
},
new("stretch camera", "Stretch Camera")
{
resizable = true,