Example #1
0
        protected override string GetLocalizedValue(AcademicDegreeNames value, ref ThumbnailKey icon)
        {
            AcademicDegreeStaticData degree = AcademicDegreeManager.GetStaticElement(value);

            if (degree == null)
            {
                return(null);
            }

            // icon = new ThumbnailKey(ResourceKey.CreatePNGKey(career.CareerIconColored, ResourceUtils.ProductVersionToGroupId(ProductVersion.BaseGame)), ThumbnailSize.Medium);

            return(degree.DegreeName);
        }
Example #2
0
        protected static void OnHired(Event e)
        {
            CareerEvent cEvent = e as CareerEvent;

            if (cEvent == null)
            {
                return;
            }

            if (cEvent.Career is AcademicCareer)
            {
                if (!GameUtils.IsUniversityWorld())
                {
                    if (AcademicCareer.GlobalTermLength == AcademicCareer.TermLength.kInvalid)
                    {
                        AcademicCareer.GlobalTermLength = AcademicCareer.TermLength.kOneWeek;
                    }

                    AddAcademic(cEvent.Career.OwnerDescription, AcademicCareer.GlobalTermLength);
                }
            }
            else //if (cEvent.Career is XpBasedCareer)
            {
                if (cEvent.Career.CareerLevel == 1)
                {
                    SimDescription sim = cEvent.Career.OwnerDescription;
                    if (sim == null)
                    {
                        return;
                    }

                    AcademicDegreeManager degreeManager = sim.CareerManager.DegreeManager;
                    if (degreeManager == null)
                    {
                        return;
                    }

                    int level = CalculateBoostedStartingLevel(cEvent.Career);

                    for (int i = 0; i < level; i++)
                    {
                        cEvent.Career.PromoteSim();
                    }
                }
            }
        }
Example #3
0
        protected override AcademicDegreeNames ConvertFromString(string value)
        {
            AcademicDegreeNames result;

            if (!ParserFunctions.TryParseEnum <AcademicDegreeNames>(value, out result, AcademicDegreeNames.Undefined))
            {
                ulong guid;
                if (ulong.TryParse(value, out guid))
                {
                    result = (AcademicDegreeNames)guid;

                    if (AcademicDegreeManager.GetStaticElement(result) == null)
                    {
                        return(AcademicDegreeNames.Undefined);
                    }
                }
            }
            return(result);
        }
Example #4
0
            public override bool Get(SimDescription me, IMiniSimDescription actor, Dictionary <Values, Values> results)
            {
                if (me.CareerManager == null)
                {
                    return(false);
                }

                AcademicDegreeManager manager = me.CareerManager.DegreeManager;

                if (manager == null)
                {
                    return(false);
                }

                foreach (AcademicDegree degree in manager.List)
                {
                    Values value = new Values(degree.AcademicDegreeName, degree.IsDegreeCompleted);

                    results[value] = value;
                }

                return(true);
            }
Example #5
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            if (Sim.AssignedRole != null)
            {
                if (ManagerCareer.IsRegisterInstalled())
                {
                    if ((Sim.LotHome == null) && (Sim.Occupation == null))
                    {
                        IncStat("Registered Retiremenet");

                        GetData <CareerSimData>(Sim).Retire();
                    }
                }

                return(true);
            }
            else if (SimTypes.IsSpecial(Sim))
            {
                IncStat("Special");
                return(false);
            }

            bool enroll = false;

            if (GameUtils.IsUniversityWorld())
            {
                enroll = true;
            }
            else if (Careers.TestCareer(this, Sim, OccupationNames.AcademicCareer))
            {
                if (Careers.AllowHomeworldUniversity(Sim))
                {
                    AcademicDegreeManager degreeManager = Sim.CareerManager.DegreeManager;
                    if (degreeManager != null)
                    {
                        if (!degreeManager.HasCompletedAnyDegree())
                        {
                            enroll = true;
                        }
                    }
                }
            }

            if (!mForce)
            {
                if (GetValue <ManualCareerOption, bool>(Sim))
                {
                    IncStat("Manual");
                    return(false);
                }
            }

            List <OccupationNames> careers = new List <OccupationNames>();
            bool dream = Careers.GetPotentialCareers(this, Sim, careers, mCheckQuit);

            bool partTime = false;

            if (Sim.Teen)
            {
                bool scoreSuccess = true;
                if (mForce)
                {
                    if (AddScoring("FindJob", Sim) < 0)
                    {
                        scoreSuccess = false;
                    }
                }
                else
                {
                    if (AddScoring("ChanceFindJob", Sim) < 0)
                    {
                        scoreSuccess = false;
                    }
                }

                if ((!scoreSuccess) && (!GetValue <ForceTeensOption, bool>()))
                {
                    IncStat("Score Fail");
                    return(false);
                }
                partTime = true;
            }

            if (partTime)
            {
                List <OccupationNames> partTimeList = new List <OccupationNames>();

                AddStat(Sim.Age + ": Part-time Choices", careers.Count);

                foreach (OccupationNames career in careers)
                {
                    Career staticCareer = CareerManager.GetStaticCareer(career);
                    if (staticCareer == null)
                    {
                        continue;
                    }

                    if (staticCareer is School)
                    {
                        continue;
                    }

                    CareerLocation location = Career.FindClosestCareerLocation(Sim, staticCareer.Guid);
                    if (location == null)
                    {
                        continue;
                    }

                    if (!AllowStandalone(location))
                    {
                        continue;
                    }

                    foreach (CareerLocation loc in location.Owner.CareerLocations.Values)
                    {
                        Career possible = loc.Career;

                        if (!possible.IsPartTime)
                        {
                            continue;
                        }

                        if (ManagerCareer.IsPlaceholderCareer(possible))
                        {
                            continue;
                        }

                        partTimeList.Add(possible.Guid);
                    }
                }

                careers = partTimeList;

                AddStat(Sim.Age + ": Part-time Final", careers.Count);
            }
            else
            {
                AddStat(Sim.Age + ": Full-time Final", careers.Count);
            }

            if ((!mForce) && (!dream) && (Sim.Occupation != null) && (!(Sim.Occupation is Retired)))
            {
                IncStat("Non-Dream Employed");
                return(false);
            }

            if (enroll)
            {
                AcademicDegreeNames degreeName = AcademicDegreeNames.Undefined;

                foreach (DreamJob job in ManagerCareer.GetDreamJob(Sim))
                {
                    if (job == null)
                    {
                        continue;
                    }

                    foreach (AcademicDegreeStaticData data in AcademicDegreeManager.sDictionary.Values)
                    {
                        if (data.AssociatedOccupations.Contains(job.mCareer))
                        {
                            degreeName = data.AcademicDegreeName;
                            break;
                        }
                    }
                }

                if (degreeName == AcademicDegreeNames.Undefined)
                {
                    degreeName = AcademicDegreeManager.ChooseWeightRandomSuitableDegree(Sim);
                }

                if (!Careers.IsDegreeAllowed(Manager, Sim, degreeName))
                {
                    degreeName = Careers.GetAllowedDegree(Manager, Sim);
                }

                if (degreeName != AcademicDegreeNames.Undefined)
                {
                    if (AcademicCareer.GlobalTermLength == AcademicCareer.TermLength.kInvalid)
                    {
                        AcademicCareer.GlobalTermLength = AcademicCareer.TermLength.kOneWeek;
                    }

                    AcademicCareer.EnrollSimInAcademicCareer(Sim, degreeName, AcademicCareer.ChooseRandomCoursesPerDay());
                    return(true);
                }
            }

            bool promptForJob = GetValue <ChooseCareerOption, bool>();

            if ((promptForJob) && (!Careers.MatchesAlertLevel(Sim)))
            {
                promptForJob = false;
            }

            if (careers.Count > 0)
            {
                if ((Sim.Occupation != null) && (careers.Contains(Sim.Occupation.Guid)))
                {
                    IncStat("Already Has Choice");
                    return(false);
                }

                if (!promptForJob)
                {
                    if (AskForJob(Sim, RandomUtil.GetRandomObjectFromList(careers)))
                    {
                        return(true);
                    }
                }
            }

            if ((!mForce) && (Sim.Occupation != null))
            {
                IncStat("Already Employed");
                return(false);
            }

            List <Occupation> allCareers = null;

            if (careers.Count > 0)
            {
                allCareers = new List <Occupation>();

                foreach (Career career in CareerManager.CareerList)
                {
                    if (careers.Contains(career.Guid))
                    {
                        allCareers.Add(career);
                    }
                }
            }

            if ((allCareers == null) || (allCareers.Count == 0))
            {
                if (Sim.LifetimeWish == (uint)LifetimeWant.JackOfAllTrades)
                {
                    allCareers = GetChoices(true);
                }
            }

            if ((allCareers == null) || (allCareers.Count == 0))
            {
                allCareers = GetChoices(false);
            }

            if (allCareers.Count > 0)
            {
                AddStat("Random Choices", allCareers.Count);

                if ((promptForJob) && (AcceptCancelDialog.Show(ManagerSim.GetPersonalInfo(Sim, Common.Localize("ChooseCareer:Prompt", Sim.IsFemale)))))
                {
                    List <JobItem> jobs = new List <JobItem>();

                    foreach (Occupation career in GetChoices(false))
                    {
                        jobs.Add(new JobItem(career, allCareers.Contains(career)));
                    }

                    bool    okayed;
                    JobItem choice = new CommonSelection <JobItem>(Common.Localize("ChooseCareer:Header", Sim.IsFemale), Sim.FullName, jobs, new JobPreferenceColumn()).SelectSingle(out okayed);
                    if (!okayed)
                    {
                        return(false);
                    }

                    if (choice != null)
                    {
                        allCareers.Clear();
                        allCareers.Add(choice.Value);

                        SetValue <ManualCareerOption, bool>(Sim, true);
                    }
                }

                while (allCareers.Count > 0)
                {
                    Occupation choice = RandomUtil.GetRandomObjectFromList(allCareers);
                    allCareers.Remove(choice);

                    if (choice != null)
                    {
                        if (AskForJob(Sim, choice))
                        {
                            return(true);
                        }
                    }
                }

                IncStat("Ask Failure");
                return(false);
            }
            else
            {
                if (promptForJob)
                {
                    Common.Notify(Common.Localize("ChooseCareer:PromptFailure", Sim.IsFemale, new object[] { Sim }));
                }

                IncStat("No Applicable");
                return(false);
            }
        }
Example #6
0
        protected override bool Run(SimDescription me, bool singleSelection)
        {
            AcademicDegreeManager manager = me.CareerManager.DegreeManager;

            if (!ApplyAll)
            {
                List <Item> choices = new List <Item>();

                foreach (AcademicDegreeStaticData data in AcademicDegreeManager.sDictionary.Values)
                {
                    int value = 0;
                    if (manager != null)
                    {
                        AcademicDegree degree = manager.GetElement(data.AcademicDegreeName);
                        if (degree != null)
                        {
                            value = degree.NumberOfCreditsTowardDegree;
                        }
                    }

                    choices.Add(new Item(data, value));
                }

                CommonSelection <Item> .Results results = new CommonSelection <Item>(Name, choices).SelectMultiple();
                if ((results == null) || (results.Count == 0))
                {
                    return(false);
                }

                foreach (Item item in results)
                {
                    string text = StringInputDialog.Show(Name, Common.Localize(GetTitlePrefix() + ":Prompt", me.IsFemale, new object[] { me.FullName, item.Value.DegreeName, item.Value.RequiredNumberOfCredit }), item.Count.ToString());
                    if (string.IsNullOrEmpty(text))
                    {
                        continue;
                    }

                    int count;
                    if (!int.TryParse(text, out count))
                    {
                        Common.Notify(Common.Localize("Numeric:Error"));
                        continue;
                    }

                    mDegrees[item.Value.AcademicDegreeName] = count;
                }
            }

            foreach (KeyValuePair <AcademicDegreeNames, int> pair in mDegrees)
            {
                AcademicDegree degree = manager.GetElement(pair.Key);
                if (degree == null)
                {
                    if (pair.Value <= 0)
                    {
                        continue;
                    }

                    manager.AddNewDegree(pair.Key, pair.Value);
                }
                else
                {
                    if (pair.Value > 0)
                    {
                        degree.mEarnedNumberOfCreditsTowardDegree = pair.Value;
                    }
                    else
                    {
                        manager.RemoveElement((ulong)pair.Key);
                    }
                }
            }

            return(true);
        }
Example #7
0
        public static void CleanupAcademics(Logger log)
        {
            Dictionary <ulong, SimDescription> sims = SimListing.GetResidents(false);

            foreach (SimDescription sim in sims.Values)
            {
                if (sim.CareerManager == null)
                {
                    continue;
                }

                AcademicCareer career = sim.OccupationAsAcademicCareer;
                if (career != null)
                {
                    if ((career.mDegree == null) || (AcademicDegreeManager.GetStaticElement(career.mDegree.AcademicDegreeName) == null))
                    {
                        career.LeaveJobNow(Career.LeaveJobReason.kJobBecameInvalid);
                    }
                }

                AcademicDegreeManager manager = sim.CareerManager.DegreeManager;
                if (manager == null)
                {
                    continue;
                }

                List <AcademicDegreeNames> remove = new List <AcademicDegreeNames>();

                foreach (AcademicDegree degree in manager.List)
                {
                    if (AcademicDegreeManager.GetStaticElement(degree.AcademicDegreeName) == null)
                    {
                        remove.Add(degree.AcademicDegreeName);
                    }
                }

                foreach (AcademicDegreeNames degree in remove)
                {
                    manager.RemoveElement((ulong)degree);

                    if (log != null)
                    {
                        log("Remove Corrupt Degree: " + sim.FullName);
                    }
                }
            }

            if (AcademicCareer.sAcademicSims != null)
            {
                for (int i = AcademicCareer.sAcademicSims.Count - 1; i >= 0; i--)
                {
                    bool remove = false;

                    SimDescription sim;
                    if (!sims.TryGetValue(AcademicCareer.sAcademicSims[i], out sim))
                    {
                        remove = true;
                    }
                    else
                    {
                        AcademicCareer career = sim.OccupationAsAcademicCareer;
                        if (career == null)
                        {
                            remove = true;
                        }
                        else if (career.mDegree == null)
                        {
                            remove = true;
                        }
                        else if (career.Coworkers == null)
                        {
                            remove = true;
                        }
                    }

                    if (remove)
                    {
                        if (log != null)
                        {
                            if (sim != null)
                            {
                                log(" Removed: " + sim.FullName);
                            }
                            else
                            {
                                log(" Removed: " + AcademicCareer.sAcademicSims[i]);
                            }
                        }

                        AcademicCareer.sAcademicSims.RemoveAt(i);
                    }
                }
            }
        }