Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
    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);
        }
    }