Пример #1
0
        public void TestAlarmManagerAddDuplicateAlarm()
        {
            // Get alarm manager, and ensure initial state.
            IAlarmManager alarmMan = new AlarmManager(GetConfigurationManager());

            Assert.AreEqual(0, alarmMan.GetScheduledAlarms().Count);

            // Get fake time to wake up.
            DateTime desiredTime = DateTime.Now.AddMinutes(5);

            // Set a fake alarm to check.
            alarmMan.AddAlarm("Test Alarm", new SamiDateTime(desiredTime, DateTimeRange.SpecificTime));

            // Set a duplicate alarm to check.
            alarmMan.AddAlarm("Test Alarm", new SamiDateTime(desiredTime, DateTimeRange.SpecificTime));
            List <ScheduledAlarm> alarms = alarmMan.GetScheduledAlarms();

            // Run checks
            Assert.AreEqual(2, alarms.Count);
            Assert.AreEqual("Test Alarm", alarms.First().Message);
            Assert.AreEqual(desiredTime, alarms.First().AlarmTime);
            Assert.IsFalse(alarms.First().IsDurationAlarm);

            // Cleanup
            alarmMan.DeleteAllAlarms();
        }
Пример #2
0
        public void TestAlarmManagerRemoveAllAlarms()
        {
            // Get alarm manager, and ensure initial state.
            IAlarmManager alarmMan = new AlarmManager(GetConfigurationManager());

            Assert.AreEqual(0, alarmMan.GetScheduledAlarms().Count);

            // Get fake time to wake up.
            DateTime desiredTime = DateTime.Now.AddMinutes(5);

            // Set a fake alarm to check.
            alarmMan.AddAlarm("Test Alarm", new SamiDateTime(desiredTime, DateTimeRange.SpecificTime));

            // Set a second alarm to check.
            alarmMan.AddAlarm("Test Alarm 2", new SamiDateTime(desiredTime, DateTimeRange.SpecificTime));

            // Ensure all alarms were added.
            Assert.AreEqual(2, alarmMan.GetScheduledAlarms().Count);

            // Dleete all of the alarms.
            alarmMan.DeleteAllAlarms();

            // Make sure the alarms were removed properly.
            Assert.AreEqual(0, alarmMan.GetScheduledAlarms().Count);

            // Cleanup
            alarmMan.DeleteAllAlarms();
        }
Пример #3
0
            public override void Init(HousePartySituation parent)
            {
                if (parent.Host.IsSelectable)
                {
                    string titleText = Common.LocalizeEAString(parent.Host.SimDescription.IsFemale, "Gameplay/Situations/HouseParty:GoPrepare", new object[] { parent.Host.SimDescription });
                    if (parent.Lot != parent.Host.LotHome)
                    {
                        titleText = titleText + Common.NewLine + Common.NewLine + Common.LocalizeEAString(false, "Gameplay/Situations/HouseParty:Venue", new object[] { parent.Lot.Name });
                    }
                    StyledNotification.Show(new StyledNotification.Format(titleText, ObjectGuid.InvalidObjectGuid, parent.Host.ObjectId, StyledNotification.NotificationStyle.kGameMessagePositive), "w_party");
                }
                if (!parent.Host.IsSelectable && (parent.Host.LotCurrent != parent.Lot))
                {
                    ForceSituationSpecificInteraction(parent.Lot, parent.Host, GoToLot.Singleton, null, null, null);
                }
                parent.Host.Motives.CreateMotive(parent.PreparationMotive());
                parent.OnPreparation();
                float time = SimClock.ElapsedTime(TimeUnit.Hours, SimClock.CurrentTime(), Parent.StartTime);
                float num2 = time - parent.GetParams().HoursBeforePartyToInvite;

                if (num2 <= 0f)
                {
                    TimeToInviteGuests();
                }
                else
                {
                    mAlarmGuestInvite = AlarmManager.AddAlarm(num2, TimeUnit.Hours, TimeToInviteGuests, "Invite Guests To Party", AlarmType.AlwaysPersisted, Parent.Host);
                }
                mAlarmHandle = AlarmManager.AddAlarm(time, TimeUnit.Hours, TimeToStart, "Waiting for Party to start", AlarmType.AlwaysPersisted, Parent.Host);
            }
Пример #4
0
            public override void Init(HousePartySituation parent)
            {
                float howLongUntilPreparations = SimClock.ElapsedTime(TimeUnit.Hours, SimClock.CurrentTime(), Parent.StartTime) - parent.GetParams().PreparationTime;
                float time = HowLongUntilDeliveringInvitations(howLongUntilPreparations);

                mAlarmHandle = AlarmManager.AddAlarm(time, TimeUnit.Hours, TimeToDeliverInvitations, "Deliver Invitations", AlarmType.AlwaysPersisted, Parent.Host);
            }
Пример #5
0
        public void TestAlarmManagerStopAlarm()
        {
            // Get alarm manager, and ensure initial state.
            IAlarmManager alarmMan = new AlarmManager(GetConfigurationManager());

            // Setup listener.
            DateTime  startTime = DateTime.Now;
            Semaphore sem       = new Semaphore(0, 1);

            alarmMan.AlarmTriggered += (sender, e) =>
            {
                sem.Release();
            };

            // Set a fake alarm to check.
            DateTime desiredTime = DateTime.Now.AddSeconds(1);

            alarmMan.AddAlarm("Test Alarm", new SamiDateTime(desiredTime, DateTimeRange.SpecificTime));

            // Wait for alarm triggered call back.
            alarmMan.GetScheduledAlarms().First().Stop();
            sem.WaitOne(new TimeSpan(0, 0, 5));
            Assert.IsTrue(DateTime.Now.Subtract(startTime).TotalSeconds >= 5);

            // Cleanup
            alarmMan.DeleteAllAlarms();
        }
Пример #6
0
            public override void Init(ForeignVisitorsSituation parent)
            {
                try
                {
                    if (parent.Host.IsSelectable)
                    {
                        StyledNotification.Show(new StyledNotification.Format(Localization.LocalizeString("Gameplay/Situations/InviteForeignVisitors:GoPrepare", new object[] { parent.Host }), StyledNotification.NotificationStyle.kGameMessagePositive));
                    }

                    parent.Host.Motives.CreateMotive(parent.PreparationMotive());
                    parent.OnPreparation();

                    float time = SimClock.ElapsedTime(TimeUnit.Hours, SimClock.CurrentTime(), Parent.StartTime) - parent.GetParams().HoursBeforePartyToInvite;
                    if (time <= 0f)
                    {
                        Parent.SetState(new TryInviteEx(Parent));
                    }
                    else
                    {
                        mAlarmGuestInvite = AlarmManager.AddAlarm(time, TimeUnit.Hours, TimeToInviteGuestsEx, "Invite Guests To Foreign Visitors Situation", AlarmType.AlwaysPersisted, Parent.Host);
                        AlarmManager.AlarmWillYield(mAlarmGuestInvite);
                    }
                }
                catch (Exception e)
                {
                    Common.Exception("PrepareEx:Init", e);
                }
            }
Пример #7
0
            private void InviteGuestsIfHostAtHomeEx()
            {
                try
                {
                    bool failure = false;

                    if ((!Common.kDebugging) && (!IsAnyHostAtHome()))
                    {
                        failure = true;
                    }
                    else if (!InviteGuestsEx())
                    {
                        failure = true;
                    }

                    if ((failure) && (SimClock.HoursPassedOfDay < 23f))
                    {
                        mAlarmRetryInviteGuests = AlarmManager.AddAlarm(ForeignVisitorsSituation.kRetryInviteGuestsNoHostsHomeFrequency, TimeUnit.Minutes, InviteGuestsIfHostAtHomeEx, "Retry invite foreign visitors", AlarmType.AlwaysPersisted, Parent.Host);
                        AlarmManager.AlarmWillYield(mAlarmRetryInviteGuests);
                    }
                    else
                    {
                        Parent.SetState(new FailedToStart(Parent));
                    }
                }
                catch (Exception e)
                {
                    Common.Exception("InviteGuestsIfHostAtHomeEx", e);
                }
            }
Пример #8
0
            public override void Init(GoToLotSituation parent)
            {
                AlarmManager.RemoveAlarm(mAlarmHandle);
                mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForHangingOutToWaitBeforeExiting, TimeUnit.Hours, TimeOut, "Waiting for Sims to hang out before leaving", AlarmType.NeverPersisted, Parent.mSimA);

                parent.mSimA.SocialComponent.AddShortTermDesireToSocializeWith(parent.mSimB, Sims3.Gameplay.Situations.InviteToLotSituation.kDesireToSocialize);
                parent.mSimB.SocialComponent.AddShortTermDesireToSocializeWith(parent.mSimA, Sims3.Gameplay.Situations.InviteToLotSituation.kDesireToSocialize);
            }
Пример #9
0
            public override void Init(GoToLotSituation parent)
            {
                AlarmManager.RemoveAlarm(mAlarmHandle);
                mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForBothGoToLotToWaitBeforeGivingUp, TimeUnit.Hours, TimeOut, "Waiting for Sims to get to lot", AlarmType.NeverPersisted, Parent.mSimA);

                ForceSituationSpecificInteraction(parent.Lot, parent.mSimA, ManagerSituation.GetVisitInteraction(parent.mSimA, parent.Lot), null, OnRouteToLotSucceeded, OnRouteToLotFailed, InteractionPriorityLevel.UserDirected);
                ForceSituationSpecificInteraction(parent.Lot, parent.mSimB, ManagerSituation.GetVisitInteraction(parent.mSimB, parent.Lot), null, OnRouteToLotSucceeded, OnRouteToLotFailed, InteractionPriorityLevel.UserDirected);
            }
Пример #10
0
            public override void Init(GoToLotSituation parent)
            {
                parent.mHaveBothSimsArrivedAtTheLot = true;

                if (parent.mFirstAction != null)
                {
                    if (!parent.mFirstAction(parent, this))
                    {
                        Exit();
                    }
                }

                AlarmManager.RemoveAlarm(mAlarmHandle);
                mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForMeetUpToWaitBeforeGivingUp, TimeUnit.Hours, TimeOut, "Waiting for Sims to get to lot", AlarmType.NeverPersisted, Parent.mSimA);
            }
Пример #11
0
        public void TestAlarmManagerAddDurationAlarm()
        {
            // Get alarm manager, and ensure initial state.
            IAlarmManager alarmMan = new AlarmManager(GetConfigurationManager());

            Assert.AreEqual(0, alarmMan.GetScheduledAlarms().Count);

            // Set a fake alarm to check.
            alarmMan.AddAlarm("Test Alarm", new TimeSpan(0, 5, 0));
            List <ScheduledAlarm> alarms = alarmMan.GetScheduledAlarms();

            // Run checks
            Assert.AreEqual(1, alarms.Count);
            Assert.AreEqual("Test Alarm", alarms.First().Message);
            Assert.AreEqual(new TimeSpan(0, 5, 0), alarms.First().TotalDuration);
            Assert.IsTrue(alarms.First().IsDurationAlarm);

            // Cleanup
            alarmMan.DeleteAllAlarms();
        }
Пример #12
0
 private void OnLeaving(Sim actor, float x)
 {
     if (Simulator.CheckYieldingContext(false))
     {
         Firefighter.FirefighterInformation information = null;
         if ((Parent.Worker != null) && Firefighter.sFirefighterDictionary.TryGetValue(Parent.Lot.LotId, out information))
         {
             if (!information.KnownUnreachableFiresLeftOnLot && Sims3.Gameplay.Services.FirefighterSituation.DoesFireExistOnLot(Parent.Lot))
             {
                 Parent.SetStateExtinguishSim(null);
                 information.ValidFirefighterRequest = true;
             }
             else
             {
                 information.SimThatRequestedService        = null;
                 information.KnownUnreachableFiresLeftOnLot = false;
                 mAlarmHandle = AlarmManager.AddAlarm(Firefighter.DelayBeforeLeaving, TimeUnit.Hours, TimeToGo, "Firefighter waiting to leave", AlarmType.DeleteOnReset, Parent.Worker);
                 Parent.Worker.SimDescription.ShowSocialsOnSim = true;
             }
         }
     }
 }
Пример #13
0
            public override void Init(ForeignVisitorsSituation parent)
            {
                try
                {
                    base.Init(parent);

                    AlarmManager.RemoveAlarm(mAlarmHandle);

                    float time = SimClock.ElapsedTime(TimeUnit.Hours, SimClock.CurrentTime(), Parent.StartTime) - parent.GetParams().PreparationTime;
                    if (time <= 0)
                    {
                        Parent.SetState(new PrepareEx(Parent));
                    }
                    else
                    {
                        mAlarmHandle = AlarmManager.AddAlarm(time, TimeUnit.Hours, TimeToPrepareEx, "Prepare Foreign Visit", AlarmType.AlwaysPersisted, Parent.Host);
                    }
                }
                catch (Exception e)
                {
                    Common.Exception("WaitForPreparationsEx:Init", e);
                }
            }
Пример #14
0
        public void TestAlarmManagerNotifyDurationAlarmUp()
        {
            // Get alarm manager, and ensure initial state.
            IAlarmManager alarmMan = new AlarmManager(GetConfigurationManager());

            // Setup listener.
            DateTime  startTime = DateTime.Now;
            Semaphore sem       = new Semaphore(0, 1);

            alarmMan.AlarmTriggered += (sender, e) =>
            {
                sem.Release();
            };

            // Set a fake alarm to check.
            alarmMan.AddAlarm("Test Alarm", new TimeSpan(0, 0, 1));

            // Wait for alarm triggered call back.
            sem.WaitOne(new TimeSpan(0, 1, 0));
            Assert.IsTrue(DateTime.Now.Subtract(startTime).TotalSeconds >= 1);

            // Cleanup
            alarmMan.DeleteAllAlarms();
        }
Пример #15
0
 protected HangingOut()
 {
     mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForHangingOutToWaitBeforeExiting, TimeUnit.Hours, TimeOut, "Waiting for Sims to hang out before leaving", AlarmType.NeverPersisted, Parent.mSimA);
 }
Пример #16
0
            public override void Init(HousePartySituation parent)
            {
                float time = SimClock.ElapsedTime(TimeUnit.Hours, SimClock.CurrentTime(), Parent.StartTime) - parent.GetParams().PreparationTime;

                mAlarmHandle = AlarmManager.AddAlarm(time, TimeUnit.Hours, TimeToPrepare, "Prepare Party", AlarmType.AlwaysPersisted, Parent.Host);
            }
Пример #17
0
 public override void Init(ForeignVisitorsSituation parent)
 {
     mAlarmRetryInviteGuests = AlarmManager.AddAlarm(0f, TimeUnit.Seconds, InviteGuestsIfHostAtHomeEx, "Invite foreign visitors", AlarmType.AlwaysPersisted, Parent.Host);
     AlarmManager.AlarmWillYield(mAlarmRetryInviteGuests);
 }
Пример #18
0
 public void OnSocialFailed(Sim actor, float x)
 {
     mWait = AlarmManager.AddAlarm(15, TimeUnit.Minutes, OnRetry, "Waiting for sims to get act together", AlarmType.NeverPersisted, Parent.mSimA);
 }
Пример #19
0
 protected MeetUp()
 {
     mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForMeetUpToWaitBeforeGivingUp, TimeUnit.Hours, TimeOut, "Waiting for Sims to get to lot", AlarmType.NeverPersisted, Parent.mSimA);
 }