1
Fork 0
mirror of https://github.com/Steffo99/gravity-fusion.git synced 2024-11-26 02:04:18 +00:00
gravity-fusion/Assets/Components/Merger.cs

62 lines
1.6 KiB
C#
Raw Normal View History

2019-10-05 18:41:07 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CircleCollider2D))]
public class Merger : MonoBehaviour
{
public Particle particle;
protected List<Merger> mergeCandidates;
protected Collider2D Collider {
get {
return particle.mergeCollider;
}
}
protected int ParticlesToMerge {
get {
return particle.gameController.particlesToMerge;
}
}
protected void Awake() {
particle = GetComponentInParent<Particle>();
}
protected void Start() {
mergeCandidates = new List<Merger>();
}
private void OnTriggerEnter2D(Collider2D other) {
Merger otherMerger = other.GetComponent<Merger>();
if(otherMerger == null) return;
Particle otherParticle = otherMerger.particle;
if(this.particle.Tier != otherParticle.Tier) return;
mergeCandidates.Add(otherMerger);
if(CanMerge()) DoMerge();
}
private void OnTriggerExit2D(Collider2D other) {
Merger otherMerger = other.GetComponent<Merger>();
if(otherMerger == null) return;
mergeCandidates.Remove(otherMerger);
}
protected bool CanMerge() {
return mergeCandidates.Count >= ParticlesToMerge;
}
protected void DoMerge() {
particle.Tier += 1;
foreach(Merger merged in mergeCandidates.ToArray()) {
2019-10-05 21:50:43 +00:00
if(merged == null) continue;
2019-10-05 18:41:07 +00:00
Destroy(merged.particle.gameObject);
}
2019-10-05 21:50:43 +00:00
mergeCandidates.Clear();
particle.mergeCollider.enabled = false;
particle.mergeCollider.enabled = true;
2019-10-05 18:41:07 +00:00
}
}