You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.4 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.UIElements;
namespace Game {
public enum ModType { Nerf, Buff }
public enum ModEffect { Speed, Border }
public struct ModificationProperties {
public ModType Type { get; set; }
public ModEffect Effect { get; set; }
public float PickupDuration { get; set; }
public float ActiveDuration { get; set; }
}
public class ActiveModification {
public ModificationProperties Properties { get; set; }
public IEnumerator Process(VisualElement panel, List<ActiveModification> modifications) {
modifications.Add(this);
VisualElement element = GameUI.AddModification(panel, this);
yield return new WaitForSeconds(Properties.ActiveDuration);
element.RemoveFromHierarchy();
modifications.Remove(this);
}
}
public class Modification : NetworkBehaviour {
public ModificationProperties Properties { get; set; }
private IEnumerator Start() {
yield return new WaitForSeconds(Properties.PickupDuration);
Destroy(gameObject);
}
private void OnTriggerEnter2D(Collider2D other) {
Player p = other.GetComponent<Ball>().LastContactPlayer;
if (p != null) {
Destroy(gameObject);
ActiveModification mod = new() {Properties = Properties};
StartCoroutine(mod.Process(p.Panel, p.Modifications));
}
}
}
}