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(); }
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(); }
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); }
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); }
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(); }
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); } }
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); } }
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); }
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); }
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); }
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(); }
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; } } } }
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); } }
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(); }
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); }
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); }
public override void Init(ForeignVisitorsSituation parent) { mAlarmRetryInviteGuests = AlarmManager.AddAlarm(0f, TimeUnit.Seconds, InviteGuestsIfHostAtHomeEx, "Invite foreign visitors", AlarmType.AlwaysPersisted, Parent.Host); AlarmManager.AlarmWillYield(mAlarmRetryInviteGuests); }
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); }
protected MeetUp() { mAlarmHandle = AlarmManager.AddAlarm(Sims3.Gameplay.Situations.InviteToLotSituation.kNumHoursForMeetUpToWaitBeforeGivingUp, TimeUnit.Hours, TimeOut, "Waiting for Sims to get to lot", AlarmType.NeverPersisted, Parent.mSimA); }