Ejemplo n.º 1
0
    protected IEnumerator MateRoutine(float duration, Consumer mate)
    {
        hasMated = true;

        GameObject matingEffectGo = null;

        Vector3 spawnPos = (mateTarget.transform.position + transform.position) / 2;


        if (MatingEffect)
        {
            matingEffectGo = Instantiate(MatingEffect, spawnPos, Quaternion.Euler(-90, 0, 0));
        }

        yield return(new WaitForSeconds(duration));

        for (int i = 0; i < consumerSettings.GetRandomOffspringCount(); i++)
        {
            Consumer offspring = Instantiate(Offspring, spawnPos, Quaternion.identity);
            offspring.IsOffspring = true;

            if (i % 2 == 0)
            {
                offspring.Gender = Gender.Female;
            }
            else
            {
                offspring.Gender = Gender.Male;
            }
        }

        if (Environment.Instance.currentYear > 2015)
        {
            StarfishManager.Instance.SpawnStarfish(AchievementTypes.ODD_OFFSPRING, spawnPos);
        }

        var matingPS = MatingEffect.GetComponent <ParticleSystem>();

        matingPS.Stop();

        if (matingPS.isStopped)
        {
            Destroy(matingEffectGo);
        }

        CurrentAction      = CreatureAction.Exploring;
        mate.CurrentAction = CreatureAction.Exploring;

        yield return(new WaitForSeconds(5f));

        MateFound      = false;
        mate.MateFound = false;

        hasMated      = false;
        mate.hasMated = false;
    }