예제 #1
0
            public bool IncrementOneDay(SimDescription sim, ref Household.ReportCardHelper reportCardHelper)
            {
                try
                {
                    mCurrentDay++;

                    // Set for possible use in sub-routines
                    AcademicCareer.GlobalTermLength = mLength;

                    int length = (int)mLength * NRaas.Careers.Settings.mHomeworldUniversityTermLength;

                    Common.DebugNotify("Increment One Day\n" + mCurrentDay + "\n" + length, sim);

                    AcademicCareer academicCareer = sim.OccupationAsAcademicCareer;
                    if (academicCareer == null)
                    {
                        return(false);
                    }

                    if (mCurrentDay >= length)
                    {
                        if (SimTypes.IsSelectable(sim))
                        {
                            if (reportCardHelper == null)
                            {
                                reportCardHelper = new Household.ReportCardHelper();
                            }

                            reportCardHelper.AddGPA(sim.SimDescriptionId, academicCareer.GetGradeAsLetter());
                        }

                        AcademicCareerEx.OnTermCompleted(academicCareer);
                        return(false);
                    }
                    else if (mCurrentDay == (length - 0x1))
                    {
                        if (SimTypes.IsSelectable(sim))
                        {
                            float num2 = SimClock.HoursUntil(Household.kWhenOneDayLeftTNSAppears);

                            AlarmManager.Global.RemoveAlarm(sim.Household.mLastDayAlarm);
                            sim.Household.mLastDayAlarm = AlarmManager.Global.AddAlarm(num2, TimeUnit.Hours, sim.Household.OneDayLeft, "One Day left TNS", AlarmType.AlwaysPersisted, sim);
                        }
                    }
                }
                catch (ResetException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    Common.Exception(sim, e);
                }

                return(true);
            }
예제 #2
0
            protected override void OnPerform()
            {
                if (GameUtils.IsUniversityWorld())
                {
                    return;
                }

                Corrections.CleanupAcademics(null);

                Dictionary <ulong, SimDescription> sims = SimListing.GetResidents(false);

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

                Household.ReportCardHelper reportCardHelper = null;

                foreach (KeyValuePair <ulong, AcademicController> controller in sControllers)
                {
                    bool success = false;

                    SimDescription sim;
                    if (sims.TryGetValue(controller.Key, out sim))
                    {
                        if (controller.Value.IncrementOneDay(sim, ref reportCardHelper))
                        {
                            success = true;
                        }
                    }

                    if (!success)
                    {
                        remove.Add(controller.Key);
                    }
                }

                if (reportCardHelper != null)
                {
                    float time = SimClock.HoursUntil(Household.kWhenReportCardArrives);
                    AlarmManager.Global.AddAlarm(time, TimeUnit.Hours, reportCardHelper.ReportCardArrives, "Report Card Arrives", AlarmType.AlwaysPersisted, Sim.ActiveActor);
                }

                foreach (ulong value in remove)
                {
                    sControllers.Remove(value);
                }
            }
예제 #3
0
            public bool IncrementOneDay(SimDescription sim, ref Household.ReportCardHelper reportCardHelper)
            {
                try
                {
                    mCurrentDay++;

                    // Set for possible use in sub-routines
                    AcademicCareer.GlobalTermLength = mLength;

                    int length = (int)mLength * NRaas.Careers.Settings.mHomeworldUniversityTermLength;

                    Common.DebugNotify("Increment One Day\n" + mCurrentDay + "\n" + length, sim);

                    AcademicCareer academicCareer = sim.OccupationAsAcademicCareer;
                    if (academicCareer == null) return false;

                    if (mCurrentDay >= length)
                    {
                        if (SimTypes.IsSelectable(sim))
                        {
                            if (reportCardHelper == null)
                            {
                                reportCardHelper = new Household.ReportCardHelper();
                            }

                            reportCardHelper.AddGPA(sim.SimDescriptionId, academicCareer.GetGradeAsLetter());
                        }

                        AcademicCareerEx.OnTermCompleted(academicCareer);
                        return false;
                    }
                    else if (mCurrentDay == (length - 0x1))
                    {
                        if (SimTypes.IsSelectable(sim))
                        {
                            float num2 = SimClock.HoursUntil(Household.kWhenOneDayLeftTNSAppears);

                            AlarmManager.Global.RemoveAlarm(sim.Household.mLastDayAlarm);
                            sim.Household.mLastDayAlarm = AlarmManager.Global.AddAlarm(num2, TimeUnit.Hours, sim.Household.OneDayLeft, "One Day left TNS", AlarmType.AlwaysPersisted, sim);
                        }
                    }
                }
                catch (ResetException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    Common.Exception(sim, e);
                }

                return true;
            }
예제 #4
0
        private static void OneDayPassedUniversityUpdates(Household ths)
        {
            try
            {
                if (GameStates.CurrentDayOfTrip == GameStates.TripLength)
                {
                    Household.ReportCardHelper helper = null;
                    foreach (SimDescription description in Households.All(ths))
                    {
                        if (description == null)
                        {
                            continue;
                        }

                        if (description.OccupationAsAcademicCareer == null)
                        {
                            continue;
                        }

                        if (helper == null)
                        {
                            helper = new Household.ReportCardHelper();
                        }

                        helper.AddGPA(description.SimDescriptionId, description.OccupationAsAcademicCareer.GetGradeAsLetter());
                    }

                    if (helper != null)
                    {
                        AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenReportCardArrives), TimeUnit.Hours, helper.ReportCardArrives, "Report Card Arrives", AlarmType.AlwaysPersisted, ths);
                    }

                    // Correction for potential error in OnTermCompleted()
                    Corrections.CleanupAcademics(null);

                    foreach (Household household in Household.sHouseholdList)
                    {
                        if (household == null)
                        {
                            continue;
                        }

                        if (household.IsPreviousTravelerHousehold)
                        {
                            continue;
                        }

                        foreach (SimDescription sim in household.SimDescriptions)
                        {
                            if (sim == null)
                            {
                                continue;
                            }

                            try
                            {
                                AcademicCareer occupationAsAcademicCareer = sim.OccupationAsAcademicCareer;
                                if (occupationAsAcademicCareer != null)
                                {
                                    AcademicCareerEx.OnTermCompleted(occupationAsAcademicCareer);
                                }
                            }
                            catch (Exception e)
                            {
                                Common.Exception(sim, e);
                            }
                        }
                    }

                    AlarmManager.Global.RemoveAlarm(ths.mLastDayAlarm);
                    ths.mLastDayAlarm = AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenOneHourLeftTNSAppears), TimeUnit.Hours, ths.OneHourLeft, "One Hour left TNS", AlarmType.AlwaysPersisted, ths);

                    AlarmManager.Global.RemoveAlarm(ths.mTriggerUniversityReturnFlowAlarm);
                    ths.mTriggerUniversityReturnFlowAlarm = AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenSimsStartLeaving), TimeUnit.Hours, BeginReturnFromUniversityFlow, "Start University Return Home Flow Alarm", AlarmType.AlwaysPersisted, ths);
                }
                else if (GameStates.CurrentDayOfTrip > GameStates.TripLength)
                {
                    bool denyTravel = false;
                    if (!GameStates.IsTravelling)
                    {
                        foreach (Sim sim in ths.AllActors)
                        {
                            if ((sim != null) && sim.IsDying())
                            {
                                denyTravel = true;
                            }
                        }
                    }

                    GameStates.StopSnappingPicturesIfNeccessary();
                    if (Sims3.Gameplay.UI.Responder.Instance.HudModel is HudModel)
                    {
                        Common.FunctionTask.Perform(ths.ShowTripOverDialog);
                    }

                    if (!denyTravel)
                    {
                        Traveler.SaveGame();

                        TravelUtil.PlayerMadeTravelRequest = true;

                        // Custom
                        GameStatesEx.UpdateTelemetryAndTriggerTravelBackToHomeWorld();
                    }
                }
                else if (GameStates.CurrentDayOfTrip <= 0x1)
                {
                    AlarmManager.Global.RemoveAlarm(Household.mAtUnivTutorialAlarm);
                    Household.mAtUnivTutorialAlarm = AlarmHandle.kInvalidHandle;
                    AlarmManager.Global.RemoveAlarm(Household.mDormsTutorialAlarm);
                    Household.mDormsTutorialAlarm  = AlarmHandle.kInvalidHandle;
                    Household.mAtUnivTutorialAlarm = AlarmManager.Global.AddAlarmDay(Household.kTimeAtUnivTutorial, ~DaysOfTheWeek.None, Household.TriggerAtUniversityTutorial, "At University Lesson", AlarmType.AlwaysPersisted, null);
                    Household.mDormsTutorialAlarm  = AlarmManager.Global.AddAlarmDay(Household.kTimeDormsTutorial, ~DaysOfTheWeek.None, Household.TriggerDormsTutorial, "Dorms Lesson", AlarmType.AlwaysPersisted, null);
                }
                else if (GameStates.CurrentDayOfTrip == (GameStates.TripLength - 0x1))
                {
                    float num2 = SimClock.HoursUntil(Household.kWhenOneDayLeftTNSAppears);
                    ths.mLastDayAlarm = AlarmManager.Global.AddAlarm(num2, TimeUnit.Hours, ths.OneDayLeft, "One Day left TNS", AlarmType.AlwaysPersisted, ths);
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(ths, e);
            }
        }
예제 #5
0
        private static void OneDayPassedUniversityUpdates(Household ths)
        {
            try
            {
                if (GameStates.CurrentDayOfTrip == GameStates.TripLength)
                {
                    Household.ReportCardHelper helper = null;
                    foreach (SimDescription description in Households.All(ths))
                    {
                        if (description == null) continue;

                        if (description.OccupationAsAcademicCareer == null) continue;

                        if (helper == null)
                        {
                            helper = new Household.ReportCardHelper();
                        }

                        helper.AddGPA(description.SimDescriptionId, description.OccupationAsAcademicCareer.GetGradeAsLetter());
                    }

                    if (helper != null)
                    {
                        AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenReportCardArrives), TimeUnit.Hours, helper.ReportCardArrives, "Report Card Arrives", AlarmType.AlwaysPersisted, ths);
                    }

                    // Correction for potential error in OnTermCompleted()
                    Corrections.CleanupAcademics(null);

                    foreach (Household household in Household.sHouseholdList)
                    {
                        if (household == null) continue;

                        if (household.IsPreviousTravelerHousehold) continue;

                        foreach (SimDescription sim in household.SimDescriptions)
                        {
                            if (sim == null) continue;

                            try
                            {
                                AcademicCareer occupationAsAcademicCareer = sim.OccupationAsAcademicCareer;
                                if (occupationAsAcademicCareer != null)
                                {
                                    AcademicCareerEx.OnTermCompleted(occupationAsAcademicCareer);
                                }
                            }
                            catch (Exception e)
                            {
                                Common.Exception(sim, e);
                            }
                        }
                    }

                    AlarmManager.Global.RemoveAlarm(ths.mLastDayAlarm);
                    ths.mLastDayAlarm = AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenOneHourLeftTNSAppears), TimeUnit.Hours, ths.OneHourLeft, "One Hour left TNS", AlarmType.AlwaysPersisted, ths);

                    AlarmManager.Global.RemoveAlarm(ths.mTriggerUniversityReturnFlowAlarm);
                    ths.mTriggerUniversityReturnFlowAlarm = AlarmManager.Global.AddAlarm(SimClock.HoursUntil(Household.kWhenSimsStartLeaving), TimeUnit.Hours, BeginReturnFromUniversityFlow, "Start University Return Home Flow Alarm", AlarmType.AlwaysPersisted, ths);
                }
                else if (GameStates.CurrentDayOfTrip > GameStates.TripLength)
                {
                    bool denyTravel = false;
                    if (!GameStates.IsTravelling)
                    {
                        foreach (Sim sim in ths.AllActors)
                        {
                            if ((sim != null) && sim.IsDying())
                            {
                                denyTravel = true;
                            }
                        }
                    }

                    GameStates.StopSnappingPicturesIfNeccessary();
                    if (Sims3.Gameplay.UI.Responder.Instance.HudModel is HudModel)
                    {
                        Common.FunctionTask.Perform(ths.ShowTripOverDialog);
                    }

                    if (!denyTravel)
                    {
                        Traveler.SaveGame();

                        TravelUtil.PlayerMadeTravelRequest = true;

                        // Custom
                        GameStatesEx.UpdateTelemetryAndTriggerTravelBackToHomeWorld();
                    }
                }
                else if (GameStates.CurrentDayOfTrip <= 0x1)
                {
                    AlarmManager.Global.RemoveAlarm(Household.mAtUnivTutorialAlarm);
                    Household.mAtUnivTutorialAlarm = AlarmHandle.kInvalidHandle;
                    AlarmManager.Global.RemoveAlarm(Household.mDormsTutorialAlarm);
                    Household.mDormsTutorialAlarm = AlarmHandle.kInvalidHandle;
                    Household.mAtUnivTutorialAlarm = AlarmManager.Global.AddAlarmDay(Household.kTimeAtUnivTutorial, ~DaysOfTheWeek.None, Household.TriggerAtUniversityTutorial, "At University Lesson", AlarmType.AlwaysPersisted, null);
                    Household.mDormsTutorialAlarm = AlarmManager.Global.AddAlarmDay(Household.kTimeDormsTutorial, ~DaysOfTheWeek.None, Household.TriggerDormsTutorial, "Dorms Lesson", AlarmType.AlwaysPersisted, null);
                }
                else if (GameStates.CurrentDayOfTrip == (GameStates.TripLength - 0x1))
                {
                    float num2 = SimClock.HoursUntil(Household.kWhenOneDayLeftTNSAppears);
                    ths.mLastDayAlarm = AlarmManager.Global.AddAlarm(num2, TimeUnit.Hours, ths.OneDayLeft, "One Day left TNS", AlarmType.AlwaysPersisted, ths);
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(ths, e);
            }
        }