public bool Retarget(EnergyController energy) { List <EnergyLinkController> candidates = new List <EnergyLinkController>(); EnergyLinkController target = energy.target; EnergyLinkController previous = energy.previous; List <EnergyConsumerController> needMoreConstructions = new List <EnergyConsumerController>(); foreach (EnergyConsumerController construnction in constructions) { if (construnction.NeedMore()) { needMoreConstructions.Add(construnction); } } if (needMoreConstructions.Count > 0) { EnergyConsumerController construnction = needMoreConstructions[Random.Range(0, needMoreConstructions.Count)]; energy.construction = construnction; construnction.WillEnergize(); return(true); } foreach (EnergyLinkController link in nearby) { if (link != target && link != previous) { candidates.Add(link); } } if (candidates.Count == 0) { foreach (EnergyLinkController link in nearby) { if (link != target) { candidates.Add(link); } } } if (candidates.Count > 0) { energy.previous = target; energy.target = candidates[Random.Range(0, candidates.Count)]; if (temperature > maxTemperature) { Instantiate(energyBoom, transform.position, Quaternion.identity); return(false); } else { temperature += 1; return(true); } } else { Instantiate(energyBoom, transform.position, Quaternion.identity); return(false); } }