Exemplo n.º 1
0
    private void GenerateBaby(Zone zone, Twippie dad, Twippie mom)
    {
        Twippie twippieModel;
        float   wealth = (100 - ((dad.MaxSicknessDuration + mom.MaxSicknessDuration) / 2)) / 100;
        int     parentsMeanGeneration = Mathf.FloorToInt((dad.GenerationIndex + mom.GenerationIndex) / 2); // Papa et maman peuvent être à des générations différentes sur l'arbre généalogique

        if (dad is AdvancedTwippie && mom is AdvancedTwippie)
        {
            twippieModel = _objectGenerator.Get <AdvancedTwippie>();
        }
        else if ((dad is AdvancedTwippie || mom is AdvancedTwippie) && Utils.CoinFlip())
        {
            twippieModel = _objectGenerator.Get <AdvancedTwippie>();
        }
        else if (Utils.CoinFlip(wealth / 5 * parentsMeanGeneration)) // Chances de devenir un twippie avancé selon le niveau de santé des parents et la génération en cours
        {
            twippieModel = _objectGenerator.Get <AdvancedTwippie>();
        }
        else
        {
            twippieModel = _objectGenerator.Get <Twippie>();
        }
        Twippie baby    = Instantiate(twippieModel, zone.WorldPos, Quaternion.identity);
        Twippie twippie = baby.GetComponent <Twippie>();

        twippie.GenerationIndex = parentsMeanGeneration + 1;
        twippie.Dad             = dad;
        twippie.Mom             = mom;
        //TODO : Affecter les stats de papa / maman à l'enfant
        //TODO : Calculer si évolution de twippie primitif à avancé
    }
Exemplo n.º 2
0
 private void CheckObjects()
 {
     foreach (ManageableObjet obj in _objectGenerator.ObjectFactory)
     {
         if (!FocusedObjects.Contains(obj))
         {
             _radialPanel.SetButtonsActiveState(false, obj.Type);
         }
     }
     foreach (ManageableObjet obj in FocusedObjects)
     {
         if (obj is Twippie)
         {
             Twippie t = (Twippie)obj;
             if (t.LineRenderer != null)
             {
                 t.LineRenderer.enabled = true;
             }
         }
         _radialPanel.SetButtonsActiveState(true, obj.Type, true);
         if (!_mainPanel.SetStatPanelActiveState(true, obj.Type))
         {
             Debug.Log("global stat not found");
         }
         else
         {
             Debug.Log("global stat " + obj.GetType().ToString() + " a été updaté !");
         }
     }
     _uiManager.InfoGUI = true;
     CurrentContolMode  = ControlMode.CheckingMultiple;
 }
Exemplo n.º 3
0
 protected override void Start()
 {
     base.Start();
     _partner      = null;
     _advancedNeed = new Skill(SkillType.None, 0);
     SetSensibilities();
     StartCoroutine(CheckAdvancedNeeds());
     _ressources = new List <Resource> {
         new Resource(ResourceType.Drink, 0), new Resource(ResourceType.Food, 0)
     };
     _builtStuff = new List <IBuildable>();
 }
Exemplo n.º 4
0
 private void CheckObject()
 {
     if (FocusedObject is Twippie)
     {
         Twippie t = (Twippie)FocusedObject;
         t.LineRenderer.enabled = true;
     }
     _radialPanel.Open();
     _radialPanel.SetAllButtonsActiveState(false, FocusedObject.Type);
     _radialPanel.SetButtonsActiveState(true, FocusedObject.Type, true);
     //FocusedObject.GetStatManager();
     //FocusedObject.PopulateStats();
     _uiManager.SetPreviewCam(FocusedObject);
     _uiManager.InfoGUI = true;
     CurrentContolMode  = ControlMode.Checking;
 }
Exemplo n.º 5
0
    private IEnumerator Reproduce(Twippie other)
    {
        int count = 100;

        Debug.Log("Making babies !");
        while (count > 0)
        {
            if (_renderer != null)
            {
                _renderer.material.color = UnityEngine.Random.ColorHSV();
            }

            if (other != null)
            {
                transform.LookAt(other.transform);
                other.transform.LookAt(transform);
                count--;
                yield return(null);
            }
            else
            {
                _reproduce = null;
                yield break;
            }
        }
        int nbBabies = 0;

        if (_gender == Gender.Female)// C'est la femme qui accouche
        {
            foreach (var zoneId in Zone.NeighbourIds)
            {
                if (Utils.CoinFlip(.5f / (nbBabies + 1))) //% de chance de faire un bébé dans chaque zone voisine => diminue de moitié par twippie créé. Peu de chance d'avoir des triplets...
                {
                    var zone = _zoneManager.FindById(zoneId);

                    nbBabies++;
                    GenerateBaby(zone, other, this); // Génère le bébé selon la maman et le papa
                }
            }
        }

        Debug.Log(nbBabies + " babies made !");
        _stepsBeforeReproduce = _initialStepsBeforeReproduce; // On réinitialise la durée avant prochaine aventure
        SetDestination(DefineGoal());
        _reproduce = null;
    }
Exemplo n.º 6
0
 public void Init(Twippie twippie)
 {
     _planet            = twippie.Planet;
     transform.position = twippie.transform.position;
     transform.SetParent(_planet.transform);
 }