This commit is contained in:
2026-05-30 09:16:35 +07:00
parent 2f87ce19a7
commit 1c0ee6efb7
4001 changed files with 3363438 additions and 1738 deletions

View File

@@ -0,0 +1,102 @@
using Invector;
using System.Collections.Generic;
using UnityEngine;
[vClassHeader("Mult-Toggle Event", helpBoxText = "Use the method SetToggleOn/Off via Events", openClose = false)]
public class vMultToggleEvent : vMonoBehaviour
{
[System.Serializable]
public class Toggle
{
public string name;
[Header("Current Value of the toogle")]
public bool value;
[Header("Validation to compare with value")]
public bool validation;
public void ToggleOn()
{
value = true;
onTurnOn.Invoke();
}
public void ToggleOff()
{
value = false;
onTurnOff.Invoke();
}
public bool isValid => value.Equals(validation);
public UnityEngine.Events.UnityEvent onTurnOn, onTurnOff;
}
public List<Toggle> toggles;
public bool isValid;
public UnityEngine.Events.UnityEvent onValidate, onInvalidate;
public void Start()
{
CheckValidation();
}
public void ToggleOn(int index)
{
if (toggles.Count > 0 && index < toggles.Count)
{
toggles[index].ToggleOn();
CheckValidation();
}
}
public void ToggleOff(int index)
{
if (toggles.Count > 0 && index < toggles.Count)
{
toggles[index].ToggleOff();
CheckValidation();
}
}
public void ToggleOn(string name)
{
var toogle = toggles.Find(t => t.name.Equals(name));
if (toogle != null)
{
toogle.ToggleOn();
CheckValidation();
}
}
public void ToggleOff(string name)
{
var toogle = toggles.Find(t => t.name.Equals(name));
if (toogle != null)
{
toogle.ToggleOff();
CheckValidation();
}
}
void CheckValidation()
{
var _isValid = isValid;
var validToggles = toggles.FindAll(t => t.isValid);
if (validToggles.Count == toggles.Count)
{
_isValid = true;
}
else
{
_isValid = false;
}
if (_isValid != isValid)
{
isValid = _isValid;
if (isValid)
{
onValidate.Invoke();
}
else
{
onInvalidate.Invoke();
}
}
}
}