From c6800f5cf67816c9a145ecc759dd9a1b87fceb68 Mon Sep 17 00:00:00 2001
From: BAROLLET Theo <theo.barollet@inria.fr>
Date: Tue, 17 May 2022 10:53:02 +0200
Subject: [PATCH] generic level file for tutorial

---
 levels/tutorial/00_intro.c   | 38 +++++++++++++++++++++++++---
 levels/tutorial/00_intro.py  | 48 ------------------------------------
 levels/tutorial/run_level.py | 21 ++++++++++++++++
 lib/level/level.py           |  2 +-
 4 files changed, 57 insertions(+), 52 deletions(-)
 delete mode 100755 levels/tutorial/00_intro.py
 create mode 100755 levels/tutorial/run_level.py

diff --git a/levels/tutorial/00_intro.c b/levels/tutorial/00_intro.c
index d22e9a34..791d42ad 100644
--- a/levels/tutorial/00_intro.c
+++ b/levels/tutorial/00_intro.c
@@ -1,8 +1,8 @@
-/* @AGDB
+/*
  *
  * First two levels when entering the game.
  *
- * GUI: only 'next' button for level 00, with 'edit' button for level 01.
+ * GUI only 'next' button for level 00, with 'edit' button for level 01.
  *
  * Upon succes, directly launch level 01 which is exactly the same, but with 
  * the WOM (wise old man) or WOW midway to the exits, that talks to the player.
@@ -19,11 +19,43 @@
  *
  */
 
+/** @AGDB
+ *
+ * level_name: 00_intro
+ * program_name: 00_intro
+ * level_number: 0
+ *
+ * available_commands: next edit
+ *
+ * map_height: 7
+ * map_width: 12
+ *
+ * BUG: Here describe the bug
+ *
+ **/
+
 
 #include <stdlib.h>
 #include <stdio.h>
 
-
+/** @AGDB
+ * Player status
+ * player_x: 3
+ * player_y: 5
+ * player_direction: 3
+ * Map goal
+ * tag: #FixedExit
+ * exit_x: 8
+ * exit_y: 5
+ *
+ * WOWM: message_conditions    player_x==6 player_y==5 near
+ * WOWM: visibility_conditions player_x==6 player_y==3 near
+ * WOWM: labels some_label
+ * WOWM: message Hi, stay still. You are half way to the end!
+ * WOWM: Try to edit the code for example by removing one forward() call
+ * WOWM: message :-)
+ * WOWM: position 6 4
+ */
 int player_x = 3;
 int exit_x   = 8;
 
diff --git a/levels/tutorial/00_intro.py b/levels/tutorial/00_intro.py
deleted file mode 100755
index 2497a30e..00000000
--- a/levels/tutorial/00_intro.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python3
-
-from easytracker import init_tracker, PauseReasonType
-
-def get_player_exit(glob_vars):
-    return glob_vars['player_x'],glob_vars['exit_x']
-    print(glob_vars)
-
-
-tracker = init_tracker("GDB")
-tracker.load_program("00_intro")
-
-tracker.start()
-
-
-map_width = 10
-map_height = 5
-player_y = 3
-exit_y = 3
-
-top_line = '+' + '-'*map_width + '+'
-mid_line ='|' + ' '*map_width + '|'
-bot_line = top_line
-
-def show_map(player_x, exit_x):
-    print(top_line)
-    for h in range(map_height+2):
-        if h == player_y:
-            line = '|' + ' '*(player_x-1) + '@'
-            if player_x != exit_x:
-                line += ' '*(exit_x - player_x -1) + '>'
-            line += ' '*(map_width-exit_x) + '|'
-            print (line)
-        else:
-            print (mid_line)
-    print(bot_line)
-    pass
-
-
-
-while tracker.get_pause_reason().type != PauseReasonType.EXITED:
-    variables = tracker.get_global_variables()
-    pl,ex = get_player_exit(variables)
-
-    show_map(pl,ex)
-
-    input("press enter to continue")
-    tracker.next()
diff --git a/levels/tutorial/run_level.py b/levels/tutorial/run_level.py
new file mode 100755
index 00000000..11dbdc27
--- /dev/null
+++ b/levels/tutorial/run_level.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+""" Intro level
+    The WOWM messages are in the source file """
+
+import sys
+from level.utils import generate_dict
+from level.level import level
+
+
+def main():
+    if len(sys.argv) != 2:
+        print("Usage python run_level.py c_file.c")
+        return
+    metadata = generate_dict(sys.argv[1])
+    game = level(metadata, use_curses=False)
+    game.run()
+
+
+if __name__ == "__main__":
+    main()
diff --git a/lib/level/level.py b/lib/level/level.py
index 437936a5..6fc98dbb 100644
--- a/lib/level/level.py
+++ b/lib/level/level.py
@@ -131,7 +131,7 @@ class AbstractLevel(ABC):
                     type = lambda x: bool(str(x))
                 else:
                     type = str
-                self.vars[var] = type((global_variables[var]))
+                self.vars[var] = type((global_variables[var].value.content))
 
     def available_wowm(self):
         """Return a list of WOWM coordinates."""
-- 
GitLab