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();
                    }
                }
            }
        }
    }
Esempio n. 2
0
    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);
    }