public void GenerateHabits() { if (tag != "Judge") { if (UnityEngine.Random.Range(0, 100) < 80) { needs[(int)Habits.Layer.physiology].habitPrimary = RandomHabit(Habits.Layer.physiology); needs[(int)Habits.Layer.physiology].habitPrimaryValue = maxHabitValue; highestLayer = 0; //Debug.Log("physiology habit is " + needs[(int)Habits.Layer.physiology].habitPrimary.name); if (UnityEngine.Random.Range(0, 100) < 60) { highestLayer = 1; needs[(int)Habits.Layer.safety].habitPrimary = RandomHabit(Habits.Layer.safety); needs[(int)Habits.Layer.safety].habitPrimaryValue = maxHabitValue; //Debug.Log("safety habit is " + needs[(int)Habits.Layer.safety].habitPrimary.name); if (UnityEngine.Random.Range(0, 100) < 50) { highestLayer = 2; needs[(int)Habits.Layer.belonging].habitPrimary = RandomHabit(Habits.Layer.belonging); needs[(int)Habits.Layer.belonging].habitPrimaryValue = maxHabitValue; if (UnityEngine.Random.Range(0, 100) < 30) { highestLayer = 3; needs[(int)Habits.Layer.esteem].habitPrimary = RandomHabit(Habits.Layer.esteem); needs[(int)Habits.Layer.esteem].habitPrimaryValue = maxHabitValue; highestLayer = 4; influencer = true; influencerHabit = RandomNeedPrimaryHabit(); needs[(int)Habits.Layer.actualization].habitPrimary = influencerHabit; } } } } } else { highestLayer = -1; } /* * foreach (Need need in needs) * { * need.habitPrimary = RandomHabit(need); * } */ }
/// <summary> /// Returns one of the person's primary habits. /// </summary> /// <returns></returns> public Habits.Habit RandomNeedPrimaryHabit() { Habits.Habit newHabit = new Habits.Habit(); List <Habits.Habit> matchingHabits = new List <Habits.Habit>(); foreach (Need eachNeed in needs) { matchingHabits.Add(eachNeed.habitPrimary); } if (matchingHabits.Count <= 0) { Debug.LogWarning("No matching random habits found for needs."); } newHabit = matchingHabits[UnityEngine.Random.Range(0, matchingHabits.Count - 1)]; return(newHabit); }
public Habits.Habit RandomHabit(Habits.Layer layer) { Habits.Habit newHabit = new Habits.Habit(); List <Habits.Habit> matchingHabits = new List <Habits.Habit>(); foreach (Habits.Habit eachHabit in Habits.habits) { // If this habit matches the randomly picked habit if (eachHabit.layer == layer) { //Debug.Log("randomizing list includes " + eachHabit.name); matchingHabits.Add(eachHabit); } } if (matchingHabits.Count <= 0) { Debug.LogWarning("No matching random habits found for that layer " + layer.ToString() + "."); } newHabit = matchingHabits[UnityEngine.Random.Range(0, matchingHabits.Count - 1)]; return(newHabit); }