Exemple #1
0
 def _set_next_delinquency_timers(self):
     for utility in self._utility_delinquency:
         if self._utility_delinquency[utility]:
             pass
         warning_notification = self.UTILITY_INFO[utility].warning_notification
         self._warning_handle = alarms.add_alarm(self, clock.interval_in_sim_hours(self.DELINQUENCY_FREQUENCY - self.DELINQUENCY_WARNING_OFFSET_TIME), lambda _: self._send_notification(warning_notification))
         self._shutoff_handle = alarms.add_alarm(self, clock.interval_in_sim_hours(self.DELINQUENCY_FREQUENCY), lambda _: self._shut_off_utility(utility))
         break
Exemple #2
0
 def __init__(self, *args, reader=None, **kwargs):
     super().__init__(reader=reader, *args, **kwargs)
     self._total_time_ran = TimeSpan.ZERO
     self._last_started_time = None
     self._alarm_handle = None
     self._total_duration = interval_in_sim_hours(self._goal_test.duration)
     self._test_events = set()
     self._test_events.add(
         event_testing.test_events.TestEvent.InteractionStart)
     self._test_events.add(
         event_testing.test_events.TestEvent.InteractionComplete)
     services.get_event_manager().register(self, self._test_events)
     if reader is not None:
         duration_run = reader.read_uint64(self.DURATION_RUN, 0)
         self._total_time_ran = TimeSpan(duration_run)
     self._sims_running_interaction = set()
     if self._situation is None and self._sim_info is not None:
         self._sims_running_interaction.add(self._actor_ref().id)
     else:
         for sim in self._situation.all_sims_in_situation_gen():
             while sim.si_state.is_running_affordance(
                     self._goal_test.affordance):
                 self._sims_running_interaction.add(sim.id)
     if self._sims_running_interaction:
         self._start_alarm()
Exemple #3
0
 def setup_rented_zone_alarms(self):
     if self._end_vacation_alarm is not None:
         alarms.cancel_alarm(self._end_vacation_alarm)
     time_now = services.time_service().sim_now
     self._end_vacation_alarm = alarms.add_alarm(
         self,
         self.end_timestamp - time_now,
         self._travel_group_end_callback,
         repeating=False)
     if self._days_left_notification_alarm is not None:
         alarms.cancel_alarm(self._days_left_notification_alarm)
     days_before_vacation_ends = clock.interval_in_sim_days(
         TravelGroupTuning.VACATION_ENDING_DAYS_TNS.
         days_before_vacation_ends)
     days_left_timestamp = self.end_timestamp + -days_before_vacation_ends
     if days_left_timestamp > time_now:
         self._days_left_notification_alarm = alarms.add_alarm(
             self,
             days_left_timestamp - time_now,
             self._days_left_notification_callback,
             repeating=False)
     if self._hours_left_notification_alarm is not None:
         alarms.cancel_alarm(self._hours_left_notification_alarm)
     hours_before_vacation_ends = clock.interval_in_sim_hours(
         TravelGroupTuning.VACATION_ENDING_HOURS_TNS.
         hours_before_vacation_ends)
     hours_left_timestamp = self.end_timestamp + -hours_before_vacation_ends
     if hours_left_timestamp > time_now:
         self._hours_left_notification_alarm = alarms.add_alarm(
             self,
             hours_left_timestamp - time_now,
             self._hours_left_notification_callback,
             repeating=False)
 def _set_next_delinquency_timers(self):
     for utility in self._utility_delinquency:
         if self._utility_delinquency[utility]:
             pass
         warning_notification = self.UTILITY_INFO[
             utility].warning_notification
         self._warning_handle = alarms.add_alarm(
             self,
             clock.interval_in_sim_hours(
                 self.DELINQUENCY_FREQUENCY -
                 self.DELINQUENCY_WARNING_OFFSET_TIME),
             lambda _: self._send_notification(warning_notification))
         self._shutoff_handle = alarms.add_alarm(
             self, clock.interval_in_sim_hours(self.DELINQUENCY_FREQUENCY),
             lambda _: self._shut_off_utility(utility))
         break
 def get_busy_time_periods(self):
     busy_times = []
     busy_times.extend(self._work_scheduler.get_schedule_times())
     for time_period in self.current_level_tuning.additional_unavailable_times:
         start_time = time_period.start_time()
         end_time = start_time + clock.interval_in_sim_hours(time_period.period_duration)
         busy_times.append((start_time.absolute_ticks(), end_time.absolute_ticks()))
     return busy_times
 def _start_alarm(self):
     self._stop_alarm()
     if not self._sims_running_interaction:
         return
     next_hour = interval_in_sim_hours(int(self._total_time_ran.in_hours()) + 1)
     time_till_completion = (next_hour - self._total_time_ran)/len(self._sims_running_interaction)
     self._alarm_handle = alarms.add_alarm(self, time_till_completion, self._on_hour_reached)
     self._last_started_time = services.time_service().sim_now
Exemple #7
0
 def _start_alarm(self):
     self._stop_alarm()
     if not self._sims_running_interaction:
         return
     next_hour = interval_in_sim_hours(
         int(self._total_time_ran.in_hours()) + 1)
     time_till_completion = (next_hour - self._total_time_ran) / len(
         self._sims_running_interaction)
     self._alarm_handle = alarms.add_alarm(self, time_till_completion,
                                           self._on_hour_reached)
     self._last_started_time = services.time_service().sim_now
 def _set_expected_time(self, target_hours, target_minutes, days_ahead):
     clock = services.game_clock_service()
     self._current_date_and_time = clock.now()
     clock_days = int(self._current_date_and_time.absolute_days())
     time_span = self._current_date_and_time - DateAndTime(interval_in_sim_days(clock_days).in_ticks())
     current_date_and_time_minus_days = DateAndTime(time_span.in_ticks())
     clock_hours = int(current_date_and_time_minus_days.absolute_hours())
     time_span = current_date_and_time_minus_days - DateAndTime(interval_in_sim_hours(clock_hours).in_ticks())
     current_date_and_time_minus_hours = DateAndTime(time_span.in_ticks())
     clock_minutes = int(current_date_and_time_minus_hours.absolute_minutes())
     delta_days = days_ahead
     clock_day_minutes = clock_hours*60 + clock_minutes
     target_day_minutes = target_hours*60 + target_minutes
     delta_day_minutes = target_day_minutes - clock_day_minutes
     if delta_day_minutes < 0:
         delta_day_minutes += 1440
     self._expected_data_and_time = self._current_date_and_time + interval_in_sim_days(delta_days) + interval_in_sim_minutes(delta_day_minutes)
Exemple #9
0
 def __init__(self, *args, reader=None, **kwargs):
     super().__init__(*args, reader=reader, **kwargs)
     self._total_time_ran = TimeSpan.ZERO
     self._last_started_time = None
     self._alarm_handle = None
     self._total_duration = interval_in_sim_hours(self._goal_test.duration)
     for custom_key in self._goal_test.custom_keys_gen():
         services.get_event_manager().register_with_custom_key(
             self, event_testing.test_events.TestEvent.InteractionStart,
             custom_key)
         services.get_event_manager().register_with_custom_key(
             self, event_testing.test_events.TestEvent.InteractionComplete,
             custom_key)
     if reader is not None:
         duration_run = reader.read_uint64(self.DURATION_RUN, 0)
         self._total_time_ran = TimeSpan(duration_run)
     self._sims_running_interaction = set()
 def __init__(self, *args, reader=None, **kwargs):
     super().__init__(reader=reader, *args, **kwargs)
     self._total_time_ran = TimeSpan.ZERO
     self._last_started_time = None
     self._alarm_handle = None
     self._total_duration = interval_in_sim_hours(self._goal_test.duration)
     self._test_events = set()
     self._test_events.add(event_testing.test_events.TestEvent.InteractionStart)
     self._test_events.add(event_testing.test_events.TestEvent.InteractionComplete)
     services.get_event_manager().register(self, self._test_events)
     if reader is not None:
         duration_run = reader.read_uint64(self.DURATION_RUN, 0)
         self._total_time_ran = TimeSpan(duration_run)
     self._sims_running_interaction = set()
     if self._situation is None and self._sim_info is not None:
         self._sims_running_interaction.add(self._actor_ref().id)
     else:
         for sim in self._situation.all_sims_in_situation_gen():
             while sim.si_state.is_running_affordance(self._goal_test.affordance):
                 self._sims_running_interaction.add(sim.id)
     if self._sims_running_interaction:
         self._start_alarm()
 def _set_up_temporary_perk_timer(self, perk, remaining_ticks=None):
     if perk.temporary_perk_information is None:
         logger.error(
             'Attempting to setup and alarm for a Perk that is not temporary. {}',
             perk)
         return False
     if perk in self._active_perk_timers[perk.associated_bucks_type]:
         logger.error(
             'Attempting to add a timer for a temporary Perk that arleady has a timer set up. {}',
             perk)
         return False
     if remaining_ticks is None:
         time_until_perk_lock = interval_in_sim_hours(
             perk.temporary_perk_information.duration)
     else:
         time_until_perk_lock = clock.TimeSpan(remaining_ticks)
     perk_timer_handle = alarms.add_alarm(self,
                                          time_until_perk_lock,
                                          lambda _: self.lock_perk(perk),
                                          cross_zone=True)
     self._active_perk_timers[
         perk.associated_bucks_type][perk] = perk_timer_handle
     return True
 def _is_correct_time(cls):
     current_time = services.time_service().sim_now
     start_time = cls.WALKBY_ALLOWED_START_TIME
     end_time = start_time + clock.interval_in_sim_hours(
         cls.WALKBY_ALLOWED_DURATION)
     return current_time.time_between_day_times(start_time, end_time)