void InstantiateCorrectParticlePrefab(Special.SpecialType type) { Transform particleTrans = transform.GetChild(0).GetChild(0).GetChild(1); GameObject particlePrefab; if (type == Special.SpecialType.Firefighter) { particlePrefab = Instantiate(CitizenManager.instance.waterParticle, Vector3.zero, CitizenManager.instance.waterParticle.transform.rotation, particleTrans); particlePrefab.transform.position = particlePrefab.transform.parent.position; } else if (type == Special.SpecialType.Police) { particlePrefab = Instantiate(CitizenManager.instance.policeFireParticle, Vector3.zero, CitizenManager.instance.policeFireParticle.transform.rotation, particleTrans); particlePrefab.transform.position = particlePrefab.transform.parent.position; } else if (type == Special.SpecialType.Mafia) { particlePrefab = Instantiate(CitizenManager.instance.mafiaFireParticle, Vector3.zero, CitizenManager.instance.mafiaFireParticle.transform.rotation, particleTrans); particlePrefab.transform.position = particlePrefab.transform.parent.position; } else if (type == Special.SpecialType.Blockman) { particlePrefab = Instantiate(CitizenManager.instance.blockmanParticle, Vector3.zero, CitizenManager.instance.blockmanParticle.transform.rotation, particleTrans); particlePrefab.transform.position = particlePrefab.transform.parent.position; } else { return; } }
public void CreateSpecial(Special.SpecialType type) { specialType = type; InstantiateCorrectParticlePrefab(type); StartCoroutine(body.AssignBodyType()); StartCoroutine(body.AssignEyes()); CitizenManager.instance.SetLayer(this); transform.GetChild(0).GetChild(0).GetChild(0).GetChild(1).gameObject.SetActive(false); transform.GetChild(0).GetChild(0).GetChild(0).GetChild(2).gameObject.SetActive(false); StartCoroutine(body.AssignSpecial(type)); }
public IEnumerator AssignSpecial(Special.SpecialType type) { int matchCount = 0; foreach (Special s in CitizenManager.instance.allSpecials) { if (type == s.type) { matchCount++; } } if (matchCount <= 0) { Debug.LogError("No specials have the type: " + type.ToString() + ". Please add a character of that type to the Specials folder.\nGOD WILL NOW DESTROY " + transform.GetComponentInParent <Citizen>().name + "!"); Destroy(transform.GetComponentInParent <Citizen>().gameObject); StopAllCoroutines(); yield break; } int randomSpecial = Random.Range(0, CitizenManager.instance.allSpecials.Length); if (type == CitizenManager.instance.allSpecials[randomSpecial].type) { if (type == Special.SpecialType.BonusCitizen) { if (CitizenManager.instance.spawnedBonusCitizens.Count >= CitizenManager.instance.allBonusCitizens.Count) { Debug.LogWarning("No more bonus characters to spawn.\nSpawning normal Citizen!"); transform.parent.GetChild(1).gameObject.SetActive(true); transform.parent.GetChild(2).gameObject.SetActive(true); GetComponentInParent <Citizen>().CreateCitizen(); yield break; } GameObject objInScene = GameObject.Find(CitizenManager.instance.allSpecials[randomSpecial].name); if (objInScene != null) { StartCoroutine(AssignSpecial(type)); yield return(null); } GetComponentInParent <Citizen>().gameObject.name = CitizenManager.instance.allSpecials[randomSpecial].name; CitizenManager.instance.spawnedBonusCitizens.Add(GetComponentInParent <Citizen>().gameObject); } CitizenManager.instance.allSpecials[randomSpecial].SetSpecial(transform.GetChild(2).GetComponent <SpriteRenderer>()); StopAllCoroutines(); yield break; } else { StartCoroutine(AssignSpecial(type)); yield return(null); } }