protected override OptionResult RunAll(List <IMiniSimDescription> sims) { List <SimDescription> trueSims = new List <SimDescription>(); foreach (IMiniSimDescription miniSim in sims) { SimDescription trueSim = miniSim as SimDescription; if (trueSim == null) { continue; } trueSims.Add(trueSim); } int termLen = 0; int totalCost = 0; List <IEnrollmentData> list = EnrollmentDialogEx.Show(trueSims[0], trueSims, true, out termLen, out totalCost); if ((list != null) && (list.Count > 0)) { AcademicCareer.GlobalTermLength = (AcademicCareer.TermLength)termLen; foreach (IEnrollmentData data in list) { SimDescription enrollingSimDesc = data.EnrollingSimDesc as SimDescription; if ((enrollingSimDesc != null) && (enrollingSimDesc.CareerManager != null) && (enrollingSimDesc.CareerManager.DegreeManager != null)) { enrollingSimDesc.CareerManager.DegreeManager.SetEnrollmentData(data); if (enrollingSimDesc.CreatedSim != null) { EventTracker.SendEvent(new AcademicEvent(EventTypeId.kEnrolledInUniversity, enrollingSimDesc.CreatedSim, (AcademicDegreeNames)data.AcademicDegreeName)); } AcademicCareer.EnrollSimInAcademicCareer(enrollingSimDesc, (AcademicDegreeNames)data.AcademicDegreeName, data.CourseLoad); CustomAcademicDegrees.AdjustCustomAcademics(enrollingSimDesc); } } } return(OptionResult.SuccessRetain); }
public static bool EnrollInAcademicCareer(Sim actor, IEnumerable <SimDescription> choices, out List <SimDescription> others, out int tuitionCost) { others = null; tuitionCost = 0; if (!IntroTutorial.IsRunning || IntroTutorial.AreYouExitingTutorial()) { if ((actor.DegreeManager != null) && actor.DegreeManager.ShouldDisplaySUATMessage(actor.SimDescription)) { SimpleMessageDialog.Show(Localization.LocalizeString("Gameplay/Objects/Electronics/Phone:HaveYouTakenSUAT", new object[0]), Localization.LocalizeString("Gameplay/Objects/Electronics/Phone:SUATBenefits", new object[0]), ModalDialog.PauseMode.PauseSimulator); } if (!UIUtils.IsOkayToStartModalDialog()) { return(false); } int termLen = 0; int totalCost = 0; List <IEnrollmentData> list = EnrollmentDialogEx.Show(actor.SimDescription, choices, false, out termLen, out totalCost); if ((list != null) && (list.Count > 0)) { TravelUtil.PlayerMadeTravelRequest = true; foreach (IEnrollmentData data in list) { SimDescription enrollingSimDesc = data.EnrollingSimDesc as SimDescription; if (((enrollingSimDesc != null) && (enrollingSimDesc.CareerManager != null)) && (enrollingSimDesc.CareerManager.DegreeManager != null)) { if (others == null) { others = new List <SimDescription>(); } others.Add(enrollingSimDesc); enrollingSimDesc.CareerManager.DegreeManager.SetEnrollmentData(data); EventTracker.SendEvent(new AcademicEvent(EventTypeId.kEnrolledInUniversity, enrollingSimDesc.CreatedSim, (AcademicDegreeNames)data.AcademicDegreeName)); } } tuitionCost = -totalCost; AcademicCareer.GlobalTermLength = (AcademicCareer.TermLength)termLen; return(true); } } return(false); }