コード例 #1
0
 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()
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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()
コード例 #5
0
 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)
コード例 #6
0
 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)
コード例 #7
0
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