Files
U10-MobileGame/Assets/Scripts/PlayerModifier.cs
2025-11-28 18:10:10 +00:00

60 lines
1.6 KiB
C#

using System;
using UnityEngine;
using URandom = UnityEngine.Random;
public class PlayerModifier : OrbitalBehaviour
{
public enum Modifiers
{
GainPoints,
FreeHit,
GrowPlayer,
ShrinkPlayer,
ClearAllEnemies,
SpeedUp
}
public static string ModifierToString(Modifiers mod) =>
mod switch
{
Modifiers.GainPoints => "100 Points",
Modifiers.FreeHit => "Temporary Shield",
Modifiers.GrowPlayer => "Grow Player",
Modifiers.ShrinkPlayer => "Shrink Player",
Modifiers.ClearAllEnemies => "Clear all enemies",
Modifiers.SpeedUp => "Speed Boost",
_ => "NULL"
};
private static readonly System.Random s_RandomGenerator = new();
public Modifiers Modifier { get; private set; }
private static Modifiers GetRandomModifier()
{
Array possibilities = Enum.GetValues(typeof(Modifiers));
return (Modifiers)possibilities.GetValue(s_RandomGenerator.Next(possibilities.Length));
}
private void Start()
{
RegisterObject(new OrbitalInitializer
{
DistanceAlongCircumference = URandom.Range(0f, Mathf.PI * 2f),
ObjectRadius = 0.3f,
SpinSpeed = 1.6f
});
transform.position = new Vector3(0, 0, -100f);
Modifier = GetRandomModifier();
}
protected override void OnOrbitalCollision(OrbitalBehaviour other) => Destroy(gameObject);
protected override void OnReachCentre() => Destroy(gameObject);
private void OnDestroy()
{
BehaviourManager.UnregisterOrbitalInstance(this);
}
}