示例#1
0
    public int GetRandoCandidatesByTemplate(template_random_profile rando)
    {
        if (rando.Template.task_random_profile_generator.profile_generate_any_random)
        {
            List <template_profile> randoCandidates = new List <template_profile>();
            for (int i = 0; i < RandoProfileList.Count; ++i)
            {
                if (RandoProfileList[i].Template.profile_basic_data.profile_is_enabled && IsProfileModerate(RandoProfileList[i]))
                {
                    randoCandidates.Add(RandoProfileList[i]);
                }
                else
                {
                    continue;
                }
            }
            if (randoCandidates.Count > 0)
            {
                return(randoCandidates.Count);
            }
            else
            {
                Debug.LogError("RAN OUT OF RANDO PROFILES :'( pls tell writers to write more");
                return(0);
            }
        }
        else
        {
            List <template_profile> randoCandidates = new List <template_profile>();

            List <template_profile> targetRandoList = null;

            if (rando.Template.task_random_profile_generator.profile_generate_occupation == profile_occupation_selector.job_lasthuman)
            {
                targetRandoList = LastHumanProfileList;
            }
            else if (rando.Template.task_random_profile_generator.profile_generate_occupation == profile_occupation_selector.job_plant)
            {
                targetRandoList = PlantProfileList;
            }
            else
            {
                targetRandoList = RandoProfileList;
            }

            for (int i = 0; i < targetRandoList.Count; ++i)
            {
                if (!targetRandoList[i].Template.profile_basic_data.profile_is_enabled)
                {
                    continue;
                }

                switch (rando.Template.task_random_profile_generator.profile_generate_spare_death_both)
                {
                case profile_generate_spare_death_both.profile_generate_death_only:     // death
                {
                    // death profile
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                        {
                            continue;
                        }
                    }

                    break;
                }

                case profile_generate_spare_death_both.profile_generate_spare_only:     //spare
                {
                    // spare profile
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                        {
                            continue;
                        }
                    }
                    break;
                }
                    //case profile_generate_spare_death_both.profile_generate_both_death_spare: //both - i have no idea how the f**k imma do dis
                    //{
                    //    // death profile
                    //    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min &&
                    //            targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //
                    //    break;
                    //}
                }



                // basic profile
                if (rando.Template.task_random_profile_generator.profile_generate_occupation != 0)
                {
                    if (targetRandoList[i].Template.profile_basic_data.profile_occupation_selector != rando.Template.task_random_profile_generator.profile_generate_occupation)
                    {
                        continue;
                    }
                }
                if (rando.Template.task_random_profile_generator.profile_generate_younger_than != 0)
                {
                    try
                    {
                        if (int.Parse(targetRandoList[i].Template.profile_basic_data.profile_age_value) > rando.Template.task_random_profile_generator.profile_generate_younger_than)
                        {
                            continue;
                        }
                    }
                    catch
                    {
                        Debug.LogWarning("Could not parse profile age for: " + targetRandoList[i].Template.profile_basic_data.profile_name);
                        continue;
                    }
                }
                if (rando.Template.task_random_profile_generator.profile_generate_older_than != 0)
                {
                    try
                    {
                        if (int.Parse(targetRandoList[i].Template.profile_basic_data.profile_age_value) < rando.Template.task_random_profile_generator.profile_generate_older_than)
                        {
                            continue;
                        }
                    }
                    catch
                    {
                        Debug.LogWarning("Could not parse profile age for: " + targetRandoList[i].Template.profile_basic_data.profile_name);
                        continue;
                    }
                }

                randoCandidates.Add(targetRandoList[i]);
            }

            if (randoCandidates.Count > 0)
            {
                return(randoCandidates.Count);
            }
            else
            {
                Debug.LogError("No suitable rando for: '" + rando.DisplayName + "' found! Reason: No candidates matched conditions");
                return(0);
            }
        }
    }
示例#2
0
    public template_profile RollProfileByRandoDefinition(template_random_profile rando)
    {
        template_profile rolledRando = null;

        if (RandoProfileList.Count == 0)
        {
            Debug.LogError("OUT OF RANDOS");
            return(null);
        }

        if (rando.Template.task_random_profile_generator.profile_generate_any_random)
        {
            List <template_profile> randoCandidates        = new List <template_profile>();
            List <template_profile> randoCandidatesEnabled = new List <template_profile>();
            for (int i = 0; i < RandoProfileList.Count; ++i)
            {
                if (RandoProfileList[i].Template.profile_basic_data.profile_is_enabled && IsProfileModerate(RandoProfileList[i]))
                {
                    randoCandidates.Add(RandoProfileList[i]);
                    if (SaveManager.instance.GetCurrentPlayerState().IsProfileEnabled(RandoProfileList[i]))
                    {
                        randoCandidatesEnabled.Add(RandoProfileList[i]);
                        Debug.Log("ADDED ENABLED RANDO TO ROLL POOL");
                        // nudge the odds lololol
                        //for (int x = 0; x < 15; ++x)
                        //{
                        //    randoCandidates.Add(RandoProfileList[i]);
                        //}
                    }
                }
                else
                {
                    continue;
                }
            }
            if (randoCandidatesEnabled.Count > 0)
            {
                rolledRando = randoCandidatesEnabled[Random.Range(0, randoCandidatesEnabled.Count)];
                Debug.Log("ROLLED ENABLED RANDO");
            }
            else if (randoCandidates.Count > 0)
            {
                rolledRando = randoCandidates[Random.Range(0, randoCandidates.Count)];
            }
            else
            {
                Debug.LogError("RAN OUT OF RANDO PROFILES :'( pls tell writers to write more");
            }
        }
        else
        {
            List <template_profile> randoCandidates = new List <template_profile>();

            List <template_profile> targetRandoList = null;

            if (rando.Template.task_random_profile_generator.profile_generate_occupation == profile_occupation_selector.job_lasthuman)
            {
                targetRandoList = LastHumanProfileList;
            }
            else if (rando.Template.task_random_profile_generator.profile_generate_occupation == profile_occupation_selector.job_plant)
            {
                targetRandoList = PlantProfileList;
            }
            else
            {
                targetRandoList = RandoProfileList;
            }

            for (int i = 0; i < targetRandoList.Count; ++i)
            {
                if (!targetRandoList[i].Template.profile_basic_data.profile_is_enabled)
                {
                    continue;
                }

                switch (rando.Template.task_random_profile_generator.profile_generate_spare_death_both)
                {
                case profile_generate_spare_death_both.profile_generate_death_only:     // death
                {
                    // death profile
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                        {
                            continue;
                        }
                    }

                    break;
                }

                case profile_generate_spare_death_both.profile_generate_spare_only:     //spare
                {
                    // spare profile
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                        {
                            continue;
                        }
                    }
                    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    {
                        if (targetRandoList[i].Template.profile_spare_data.profile_spare_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                        {
                            continue;
                        }
                    }
                    break;
                }
                    //case profile_generate_spare_death_both.profile_generate_both_death_spare: //both - i have no idea how the f**k imma do dis
                    //{
                    //    // death profile
                    //    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min &&
                    //            targetRandoList[i].Template.profile_spare_data.profile_spare_ecology_value < rando.Template.task_random_profile_generator.profile_generate_ecology_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_ecology_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_ecology_value > rando.Template.task_random_profile_generator.profile_generate_ecology_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value < rando.Template.task_random_profile_generator.profile_generate_healthcare_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_healthcare_value > rando.Template.task_random_profile_generator.profile_generate_healthcare_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value < rando.Template.task_random_profile_generator.profile_generate_peace_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_peace_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_peace_value > rando.Template.task_random_profile_generator.profile_generate_peace_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value < rando.Template.task_random_profile_generator.profile_generate_prosperity_value_min)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //    if (rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max != 0)
                    //    {
                    //        if (targetRandoList[i].Template.profile_death_data.profile_death_prosperity_value > rando.Template.task_random_profile_generator.profile_generate_prosperity_value_max)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //
                    //    break;
                    //}
                }



                // basic profile
                if (rando.Template.task_random_profile_generator.profile_generate_occupation != 0)
                {
                    if (targetRandoList[i].Template.profile_basic_data.profile_occupation_selector != rando.Template.task_random_profile_generator.profile_generate_occupation)
                    {
                        continue;
                    }
                }
                if (rando.Template.task_random_profile_generator.profile_generate_younger_than != 0)
                {
                    try
                    {
                        if (int.Parse(targetRandoList[i].Template.profile_basic_data.profile_age_value) > rando.Template.task_random_profile_generator.profile_generate_younger_than)
                        {
                            continue;
                        }
                    }
                    catch
                    {
                        Debug.LogWarning("Could not parse profile age for: " + targetRandoList[i].Template.profile_basic_data.profile_name);
                        continue;
                    }
                }
                if (rando.Template.task_random_profile_generator.profile_generate_older_than != 0)
                {
                    try
                    {
                        if (int.Parse(targetRandoList[i].Template.profile_basic_data.profile_age_value) < rando.Template.task_random_profile_generator.profile_generate_older_than)
                        {
                            continue;
                        }
                    }
                    catch
                    {
                        Debug.LogWarning("Could not parse profile age for: " + targetRandoList[i].Template.profile_basic_data.profile_name);
                        continue;
                    }
                }

                randoCandidates.Add(targetRandoList[i]);
            }

            if (randoCandidates.Count > 0)
            {
                rolledRando = randoCandidates[Random.Range(0, randoCandidates.Count)];
            }
            else
            {
                Debug.LogError("No suitable rando for: '" + rando.DisplayName + "' found! Reason: No candidates matched conditions");
            }
        }

        if (rolledRando != null)
        {
            SaveManager.instance.GetCurrentPlayerState().AddRolledRandoID(rolledRando.Id);
            RemoveRolledRandoFromPool(rolledRando);
        }
        else
        {
            Debug.LogError("No suitable rando found!");
        }
        return(rolledRando);
    }
示例#3
0
    public override void InitManager()
    {
        base.InitManager();
        instance          = this;
        AllRandoTemplates = ArticyDatabase.GetAllOfType <template_random_profile>();



        if (RandoProfilesReference.HasReference)
        {
            UserFolder randoFolder = RandoProfilesReference.GetObject <UserFolder>();

            for (int i = 0; i < randoFolder.Children.Count; ++i)
            {
                UserFolder childRandoFolder = randoFolder.Children[i] as UserFolder;
                if (childRandoFolder != null)
                {
                    for (int j = 0; j < childRandoFolder.Children.Count; ++j)
                    {
                        template_profile randoProfile = childRandoFolder.Children[j] as template_profile;

                        //if (randoProfile.PreviewImage != null && randoProfile.PreviewImage.Asset != null)
                        //{
                        //    ImagePhoto.sprite = AssignedProfile.PreviewImage.Asset.LoadAssetAsSprite();
                        //}

                        if (randoProfile != null && randoProfile.PreviewImage != null && randoProfile.PreviewImage.Asset != null)
                        {
                            RandoProfileList.Add(randoProfile);
                        }
                    }
                }
            }
        }

        //Debug.Log("Found " + RandoProfileList.Count + " rando profiles");

        if (LastHumanProfilesReference.HasReference)
        {
            UserFolder randoFolderLastHumans = LastHumanProfilesReference.GetObject <UserFolder>();
            for (int i = 0; i < randoFolderLastHumans.Children.Count; ++i)
            {
                template_profile randoProfile = randoFolderLastHumans.Children[i] as template_profile;

                if (randoProfile != null && randoProfile.PreviewImage != null && randoProfile.PreviewImage.Asset != null)
                {
                    LastHumanProfileList.Add(randoProfile);
                }
            }
        }
        //Debug.Log("Found " + LastHumanProfileList.Count + " last human rando profiles");

        if (DeveloperProfilesReference.HasReference)
        {
            UserFolder devFolder = DeveloperProfilesReference.GetObject <UserFolder>();

            for (int j = 0; j < devFolder.Children.Count; ++j)
            {
                template_profile devProfile = devFolder.Children[j] as template_profile;
                DeveloperProfileList.Add(devProfile);
            }
        }

        //Debug.Log("Found " + DeveloperProfileList.Count + " dev profiles");

        if (PlantProfilesReference.HasReference)
        {
            UserFolder randoFolderPlants = PlantProfilesReference.GetObject <UserFolder>();
            for (int i = 0; i < randoFolderPlants.Children.Count; ++i)
            {
                template_profile randoProfile = randoFolderPlants.Children[i] as template_profile;

                if (randoProfile != null && randoProfile.PreviewImage != null && randoProfile.PreviewImage.Asset != null)
                {
                    PlantProfileList.Add(randoProfile);
                }
            }
        }

        if (AnyRandomTemplateReference.HasReference)
        {
            AnyRandomTemplate = AnyRandomTemplateReference.GetObject <template_random_profile>();
        }
        //Debug.Log("Found " + PlantProfileList.Count + " plant rando profiles");

        for (int i = 0; i < SubplotProfileReferences.Count; ++i)
        {
            if (SubplotProfileReferences[i].HasReference)
            {
                template_profile subplotProfile = SubplotProfileReferences[i].GetObject <template_profile>();

                if (subplotProfile != null)
                {
                    SubplotProfiles.Add(subplotProfile);
                }
            }
        }
        //Debug.Log("Found " + SubplotProfiles.Count + " subplot profiles");

        string trolo = "";

        for (int i = 0; i < AllRandoTemplates.Count; ++i)
        {
            trolo += "Found " + GetRandoCandidatesByTemplate(AllRandoTemplates[i]) + " : " + AllRandoTemplates[i].DisplayName + "'s\n";
        }
        //Debug.Log(trolo);

        List <template_profile> profiles = RandoProfileList; //ArticyDatabase.GetAllOfType<template_profile>();

        int ecoPlusSpare        = 0;
        int healthPlusSpare     = 0;
        int peacePlusSpare      = 0;
        int prosperityPlusSpare = 0;

        int ecoPlusDeath        = 0;
        int healthPlusDeath     = 0;
        int peacePlusDeath      = 0;
        int prosperityPlusDeath = 0;

        int ecoMinusDeath        = 0;
        int healthMinusDeath     = 0;
        int peaceMinusDeath      = 0;
        int prosperityMinusDeath = 0;

        int ecoMinusSpare        = 0;
        int healthMinusSpare     = 0;
        int peaceMinusSpare      = 0;
        int prosperityMinusSpare = 0;

        for (int i = 0; i < profiles.Count; ++i)
        {
            if (profiles[i].Template.profile_death_data.profile_death_ecology_value > 0)
            {
                ecoPlusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_ecology_value);
            }
            else
            {
                ecoMinusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_ecology_value);
            }
            if (profiles[i].Template.profile_death_data.profile_death_peace_value > 0)
            {
                peacePlusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_peace_value);
            }
            else
            {
                peaceMinusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_peace_value);
            }
            if (profiles[i].Template.profile_death_data.profile_death_healthcare_value > 0)
            {
                healthPlusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_healthcare_value);
            }
            else
            {
                healthMinusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_healthcare_value);
            }
            if (profiles[i].Template.profile_death_data.profile_death_prosperity_value > 0)
            {
                prosperityPlusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_prosperity_value);
            }
            else
            {
                prosperityMinusDeath += Mathf.RoundToInt(profiles[i].Template.profile_death_data.profile_death_prosperity_value);
            }


            if (profiles[i].Template.profile_spare_data.profile_spare_ecology_value > 0)
            {
                ecoPlusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_ecology_value);
            }
            else
            {
                ecoMinusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_ecology_value);
            }
            if (profiles[i].Template.profile_spare_data.profile_spare_peace_value > 0)
            {
                peacePlusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_peace_value);
            }
            else
            {
                peaceMinusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_peace_value);
            }
            if (profiles[i].Template.profile_spare_data.profile_spare_healthcare_value > 0)
            {
                healthPlusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_healthcare_value);
            }
            else
            {
                healthMinusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_healthcare_value);
            }
            if (profiles[i].Template.profile_spare_data.profile_spare_prosperity_value > 0)
            {
                prosperityPlusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_prosperity_value);
            }
            else
            {
                prosperityMinusSpare += Mathf.RoundToInt(profiles[i].Template.profile_spare_data.profile_spare_prosperity_value);
            }
        }
        //Debug.Log("MEGASTATS\n" +
        //    "Eco Plus Spare: " + ecoPlusSpare + "\n" +
        //    "Health Plus Spare: " + healthPlusSpare + "\n" +
        //    "Peace Plus Spare: " + peacePlusSpare + "\n" +
        //    "Prosperity Plus Spare: " + prosperityPlusSpare + "\n" +

        //    "Eco Minus Spare: " + ecoMinusSpare + "\n" +
        //    "Health Minus Spare: " + healthMinusSpare + "\n" +
        //    "Peace Minus Spare: " + peaceMinusSpare + "\n" +
        //    "Prosperity Minus Spare: " + prosperityMinusSpare + "\n" +

        //    "Eco Plus Death: " + ecoPlusDeath + "\n" +
        //    "Health Plus Death: " + healthPlusDeath + "\n" +
        //    "Peace Plus Death: " + peacePlusDeath + "\n" +
        //    "Prosperity Plus Death: " + prosperityPlusDeath + "\n" +

        //    "Eco Minus Death: " + ecoMinusDeath + "\n" +
        //    "Health Minus Death: " + healthMinusDeath + "\n" +
        //    "Peace Minus Death: " + peaceMinusDeath + "\n" +
        //    "Prosperity Minus Death: " + prosperityMinusDeath + "\n"

        //    );
    }
示例#4
0
    public void RollDay(bool restoreFromSave)
    {
        List <template_profile> profiles = new List <template_profile>();
        int currentDayIndex = SaveManager.instance.GetCurrentPlayerState().GetCurrentDayIndex();

        if (restoreFromSave)
        {
            List <ProfileState> profileStates = SaveManager.instance.GetCurrentPlayerState().GetCurrentDayProfiles();
            for (int i = 0; i < profileStates.Count; ++i)
            {
                template_profile profile = ArticyDatabase.GetObject(profileStates[i].ProfileID) as template_profile;
                if (profile != null)
                {
                    profiles.Add(profile);
                }
                else
                {
                    Debug.LogError("Invalid Profile ID: " + profileStates[i].ProfileID.ToString() + " saved for day: " + (currentDayIndex + 1));
                }
            }
        }
        else
        {
            template_day day = GameManager.instance.GetCurrentDay();

            if (day == null)
            {
                Debug.LogError("DAY NOT FOUND; PROBABLY GOING TO EXPLODE");
            }
            template_day_task dayTask = day.Template.day.day_task_slot as template_day_task;

            if (dayTask == null)
            {
                Debug.LogError("DAY TASK NOT FOUND; PROBABLY GOING TO EXPLODE");
            }
            dayTask.Template.task.task_profile_count.CallScript();


            Debug.Log("Getting " + ArticyGlobalVariables.Default.day.profile_count + " profiles for day " + (currentDayIndex + 1) + "; Day Name: " + day.DisplayName);

            List <ArticyObject> dailyProfileTemplates = new List <ArticyObject>(dayTask.Template.task.task_daily_profiles);
            for (int j = 0; j < ArticyGlobalVariables.Default.day.profile_count; ++j)
            {
                int index = j;
                if (dayTask.Template.task.task_profile_shuffler)
                {
                    index = UnityEngine.Random.Range(0, dailyProfileTemplates.Count);
                }
                else
                {
                }
                template_profile        dailyProfile       = dailyProfileTemplates[index] as template_profile;
                template_random_profile dailyRandomProfile = dailyProfileTemplates[index] as template_random_profile;

                if (dayTask.Template.task.task_profile_shuffler)
                {
                    dailyProfileTemplates.RemoveAt(index);
                }
                if (dailyRandomProfile != null)
                {
                    dailyProfile = ProfileManager.instance.RollProfileByRandoDefinition(dailyRandomProfile);
                }
                if (dailyProfile == null)
                {
                    Debug.LogError("Rolled null profile for day " + (currentDayIndex + 1) + "!");
                    continue;
                }
                else if (!dailyProfile.Template.profile_basic_data.profile_is_enabled)
                {
                    Debug.Log("Skipping un-enabled profile: " + dailyProfile.Template.profile_basic_data.profile_name + " for day: " + (currentDayIndex + 1) + "!");
                }
                else
                {
                    profiles.Add(dailyProfile);
                    AllProfiles.Add(dailyProfile);
                }
            }
            int profileDelta = ArticyGlobalVariables.Default.day.profile_count - profiles.Count;
            for (int i = 0; i < profileDelta; ++i)
            {
                template_profile dailyProfile = null;
                dailyProfile = ProfileManager.instance.RollProfileByRandoDefinition(ProfileManager.instance.AnyRandomTemplate);
                if (dailyProfile == null)
                {
                    Debug.LogError("Rolled null profile for day " + (currentDayIndex + 1) + "!");
                    continue;
                }
                else
                {
                    profiles.Add(dailyProfile);
                    AllProfiles.Add(dailyProfile);
                }
            }

            SaveManager.instance.GetCurrentPlayerState().SetCurrentDayProfiles(profiles);
            // grab only its general properties
        }

        List <ulong> profileIDs = new List <ulong>();

        for (int i = 0; i < profiles.Count; ++i)
        {
            profileIDs.Add(profiles[i].Id);

            if (!restoreFromSave)
            {
                Phone.instance.AddNewsText(profiles[i].Template.profile_basic_data.profile_appearance_news_first);
                Phone.instance.AddNewsText(profiles[i].Template.profile_basic_data.profile_appearance_news_second);
            }
        }
        Debug.Log("Found " + profiles.Count + " profiles for day " + (currentDayIndex + 1));

        if (!restoreFromSave)
        {
            SaveManager.instance.GetCurrentPlayerState().AddDailyProfiles(currentDayIndex + 1, profileIDs);
        }
        DailyProfiles.Add(currentDayIndex + 1, profiles);
    }