public void KillCrop() { //TODO Kill Crop & Animation Debug.Log("Killing The Crop"); Debug.Log(Health); State = CropState.Unplowed; Health = CropHealth.Dry; }
private void Start() { State = CropState.Unplowed; Health = CropHealth.Dry; lastAction = Time.time; progressBar.SetActive(false); UpdateProgressBar(0); healthBar.SetActive(false); UpdateHealthBar(); }
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; } }