From 18a6359979c11787c6a5c5abd3da7b3117fa72e0 Mon Sep 17 00:00:00 2001
From: "Egli Adrian (IT-SCI-API-PFI)" <adrian.egli@sbb.ch>
Date: Mon, 3 Jun 2019 16:00:57 +0200
Subject: [PATCH] load -> step(s) works in editor

---
 examples/demo.py         | 11 ++++++++---
 flatland/utils/editor.py | 11 +++++++++--
 notebooks/Editor2.ipynb  | 40 +++++++++++++++++++++++++++++++++++++---
 3 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/examples/demo.py b/examples/demo.py
index 28dad218..e619475f 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -171,7 +171,12 @@ if False:
 
 
 
-demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
-demo_001.set_record_frames('./rendering/frame_{:04d}.bmp')
-demo_001.run_demo(60)
+demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/temp.pkl'))
+demo_001.run_demo(10)
 demo_001 = None
+
+if True:
+    demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
+    demo_001.set_record_frames('./rendering/frame_{:04d}.bmp')
+    demo_001.run_demo(60)
+    demo_001 = None
diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py
index ccff0fa7..a1909bd2 100644
--- a/flatland/utils/editor.py
+++ b/flatland/utils/editor.py
@@ -654,13 +654,15 @@ class EditorModel(object):
             self.log("load file: ", self.env_filename)
             # self.env.rail.load_transition_map(self.env_filename, override_gridsize=True)
             self.env.load(self.env_filename)
-
-            if not self.regen_size_height == self.env.height and not self.regen_size_width == self.env.width:
+            if not self.regen_size_height == self.env.height or not self.regen_size_width == self.env.width:
                 self.regen_size_height = self.env.height
                 self.regen_size_width = self.env.width
                 self.regenerate(None, 0, self.env)
                 self.env.load(self.env_filename)
 
+            self.env.restart_agents()
+            self.env.reset(False,False)
+
             self.fix_env()
             self.set_env(self.env)
             self.redraw()
@@ -670,7 +672,12 @@ class EditorModel(object):
     def save(self):
         self.log("save to ", self.env_filename, " working dir: ", os.getcwd())
         # self.env.rail.save_transition_map(self.env_filename)
+        temp_store = self.env.agents
+        # clear agents before save , because we want the "init" position of the agent to expert
+        self.env.agents = []
         self.env.save(self.env_filename)
+        # reset agents current (current position)
+        self.env.agents = temp_store
 
     def regenerate(self, method=None, nAgents=0, env=None):
         self.log("Regenerate size",
diff --git a/notebooks/Editor2.ipynb b/notebooks/Editor2.ipynb
index 5218e6d9..4b99594c 100644
--- a/notebooks/Editor2.ipynb
+++ b/notebooks/Editor2.ipynb
@@ -78,7 +78,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "<flatland.utils.graphics_pil.PILSVG object at 0x000001C03C7A3080> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
+      "<flatland.utils.graphics_pil.PILSVG object at 0x000001E6748D1128> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
       "<super: <class 'PILSVG'>, <PILSVG object>> <class 'super'>\n",
       " 0000000000000000 Background_#91D1DD.svg\n",
       "WE 0000000000000100 Gleis_Deadend.svg\n",
@@ -149,7 +149,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "82d6d69b02d14d51b773a3c2257844e6",
+       "model_id": "0fd27ca20d9c411586c8ccae843f3950",
        "version_major": 2,
        "version_minor": 0
       },
@@ -159,6 +159,40 @@
      },
      "metadata": {},
      "output_type": "display_data"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<flatland.utils.graphics_pil.PILSVG object at 0x000001E674DEF048> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
+      "<super: <class 'PILSVG'>, <PILSVG object>> <class 'super'>\n",
+      " 0000000000000000 Background_#91D1DD.svg\n",
+      "WE 0000000000000100 Gleis_Deadend.svg\n",
+      "WW EE NN SS 1000010000100001 Gleis_Diamond_Crossing.svg\n",
+      "WW EE 0000010000000001 Gleis_horizontal.svg\n",
+      "EN SW 0000100000010000 Gleis_Kurve_oben_links.svg\n",
+      "WN SE 0000000001001000 Gleis_Kurve_oben_rechts.svg\n",
+      "ES NW 0001001000000000 Gleis_Kurve_unten_links.svg\n",
+      "NE WS 0100000000000010 Gleis_Kurve_unten_rechts.svg\n",
+      "NN SS 1000000000100000 Gleis_vertikal.svg\n",
+      "NN SS EE WW ES NW SE WN 1001011001101001 Weiche_Double_Slip.svg\n",
+      "EE WW EN SW 0000110000010001 Weiche_horizontal_oben_links.svg\n",
+      "EE WW SE WN 0000010001001001 Weiche_horizontal_oben_rechts.svg\n",
+      "EE WW ES NW 0001011000000001 Weiche_horizontal_unten_links.svg\n",
+      "EE WW NE WS 0100010000000011 Weiche_horizontal_unten_rechts.svg\n",
+      "NN SS EE WW NW ES 1001011000100001 Weiche_Single_Slip.svg\n",
+      "NE NW ES WS 0101001000000010 Weiche_Symetrical.svg\n",
+      "NN SS EN SW 1000100000110000 Weiche_vertikal_oben_links.svg\n",
+      "NN SS SE WN 1000000001101000 Weiche_vertikal_oben_rechts.svg\n",
+      "NN SS NW ES 1001001000100000 Weiche_vertikal_unten_links.svg\n",
+      "NN SS NE WS 1100000000100010 Weiche_vertikal_unten_rechts.svg\n",
+      "EW 0000000100000000 Bahnhof_#d50000_Deadend_links.svg\n",
+      "NS 0010000000000000 Bahnhof_#d50000_Deadend_oben.svg\n",
+      "WE 0000000000000100 Bahnhof_#d50000_Deadend_rechts.svg\n",
+      "SN 0000000010000000 Bahnhof_#d50000_Deadend_unten.svg\n",
+      "EE WW 0000010000000001 Bahnhof_#d50000_Gleis_horizontal.svg\n",
+      "NN SS 1000000000100000 Bahnhof_#d50000_Gleis_vertikal.svg\n"
+     ]
     }
    ],
    "source": [
@@ -175,7 +209,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "047cd0c1a66e47ae9fcdbcef6eb6773d",
+       "model_id": "e4c58e43c54847c7bc4ad0327ca506d8",
        "version_major": 2,
        "version_minor": 0
       },
-- 
GitLab