Use WorldEvent to switch level.
[koperkapel.git] / koperkapel / world.py
index efb64030587c2bdc95aa697a67fb869dcf766112..8a4af23d1407a08c32c02aef57eb9d493deed882 100644 (file)
@@ -9,7 +9,7 @@ class World:
 
     @property
     def level(self):
-        return self._level["level"]
+        return self._state["level"]
 
     @property
     def roaches(self):
@@ -23,7 +23,7 @@ class World:
             self._build_roach("roichard", quickness=3),
         ]
         state["level"] = {
-            "file": "level1.json",
+            "name": "level1",
         }
         return state
 
@@ -40,5 +40,15 @@ class World:
             "attributes": attributes,
         }
 
-    def apply_event(self, *args, **kw):
-        pass
+    def _apply_set(self, updates):
+        for name, value in updates.items():
+            parts = name.split(".")
+            obj = self._state
+            for p in parts[:-1]:
+                obj = obj[p]
+            obj[parts[-1]] = value
+
+    def apply_event(self, action, *args, **kw):
+        if action == "set":
+            return self._apply_set(*args, **kw)
+        raise ValueError("Unknown world event action: %r" % (action,))