void Update() { ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (building != null) { if (Physics.Raycast(ray, out hit)) { Vector3 v = hit.point; v.y = hit.point.y; building.transform.position = v; GameObject[] go = GameObject.FindGameObjectsWithTag("inGame"); bool b = true; building.GetComponent <Collider>().enabled = true; foreach (GameObject g in go) { if (g.GetComponent <Collider>() .bounds.Intersects(building.GetComponent <Collider>().bounds)) { b = false; break; } } building.GetComponent <Collider>().enabled = false; if (b) { if (Input.GetMouseButton(0)) { //NEED TO MAKE DYNAMIC building.SetActive(true); building.tag = "inGame"; building.GetComponent <Collider>().enabled = true; Debug.Log(building.name); if (building.name.Equals("Training Facility(Clone)")) { TrainingFacilityFacility tff = building.GetComponent <TrainingFacilityFacility>(); tff.setTrainingFacility(new TrainingFacility(building.transform.position.x, building.transform.position.y, building.transform.position.z, 1.0f, building.transform.eulerAngles.x, building.transform.eulerAngles.y, building.transform.eulerAngles.z)); Storage.allTF.Add(tff.getTrainingFacility()); } else if (building.name.Equals("Observatory(Clone)")) { Storage.allTB.Add(new Facility(FacilityType.getFacilityByName(building.name.Substring(0, building.name.Length - 7)), building.transform.position.x, building.transform.position.y, building.transform.position.z, 1.0f, building.transform.eulerAngles.x, building.transform.eulerAngles.y, building.transform.eulerAngles.z)); } else if (building.name.Equals("Moonbase")) { } else if (building.name.Equals("Mining Facility(Clone)")) { Storage.allTB.Add(new Facility(FacilityType.MINING, building.transform.position.x, building.transform.position.y, building.transform.position.z, 1.0f, building.transform.eulerAngles.x, building.transform.eulerAngles.y, building.transform.eulerAngles.z)); } else if (building.name.Equals("Storage(Clone)")) { Storage.pd.setMaxBuildSupply(Storage.pd.getBuildSupply() + 500); Storage.pd.setMaxFoodSupply(Storage.pd.getMaxFoodSupply() + 500); Storage.pd.setWaterSupply(Storage.pd.getMaxWaterSupply() + 500); } else if (building.name.Equals("Agriculture Facility(Clone)")) { } else if (building.name.Equals("Water Purification Facility(Clone)")) { Debug.Log("Added purification"); Storage.allTB.Add(new Facility(FacilityType.WATER_PURIFICATION, building.transform.position.x, building.transform.position.y, building.transform.position.z, 1.0f, building.transform.eulerAngles.x, building.transform.eulerAngles.y, building.transform.eulerAngles.z)); } else if (building.name.Equals("Living Facility")) { Storage.allTB.Add(new Facility(FacilityType.LIVING_FACILITY, building.transform.position.x, building.transform.position.y, building.transform.position.z, 1.0f, building.transform.eulerAngles.x, building.transform.eulerAngles.y, building.transform.eulerAngles.z)); } building = null; } } else { //Show player that they may not build in this area } } if (Input.GetKeyDown(KeyCode.Escape)) { Destroy(building); building = null; } } else { if (Input.GetMouseButtonUp(0)) { if (Physics.Raycast(ray, out hit)) { Debug.Log(hit.collider.name); GameObject hitObj = hit.collider.gameObject; if (hit.collider.name.Contains("Training")) { //hitObj.GetComponent<TrainingFacilityFacility>().createMenu(); } else if (hit.collider.name.Contains("Mining")) { //hitObj.GetComponent<MiningFacility>().createMenu(); } else if (hit.collider.name.Contains("Water")) { //hitObj.GetComponent<WaterFacility>().createMenu(); } else if (hit.collider.name.Contains("Observatory")) { //hitObj.GetComponent<Observatory>().createMenu(); } } } } }
void Start() { Text observatory_cap = GameObject.FindGameObjectWithTag("observatory_cap").GetComponent <Text>(); Text agriculture_cap = GameObject.FindGameObjectWithTag("agriculture_cap").GetComponent <Text>(); Text water_cap = GameObject.FindGameObjectWithTag("water_cap").GetComponent <Text>(); Text mining_cap = GameObject.FindGameObjectWithTag("mining_cap").GetComponent <Text>(); Text training_cap = GameObject.FindGameObjectWithTag("training_cap").GetComponent <Text>(); Text launchpad_cap = GameObject.FindGameObjectWithTag("launchpad_cap").GetComponent <Text>(); Text powerplant_cap = GameObject.FindGameObjectWithTag("powerplant_cap").GetComponent <Text>(); Text living_cap = GameObject.FindGameObjectWithTag("living_cap").GetComponent <Text>(); Text observatory_health = GameObject.FindGameObjectWithTag("observatory_health").GetComponent <Text>(); Text agriculture_health = GameObject.FindGameObjectWithTag("agriculture_health").GetComponent <Text>(); Text water_health = GameObject.FindGameObjectWithTag("water_health").GetComponent <Text>(); Text mining_health = GameObject.FindGameObjectWithTag("mining_health").GetComponent <Text>(); Text training_health = GameObject.FindGameObjectWithTag("training_health").GetComponent <Text>(); Text launchpad_health = GameObject.FindGameObjectWithTag("launchpad_health").GetComponent <Text>(); Text powerplant_health = GameObject.FindGameObjectWithTag("powerplant_health").GetComponent <Text>(); Text living_health = GameObject.FindGameObjectWithTag("living_health").GetComponent <Text>(); String[] facilityNameArray = new string[8] { "Observatory", "Agriculture Facility", "Water Purification Facility", "Mining Facility", "Training Facility", "Launch Pad", "Power Plant", "Living Facility" }; /* Capacity = (# of buildings) * (max per building) */ /* Full = # koalas per building */ /* Empty = capacity - full */ /* Health = average of each building's health */ /* THERE ARE A TOTAL OF 8 TYPES OF BUILDINGS */ int capacity = 0; int full = 0; int empty = 0; int num_buildings = 0; int facility_maxWorkers = 0; float health = 0; for (int i = 0; i < 8; i++) { if (facilityNameArray[i].ToLower().Contains("training")) { facility_maxWorkers = 4; } else { facility = FacilityType.getFacilityByName(facilityNameArray[i]); facility_maxWorkers = facility.getMaxWorkers(); } List <object> obs = new List <object>(); foreach (Facility fac in Storage.allTB) { obs.Add(fac); } foreach (TrainingFacility tf in Storage.allTF) { obs.Add(tf); } foreach (object f in obs) { if (f is Facility) { Facility fac = (Facility)f; // getFacilityType does not return String type if (fac.getFacilityType().Equals(facilityNameArray[i]) && !facilityNameArray[i].ToLower().Contains("training")) { num_buildings++; full += fac.getKoalas().Count; health += fac.getHP(); } } else { TrainingFacility tf = (TrainingFacility)f; num_buildings++; full += tf.getTrainees().Count + tf.getTrainers().Count; health += tf.getHP(); } } capacity = facility_maxWorkers * num_buildings; empty = capacity - full; health = health / num_buildings; /* String builder */ switch (i) { case 0: observatory_cap.text = full + "F/" + empty + "E"; observatory_health.text = health + "%"; break; case 1: agriculture_cap.text = full + "F/" + empty + "E"; agriculture_health.text = health + "%"; break; case 2: water_cap.text = full + "F/" + empty + "E"; water_health.text = health + "%"; break; case 3: mining_cap.text = full + "F/" + empty + "E"; mining_health.text = health + "%"; break; case 4: training_cap.text = full + "F/" + empty + "E"; training_health.text = health + "%"; break; case 5: launchpad_cap.text = full + "F/" + empty + "E"; launchpad_health.text = health + "%"; break; case 6: powerplant_cap.text = full + "F/" + empty + "E"; powerplant_health.text = health + "%"; break; case 7: living_cap.text = full + "F/" + empty + "E"; living_health.text = health + "%"; break; } num_buildings = 0; full = 0; health = 0; } this.gameObject.SetActive(false); }