protected UpgradeStructure GetFirst() { foreach (var unit in _commander.GetPlacedUnits()) { UpgradeStructure upgStructure = unit.GetComponent <UpgradeStructure>(); if (upgStructure && upgStructure.UpgradeIdentifier == UpgradeIdentifier) { return(upgStructure); } } return(null); }
// Start is called before the first frame update private void Start() { UpgradeStructure first = GetFirst(); if (this == first) { ApplyInitial(); } else { ApplyStack(first); } }
private void OnDestroy() { if (gameObject.scene.isLoaded && _commander) { UpgradeStructure first = GetFirst(); if (this == first || first == null) { RemoveInitial(); } else { RemoveStack(first); } } }
protected override void RemoveStack(UpgradeStructure initial) { (initial as ChanceOnUnitSpawnUpgradeStructure)._currentStack -= ChancePerStack; }
protected abstract void RemoveStack(UpgradeStructure initial);
protected abstract void ApplyStack(UpgradeStructure initial);