60 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|