Beispiel #1
0
    public void KillCrop()
    {
        //TODO Kill Crop & Animation
        Debug.Log("Killing The Crop");
        Debug.Log(Health);

        State  = CropState.Unplowed;
        Health = CropHealth.Dry;
    }
Beispiel #2
0
    private void Start()
    {
        State      = CropState.Unplowed;
        Health     = CropHealth.Dry;
        lastAction = Time.time;

        progressBar.SetActive(false);
        UpdateProgressBar(0);

        healthBar.SetActive(false);
        UpdateHealthBar();
    }
Beispiel #3
0
    private void Update()
    {
        progressBar.transform.rotation = Camera.main.transform.rotation;
        healthBar.transform.rotation   = Camera.main.transform.rotation;


        //float healthProgress = -1.0f;
        float progress = 0.0f;
        float duration = durations[(int)State];


        switch (State)
        {
        case CropState.Empty:

            break;

        case CropState.Unplowed:

            // plow the crop
            if (isInteractable && Input.GetKeyDown(KeyCode.E))
            {
                wateringsDuringCurrentState = 0;
                timeStateChanged            = Time.time;
                State = CropState.Plowed;
            }

            progressBar.SetActive(false);
            UpdateProgressBar(0);

            healthBar.SetActive(false);
            UpdateHealthBar();

            break;

        case CropState.Plowed:

            //seed the crop
            if (isInteractable && Input.GetKeyDown(KeyCode.E))
            {
                lastAction = Time.time;
                wateringsDuringCurrentState = 0;
                timeStateChanged            = Time.time;


                Seed seed = WC.PopSeed();
                if (seed)
                {
                    plantSeed(seed);
                    seed.UpdateSeedState(Seed.SeedState.Planted);
                    State = CropState.Seeded;
                }
                else
                {
                    Debug.Log("No Seeds");
                }
            }

            progressBar.SetActive(false);
            UpdateProgressBar(0);

            healthBar.SetActive(false);
            UpdateHealthBar();


            break;

        case CropState.Seeded:

            //water the crop
            if (isInteractable && Input.GetKeyDown(KeyCode.E))
            {
                Debug.Log("Water!");

                WC.UseWater();

                totalWaterings += 1;
                wateringsDuringCurrentState += 1;

                Debug.Log(wateringsDuringCurrentState);

                if (wateringsDuringCurrentState < minWaterings[(int)State])
                {
                    Health = CropHealth.Dry;
                    //healthProgress = 0.3f;
                }
                else if (wateringsDuringCurrentState == minWaterings[(int)State])
                {
                    Health = CropHealth.Fair;
                    //healthProgress = 0.75f;
                }
                else if (wateringsDuringCurrentState > minWaterings[(int)State] && wateringsDuringCurrentState < maxWaterings[(int)State])
                {
                    Health = CropHealth.Ideal;
                    //healthProgress = 0.9f;
                }
                else if (wateringsDuringCurrentState == maxWaterings[(int)State])
                {
                    Health = CropHealth.Fair;
                    //healthProgress = 0.75f;
                }
                else if (wateringsDuringCurrentState > maxWaterings[(int)State])
                {
                    //healthProgress = 0.0f;
                    Health = CropHealth.Wet;
                    KillCrop();
                }
            }



            //check timing and kill or promote

            if (Time.time - timeStateChanged > duration)
            {
                bool kill = false;

                if (Health == CropHealth.Dry)
                {
                    Health = CropHealth.DeadDry;
                    kill   = true;
                }
                else if (Health == CropHealth.Wet)
                {
                    Health = CropHealth.DeadWet;
                    kill   = true;
                }

                if (!kill)
                {
                    State = CropState.Young;
                    wateringsDuringCurrentState = 0;
                    timeStateChanged            = Time.time;
                }
                else
                {
                    KillCrop();
                }
            }

            progressBar.SetActive(true);
            progress = (Time.time - timeStateChanged) / duration;
            UpdateProgressBar(progress);

            healthBar.SetActive(true);
            UpdateHealthBar();

            break;

        case CropState.Young:

            //water
            if (isInteractable && Input.GetKeyDown(KeyCode.E))
            {
                Debug.Log("Water!");

                totalWaterings += 1;
                wateringsDuringCurrentState += 1;

                Debug.Log(wateringsDuringCurrentState);

                if (wateringsDuringCurrentState < minWaterings[(int)State])
                {
                    Health = CropHealth.Dry;
                }
                else if (wateringsDuringCurrentState == minWaterings[(int)State])
                {
                    Health = CropHealth.Fair;
                }
                else if (wateringsDuringCurrentState > minWaterings[(int)State] && wateringsDuringCurrentState < maxWaterings[(int)State])
                {
                    Health = CropHealth.Ideal;
                }
                else if (wateringsDuringCurrentState == maxWaterings[(int)State])
                {
                    Health = CropHealth.Wet;
                }
                else if (wateringsDuringCurrentState > maxWaterings[(int)State])
                {
                    Health = CropHealth.DeadWet;
                    KillCrop();
                }
            }


            if (Time.time - timeStateChanged > durations[(int)State])
            {
                bool kill = false;

                if (Health == CropHealth.Dry)
                {
                    Health = CropHealth.DeadDry;
                    kill   = true;
                }
                else if (Health == CropHealth.Wet || Health == CropHealth.DeadWet)
                {
                    Health = CropHealth.DeadWet;
                    kill   = true;
                }

                if (!kill)
                {
                    State = CropState.Mature;
                    wateringsDuringCurrentState = 0;
                    timeStateChanged            = Time.time;
                }
                else
                {
                    KillCrop();
                }
            }


            progressBar.SetActive(true);
            progress = (Time.time - timeStateChanged) / duration;
            UpdateProgressBar(progress);

            healthBar.SetActive(true);
            UpdateHealthBar();

            break;

        case CropState.Mature:

            //pick
            if (isInteractable && Input.GetKeyDown(KeyCode.E))
            {
                State = CropState.Unplowed;
                wateringsDuringCurrentState = 0;
                timeStateChanged            = Time.time;
            }


            float halflife = durations[(int)State] / 2;

            if (Time.time - timeStateChanged < halflife)
            {
                Health = CropHealth.Unripe;
            }
            if (Time.time - timeStateChanged >= halflife && Time.time - timeStateChanged < durations[(int)State])
            {
                Health = CropHealth.Ripe;
            }
            else if (Time.time - timeStateChanged > durations[(int)State])
            {
                KillCrop();
            }

            progressBar.SetActive(true);
            progress = (Time.time - timeStateChanged) / duration;
            UpdateProgressBar(progress);

            healthBar.SetActive(true);
            UpdateHealthBar();

            break;
        }
    }