changeset 263:6c554ce627e3

Add angle to doors
author Neil Muller <drnlmuller@gmail.com>
date Thu, 05 Sep 2013 00:38:14 +0200
parents 521f73061872
children c1d862334e3d
files data/levels/level1 data/levels/level2 nagslang/game_object.py
diffstat 3 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/data/levels/level1	Thu Sep 05 00:37:23 2013 +0200
+++ b/data/levels/level1	Thu Sep 05 00:38:14 2013 +0200
@@ -33,11 +33,13 @@
   - [400, 400]
   - level2
   - [900, 200]
+  - 0
   classname: Door
 - args:
   - [600, 200]
   - level1
   - [600, 700]
+  - 0
   - door_switch
   classname: Door
   name: switch_door
--- a/data/levels/level2	Thu Sep 05 00:37:23 2013 +0200
+++ b/data/levels/level2	Thu Sep 05 00:38:14 2013 +0200
@@ -5,6 +5,7 @@
   - [400, 400]
   - level1
   - [600, 700]
+  - 90
   classname: Door
 lines: []
 polygons:
--- a/nagslang/game_object.py	Thu Sep 05 00:37:23 2013 +0200
+++ b/nagslang/game_object.py	Thu Sep 05 00:38:14 2013 +0200
@@ -1,6 +1,8 @@
 import pymunk
 import pymunk.pygame_util
 
+import math
+
 from nagslang import puzzle
 from nagslang import render
 from nagslang.constants import (
@@ -236,11 +238,13 @@
 class Door(GameObject):
     zorder = ZORDER_FLOOR
 
-    def __init__(self, space, position, destination, dest_pos, key_state=None):
+    def __init__(self, space, position, destination, dest_pos, angle,
+                 key_state=None):
         body = make_body(pymunk.inf, pymunk.inf, position, damping=0.5)
         self.shape = pymunk.Poly(
-            body, [(-32, -32), (32, -32), (32, 32), (-32, 32)])
+            body, [(-4, -30), (4, -30), (4, 30), (-4, 30)])
         self.shape.collision_type = COLLISION_TYPE_DOOR
+        self.shape.body.angle = float(angle)/180 * math.pi
         self.shape.sensor = True
         self.destination = destination
         self.dest_pos = tuple(dest_pos)
@@ -262,7 +266,8 @@
     def requires(cls):
         return [("name", "string"), ("position", "coordinates"),
                 ("destination", "level name"), ("dest_pos", "coordinate"),
-                ("key_state", "puzzler")]
+                ("angle", "degrees"),
+                ("key_state", "puzzler (optional)")]
 
 
 class Bulkhead(GameObject):