private void UpdateDisease() { if (diseaseCounter == -1) { diseaseCounter = 0; diseaseTarget = Random.Range(15, 25); } else if ((diseaseCounter > diseaseTarget || Input.GetButton("Jump")) && !DiseaseFactory.DiseaseActive()) { DiseaseFactory.CreateDisease(diseasePrefab); diseaseCounter = -1; } else { diseaseCounter += Time.deltaTime; } }
public void AddChildDiseases(GameObject parent, List <GameObject> children) { if (diseases.Remove(parent)) { diseases.AddRange(children); GameObject.Destroy(parent); Debug.Log(parent); } else { Debug.Log("Parent disease not found, children not added."); } if (diseases.Count == 0) { DiseaseFactory.Remove(this); } }
private void SpawnChildren() { List <GameObject> neighbors = new List <GameObject>(); target.GetComponent <Node>().ChangeLevelOffset(-1); foreach (GameObject t in target.GetComponent <Node>().Neighbors()) { if (DiseaseFactory.Targetable(t) && !manager.NodeVisited(t)) { neighbors.Add(t); } } List <GameObject> newDiseases = new List <GameObject>(); if (neighbors.Count > 0) { int numberToInfect = Random.Range(1, neighbors.Count); if (numberToInfect > value) { numberToInfect = value; } int newValue = (int)Mathf.Ceil((float)value / (float)numberToInfect); while (numberToInfect > 0) { if (neighbors.Count > 0) { int val = Random.Range(0, neighbors.Count - 1); GameObject infectee = neighbors[val]; neighbors.Remove(infectee); GameObject newDisease = GameObject.Instantiate(diseasePrefab); if (value - newValue <= 0) { newValue = value; } newDisease.GetComponent <Disease>().SetTarget(manager, infectee, newValue); newDiseases.Add(newDisease); value -= newValue; --numberToInfect; } } } manager.AddChildDiseases(gameObject, newDiseases); }