def get_group_to_seat(self): zone_director = get_restaurant_zone_director() if zone_director is None: return return zone_director.get_next_group_id_to_seat()
def remove_group_to_seat(self, group_id): zone_director = get_restaurant_zone_director() if zone_director is None: return return zone_director.remove_group_waiting_to_be_seated(group_id)
def __call__(self, target_list=None, subjects=None, interaction_context=None): if target_list is None: return TestResult(False, "Target object doesn't exist.", tooltip=self.tooltip) zone_director = get_restaurant_zone_director() if zone_director is None: return TestResult(False, 'Not currently on a restaurant lot.', tooltip=self.tooltip) for obj in target_list: table = None seats = None if zone_director.is_dining_table(obj): table = obj if zone_director.is_picnic_table(obj): if obj.is_part: seats = (obj, ) elif interaction_context.pick is not None: parts = obj.get_closest_parts_to_position( interaction_context.pick.location) seats = (parts.pop(), ) else: seats = obj.parts else: if obj.parts: if interaction_context.pick is not None: parts = obj.get_closest_parts_to_position( interaction_context.pick.location) seats = (parts.pop(), ) else: seats = obj.parts else: seats = (obj, ) table = zone_director.get_dining_table_by_chair(seats[0]) if table is None: if self.non_spot_seat_always_pass: return TestResult.TRUE return TestResult( False, 'Test target {} is not dining table or dining seat in the restaurant.' .format(obj), tooltip=self.tooltip) if self.test_type == DiningSpotTestType.IS_CLAIMED: return self._test_table_claimed(table, zone_director) for sim_info in subjects: if not sim_info.is_sim: return TestResult(False, '{} is not a sim for subject {}'.format( sim_info, self.subject), tooltip=self.tooltip) sim = sim_info.get_sim_instance() if sim is None: return TestResult( False, '{} is not instantiated'.format(sim_info), tooltip=self.tooltip) if self.test_type == DiningSpotTestType.CLAIMED_BY_GROUP or seats is None: return self._test_table_claimed_by_sim( table, sim, zone_director) if self.test_type == DiningSpotTestType.CLAIMED_BY_SIM: if self.non_spot_seat_always_pass and not zone_director.seat_is_dining_spot( seats[0]): return TestResult.TRUE results = [ self._test_seat_claimed_by_sim(seat, sim, zone_director) for seat in seats ] if any(results): return TestResult.TRUE return results[0] return TestResult(False, 'None of the conditions satisfied', tooltip=self.tooltip)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._chef_feedback = defaultdict(list) self._current_order = None self._zone_director = get_restaurant_zone_director()
def _apply_to_subject_and_target(self, subject, target, resolver): zone_director = get_restaurant_zone_director() if zone_director is None: return zone_director.release_table(sim=resolver.context.sim)
def _apply_to_subject_and_target(self, subject, target, resolver): zone_director = get_restaurant_zone_director() if zone_director is None: return zone_director.claim_table(subject)
def generate_restaurant_order_data(zone_id: int = None): all_orders = [] zone_director = get_restaurant_zone_director() if zone_director is None: return all_orders sim_info_manager = services.sim_info_manager() recipe_manager = services.recipe_manager() for group_order in zone_director._group_orders.values(): sim_order_data = [] for (sim_id, sim_order) in group_order._sim_orders.items(): sim_info = sim_info_manager.get(sim_id) food_recipe_id = sim_order.food_recipe_id drink_recipe_id = sim_order.drink_recipe_id food_str = '' drink_str = '' if food_recipe_id is not None: food_recipe = recipe_manager.get(food_recipe_id, None) if food_recipe is not None: food_str = '{}({})'.format(food_recipe.__name__, food_recipe_id) if drink_recipe_id is not None: drink_recipe = recipe_manager.get(drink_recipe_id, None) if drink_recipe is not None: drink_str = '{}({})'.format(drink_recipe.__name__, drink_recipe_id) sim_order_data.append({ 'sim_name': str(sim_info), 'food_recipe': food_str, 'drink_recipe': drink_str, 'recommendation_state': str(sim_order.recommendation_state) }) assigned_waiter = group_order.assigned_waitstaff assigned_chef = group_order.assigned_chef food_platter = group_order.serving_from_chef all_orders.append({ 'order_id': str(group_order.order_id), 'situation_id': str(group_order._situation_id), 'order_status': str(group_order.order_status), 'current_bucket': str(group_order.current_bucket), 'table_ids': ','.join([str(table_id) for table_id in group_order._table_ids]), 'sim_order_count': str(group_order.sim_order_count), 'assigned_waiter': str(assigned_waiter), 'assigned_chef': str(assigned_chef), 'food_platter': str(food_platter), 'complimentary': str(group_order.is_complimentary), 'SimOrders': sim_order_data }) return all_orders