apollo wrote:Any advice if I want a gauge to drain if a player is on idle or doing a basics move like jump or crouch?
Some advice:
If you have coding knowledge you should be able to figure out how and what to do checks on.
I recommend making helper methods to make your life easier.
My
IsBasicMoveReferenceMatch
method is an example of a helper method.
This script can check basic moves.
using UnityEngine;
using UFE3D;
using FPLibrary;
public class NewBehaviourScript1 : MonoBehaviour
{
private enum Player
{
Player1,
Player2
}
[SerializeField]
private Player player;
/*[SerializeField]
private GaugeId gaugeId;
[Range(-100, 100)]
[SerializeField]
private float percent;
[SerializeField]*/
[System.Serializable]
private class BasicMoveReferenceOptions
{
[SerializeField]
private GaugeId gaugeId;
[Range(-100, 100)]
[SerializeField]
private float percent;
[SerializeField]
private BasicMoveReference[] basicMoveReferenceArray;
public static void CheckBasicMoveReferenceOptions(ControlsScript player, BasicMoveReferenceOptions basicMoveReferenceOptions)
{
if (player == null
|| basicMoveReferenceOptions == null)
{
return;
}
if (IsBasicMoveReferenceMatch(player.currentBasicMove, basicMoveReferenceOptions.basicMoveReferenceArray) == true)
{
AddOrSubtractGaugePointsPercent(player, basicMoveReferenceOptions.gaugeId, basicMoveReferenceOptions.percent);
}
}
public static void CheckBasicMoveReferenceOptions(ControlsScript player, BasicMoveReferenceOptions[] basicMoveReferenceOptionsArray)
{
if (player == null
|| basicMoveReferenceOptionsArray == null)
{
return;
}
int length = basicMoveReferenceOptionsArray.Length;
for (int i = 0; i < length; i++)
{
CheckBasicMoveReferenceOptions(player, basicMoveReferenceOptionsArray[i]);
}
}
}
[SerializeField]
private BasicMoveReferenceOptions[] basicMoveReferenceOptionsArray;
private void Update()
{
switch (player)
{
case Player.Player1:
//AddOrSubtractGaugePointsPercent(UFE.GetPlayer1ControlsScript(), gaugeId, percent);
BasicMoveReferenceOptions.CheckBasicMoveReferenceOptions(UFE.GetPlayer1ControlsScript(), basicMoveReferenceOptionsArray);
break;
case Player.Player2:
//AddOrSubtractGaugePointsPercent(UFE.GetPlayer2ControlsScript(), gaugeId, percent);
BasicMoveReferenceOptions.CheckBasicMoveReferenceOptions(UFE.GetPlayer2ControlsScript(), basicMoveReferenceOptionsArray);
break;
}
}
/// <summary>
/// A positive percent value will add. A negative percent value will subtract.
/// </summary>
/// <param name="player"></param>
/// <param name="percent"></param>
public static void AddOrSubtractGaugePointsPercent(ControlsScript player, GaugeId gaugeId, Fix64 percent)
{
if (player == null)
{
return;
}
player.currentGaugesPoints[(int)gaugeId] += player.myInfo.maxGaugePoints * (percent / 100);
if (player.currentGaugesPoints[(int)gaugeId] > player.myInfo.maxGaugePoints)
{
player.currentGaugesPoints[(int)gaugeId] = player.myInfo.maxGaugePoints;
}
else if (player.currentGaugesPoints[(int)gaugeId] < 0)
{
player.currentGaugesPoints[(int)gaugeId] = 0;
}
}
public static bool IsBasicMoveReferenceMatch(BasicMoveReference comparing, BasicMoveReference matching)
{
if (comparing == matching)
{
return true;
}
return false;
}
public static bool IsBasicMoveReferenceMatch(BasicMoveReference comparing, BasicMoveReference[] matchingArray)
{
if (matchingArray == null)
{
return false;
}
int length = matchingArray.Length;
for (int i = 0; i < length; i++)
{
if (IsBasicMoveReferenceMatch(comparing, matchingArray[i]) == false)
{
continue;
}
return true;
}
return false;
}
}