From 17034b9f0690e142bd938065c81dee0d830edf12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20Schr=C3=B6der?=
 <fschroeder@techfak.uni-bielefeld.de>
Date: Thu, 18 Jan 2024 14:34:07 +0100
Subject: [PATCH] fix bug

---
 overcooked_simulator/order.py | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/overcooked_simulator/order.py b/overcooked_simulator/order.py
index 3d18af97..a5c55b3e 100644
--- a/overcooked_simulator/order.py
+++ b/overcooked_simulator/order.py
@@ -53,7 +53,11 @@ class OrderGeneration:
 
     @abstractmethod
     def get_orders(
-        self, passed_time: timedelta, now: datetime, new_finished_orders: list[Order]
+        self,
+        passed_time: timedelta,
+        now: datetime,
+        new_finished_orders: list[Order],
+        expired_orders: list[Order],
     ) -> list[Order]:
         ...
 
@@ -92,9 +96,14 @@ class RandomOrderGeneration(OrderGeneration):
         )
 
     def get_orders(
-        self, passed_time: timedelta, now: datetime, new_finished_orders: list[Order]
+        self,
+        passed_time: timedelta,
+        now: datetime,
+        new_finished_orders: list[Order],
+        expired_orders: list[Order],
     ) -> list[Order]:
         self.number_cur_orders -= len(new_finished_orders)
+        self.number_cur_orders -= len(expired_orders)
         if self.kwargs.sample_on_serving:
             if new_finished_orders:
                 self.create_random_next_time_delta(now)
@@ -196,6 +205,7 @@ class OrderAndScoreManager:
         self.served_meals: list[Tuple[Item, datetime]] = []
         self.last_finished = []
         self.next_relevant_time = datetime.max
+        self.last_expired = []
 
     def update_next_relevant_time(self):
         next_relevant_time = datetime.max
@@ -255,10 +265,14 @@ class OrderAndScoreManager:
 
     def progress(self, passed_time: timedelta, now: datetime):
         new_orders = self.order_gen.get_orders(
-            passed_time=passed_time, now=now, new_finished_orders=self.last_finished
+            passed_time=passed_time,
+            now=now,
+            new_finished_orders=self.last_finished,
+            expired_orders=self.last_expired,
         )
         self.open_orders.extend(new_orders)
         self.last_finished = []
+        self.last_expired = []
         if new_orders or self.next_relevant_time <= now:
             remove_orders = []
             for index, order in enumerate(self.open_orders):
@@ -273,9 +287,11 @@ class OrderAndScoreManager:
                 for i in reversed(remove_penalties):
                     # or del order.timed_penalties[index]
                     order.timed_penalties.pop(i)
-
+            expired_orders = []
             for remove_order in reversed(remove_orders):
+                expired_orders.append(self.open_orders[remove_order])
                 del self.open_orders[remove_order]
+            self.last_expired = expired_orders
 
             self.update_next_relevant_time()
 
-- 
GitLab