def buildbuy_session_end(zone_id): services.object_manager( zone_id).rebuild_objects_to_ignore_portal_validation_cache() for obj in services.object_manager(zone_id).get_all(): obj.on_buildbuy_exit() posture_graph_service = services.current_zone().posture_graph_service posture_graph_service.on_exit_buildbuy() _build_buy_exit_callbacks() pythonutils.try_highwater_gc() services.get_zone_modifier_service( ).check_for_and_apply_new_zone_modifiers(zone_id) if _sync_venue_service_to_zone_venue_type(zone_id): zone_director = services.venue_service().get_zone_director() if zone_director is not None: zone_director.on_exit_buildbuy() object_preference_tracker = services.object_preference_tracker() if object_preference_tracker is not None: object_preference_tracker.validate_objects(zone_id) services.business_service().on_build_buy_exit() services.current_zone().on_build_buy_exit() services.utilities_manager().on_build_buy_exit() services.get_reset_and_delete_service().on_build_buy_exit() street_service = services.street_service() if street_service is not None: street = services.current_street() if street is not None: provider = street_service.get_provider(street) if provider is not None: provider.on_build_buy_exit() services.object_manager().clear_objects_to_ignore_portal_validation_cache()
def _on_zone_shutdown(self): street_provider = self.get_provider(services.current_street()) if street_provider is not None: street_provider.on_zone_shutdown() current_zone = services.current_zone() current_zone.unregister_callback(zone_types.ZoneState.SHUTDOWN_STARTED, self._on_zone_shutdown) services.get_event_manager().unregister_single_event( self, TestEvent.SimHomeZoneChanged)
def _save_street_eco_footprint_data(self, eco_footprint_data): eco_footprint_data.current_eco_footprint_state = self._curr_state_type eco_footprint_data.effects_are_simulated = self._simulating_eco_footprint_on_street street = services.street_service().get_street(self) if street is services.current_street( ) and not self._street_convergence_fully_computed: self._fully_compute_street_convergence() eco_footprint_data.convergence = self.get_street_footprint_convergence_value( )
def finalize_startup(self, policy): super().finalize_startup(policy) if self._street is None: return if self.policy.enacted and self._street is services.current_street(): for sim in services.sim_info_manager().instanced_sims_gen(): self._enact_for_sim_info(sim.sim_info) self._register_callbacks() if self.policy.enacted: self._start_schedule()
def set_eco_footprint_state(state: EcoFootprintStateType, update_lot_footprint_values: bool = True, _connection=None): street_service = services.street_service() if street_service is None: sims4.commands.automation_output('Pack not loaded', _connection) sims4.commands.cheat_output('Pack not loaded', _connection) return street_provider = street_service.get_provider(services.current_street()) street_provider.force_set_eco_footprint_state(state, update_lot_footprint_values)
def _setup_open_street_director(self): street = services.current_street() if street is not None and street.open_street_director is not None: self._open_street_director_requests.append( OpenStreetDirectorRequestFactory( street.open_street_director, priority=street.open_street_director.priority)) self._zone_director.setup_open_street_director_manager( self._open_street_director_requests, self._prior_open_street_director_proto) self._open_street_director_requests = None self._prior_open_street_director_proto = None
def finalize_startup(self): street_service = services.street_service() street = street_service.get_street(self) for (state_type, state) in self._eco_footprint_states.items(): is_active = state_type == self._curr_state_type state.finalize_startup(is_active) if not self._is_eco_footprint_compatible: return if street is services.current_street(): self._fully_compute_street_convergence() self.update_simulation_if_stale( street_service.enable_eco_footprint) elif self._simulating_eco_footprint_on_street: if self._persisted_convergence is not None: footprint_stat = self.get_street_footprint() footprint_stat.convergence_value = self._persisted_convergence
def enable_eco_footprint(self, value): if self._enable_eco_footprint is not value: self._enable_eco_footprint = value street = services.current_street() provider = self.get_provider(street) provider.update_simulation_if_stale(self._enable_eco_footprint)
def on_sim_removed(self, sim_info): street = services.current_street() if street in self._street_sim_removed_callbacks: self._street_sim_removed_callbacks[street](sim_info)
def set_footprint_commodity_value(value): street_service = services.street_service() policy_provider = street_service.get_provider(services.current_street()) policy_provider.commodity_tracker.set_value(eco_footprint_tuning.EcoFootprintTunables.STREET_FOOTPRINT, value) policy_provider.distribute_neighborhood_update()
def get_footprint_commodity_value(): street_service = services.street_service() policy_provider = street_service.get_provider(services.current_street()) return policy_provider.commodity_tracker.get_value(eco_footprint_tuning.EcoFootprintTunables.STREET_FOOTPRINT, add=True)
def get_lot_to_travel_to(cls): if cls is services.current_street(): return import world.lot return world.lot.get_lot_id_from_instance_id(cls.travel_lot)
def _try_and_start_festival(self): street = services.current_street() if street is not self.street: self._setup_end_alarm() return self._create_open_street_director_request()
def get_travel_lot_id(cls, reject_same_street=False): if reject_same_street and cls.street is services.current_street(): return if cls.travel_lot_override is not None: return get_lot_id_from_instance_id(cls.travel_lot_override) return get_lot_id_from_instance_id(cls.street.travel_lot)
def is_on_festival_street(self): street = services.current_street() return street is self.street
def finalize_startup(self, policy): super().finalize_startup(policy) if self.policy.enacted and self._street is services.current_street(): self._send_parameter_update_op(self.enact_data, from_load=True)