using UnityEngine; using System.Collections; public class PowerSource : MonoBehaviour { public string ID = "unassigned"; public Material lineMat; public string creationMethod; public GameObject inputObject; public GameObject outputObject; public string inputID; public string outputID; LineRenderer connectionLine; private float updateTick; public int address; public int powerAmount; public string type; public string fuelType; public int fuelAmount; public int connectionAttempts; public bool connectionFailed; public bool blocked; public bool outOfFuel; public bool noReactor; private int fuelConsumptionTimer; public Texture2D generatorOffTexture; public Texture2D generatorOnTexture; private GameObject builtObjects; void Start() { connectionLine = gameObject.AddComponent(); connectionLine.startWidth = 0.2f; connectionLine.endWidth = 0.2f; connectionLine.material = lineMat; connectionLine.loop = true; connectionLine.enabled = false; builtObjects = GameObject.Find("Built_Objects"); } void OnDestroy() { if (outputObject != null) { if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().power >= powerAmount) { outputObject.GetComponent().power -= powerAmount; } if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } if (outputObject.GetComponent().power < outputObject.GetComponent().speed && outputObject.GetComponent().speed > 1) { outputObject.GetComponent().speed = outputObject.GetComponent().power; } } if (outputObject.GetComponent() != null) { if (outputObject.GetComponent().powerAmount >= powerAmount) { outputObject.GetComponent().powerAmount -= powerAmount; } } } } void Update() { updateTick += 1 * Time.deltaTime; if (updateTick > 0.5f + (address * 0.001f)) { //Debug.Log(ID + " Machine update tick: " + address * 0.1f); GetComponent().UpdatePhysics(); updateTick = 0; if (outputObject == null) { //Debug.Log(ID + " Searching as "+creationMethod); connectionAttempts += 1; if (connectionAttempts >= 120) { connectionAttempts = 0; connectionFailed = true; } if (connectionFailed == false) { GameObject[] allObjects = GameObject.FindGameObjectsWithTag("Built"); foreach (GameObject obj in allObjects) { if (obj != null) { if (obj.transform.parent != builtObjects.transform) { if (obj.activeInHierarchy) { if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().powerON = true; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().powerON = true; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().powerON = true; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().powerON = true; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj.GetComponent().powerObject != null) { if (obj.GetComponent().powerObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().powerObject = this.gameObject; outputObject.GetComponent().power += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } if (obj.GetComponent() != null && outputObject == null) { float distance = Vector3.Distance(transform.position, obj.transform.position); if (distance < 40) { if (obj != this.gameObject) { if (obj.GetComponent().inputObject != null) { if (obj.GetComponent().inputObject.GetComponent() == null) { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().inputID = ID; outputObject.GetComponent().inputObject = this.gameObject; outputObject.GetComponent().powerAmount += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().inputID = ID; outputObject.GetComponent().inputObject = this.gameObject; outputObject.GetComponent().powerAmount += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } else { if (creationMethod.Equals("spawned")) { if (obj.GetComponent().ID.Equals(outputID)) { outputObject = obj; outputObject.GetComponent().inputID = ID; outputObject.GetComponent().inputObject = this.gameObject; outputObject.GetComponent().powerAmount += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; creationMethod = "built"; } } else if (creationMethod.Equals("built")) { outputObject = obj; outputObject.GetComponent().inputID = ID; outputObject.GetComponent().inputObject = this.gameObject; outputObject.GetComponent().powerAmount += powerAmount; connectionLine.SetPosition(0, transform.position); connectionLine.SetPosition(1, obj.transform.position); connectionLine.enabled = true; } } } } } } } } } } } if (outputObject != null && connectionFailed == false) { connectionAttempts = 0; //Debug.Log(ID+" connected to "+outputObject.name); if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position,transform.up,out RaycastHit reactorUpHit,3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().material.mainTexture = generatorOffTexture; GetComponent().enabled = false; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; blocked = false; } else { if (blocked == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().power += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outputObject.GetComponent().powerON = true; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().power += powerAmount; } outputObject.GetComponent().powerON = true; noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().power -= powerAmount; if (outputObject.GetComponent().power < 1) { outputObject.GetComponent().powerON = false; } } noReactor = true; GetComponent().Stop(); } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { outputObject.GetComponent().powerON = true; } else { outputObject.GetComponent().powerON = false; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outOfFuel = false; outputObject.GetComponent().powerON = true; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { outOfFuel = true; GetComponent().Stop(); outputObject.GetComponent().powerON = false; GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { outputObject.GetComponent().powerON = true; } else { outputObject.GetComponent().powerON = false; } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().powerObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { outputObject.GetComponent().powerON = true; } else { outputObject.GetComponent().powerON = false; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outOfFuel = false; outputObject.GetComponent().powerON = true; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { outOfFuel = true; GetComponent().Stop(); outputObject.GetComponent().powerON = false; GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { outputObject.GetComponent().powerON = true; } else { outputObject.GetComponent().powerON = false; } } } if (outputObject.GetComponent() != null) { outputObject.GetComponent().inputID = ID; outputObject.GetComponent().inputObject = this.gameObject; outputID = outputObject.GetComponent().ID; if (type.Equals("Solar Panel")) { Vector3 sunPosition = new Vector3(7000, 15000, -10000); if (Physics.Linecast(sunPosition, transform.position, out RaycastHit hit)) { if (hit.collider.gameObject == this.gameObject) { if (blocked == true) { outputObject.GetComponent().powerAmount += powerAmount; } blocked = false; } else { if (blocked == false) { outputObject.GetComponent().powerAmount -= powerAmount; } blocked = true; } } } else if (type.Equals("Generator")) { if (fuelType.Equals("Coal") && fuelAmount >= 1) { if (GetComponent().isPlaying == false) { GetComponent().Play(); } if (outOfFuel == true) { outputObject.GetComponent().powerAmount += powerAmount; } GetComponent().enabled = true; GetComponent().material.mainTexture = generatorOnTexture; outOfFuel = false; fuelConsumptionTimer += 1; if (fuelConsumptionTimer > 10 - (address * 0.01f)) { fuelAmount -= 1; fuelConsumptionTimer = 0; } } else { GetComponent().Stop(); if (outOfFuel == false) { outputObject.GetComponent().powerAmount -= powerAmount; } GetComponent().enabled = false; GetComponent().material.mainTexture = generatorOffTexture; outOfFuel = true; } } else if (type.Equals("Reactor Turbine")) { bool reactorFound = false; if (Physics.Raycast(transform.position, transform.up, out RaycastHit reactorUpHit, 3)) { if (reactorUpHit.collider.gameObject.GetComponent() != null) { if (reactorUpHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.up, out RaycastHit reactorDownHit, 3)) { if (reactorDownHit.collider.gameObject.GetComponent() != null) { if (reactorDownHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.right, out RaycastHit reactorRightHit, 3)) { if (reactorRightHit.collider.gameObject.GetComponent() != null) { if (reactorRightHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.right, out RaycastHit reactorLeftHit, 3)) { if (reactorLeftHit.collider.gameObject.GetComponent() != null) { if (reactorLeftHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, transform.forward, out RaycastHit reactorFrontHit, 3)) { if (reactorFrontHit.collider.gameObject.GetComponent() != null) { if (reactorFrontHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (Physics.Raycast(transform.position, -transform.forward, out RaycastHit reactorBackHit, 3)) { if (reactorBackHit.collider.gameObject.GetComponent() != null) { if (reactorBackHit.collider.gameObject.GetComponent().sufficientCooling == true) { reactorFound = true; } } } if (reactorFound == true) { if (noReactor == true) { outputObject.GetComponent().powerAmount += powerAmount; } noReactor = false; if (GetComponent().isPlaying == false) { GetComponent().Play(); } } else { if (noReactor == false) { outputObject.GetComponent().powerAmount -= powerAmount; } noReactor = true; GetComponent().Stop(); } } } } else { //Debug.Log(ID + " output object is null."); connectionLine.enabled = false; if (connectionFailed == true) { if (creationMethod.Equals("spawned")) { creationMethod = "built"; } } } } } }