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é }
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; }
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>(); }
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; }
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; }
public void Init(Twippie twippie) { _planet = twippie.Planet; transform.position = twippie.transform.position; transform.SetParent(_planet.transform); }