Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/tools.py b/tools.py
index 888165b..13a43c8 100644
--- a/tools.py
+++ b/tools.py
@@ -285,11 +285,23 @@ class BridgeJointTool(Tool):
bodies = self.game.world.get_bodies_at_pos(event.pos,
include_static=True)
- if not bodies or len(bodies) != 2:
+ if not bodies or len(bodies) > 2:
return
-
jointDef = box2d.b2RevoluteJointDef()
- jointDef.Initialize(bodies[0], bodies[1], self.to_b2vec(event.pos))
+ if len(bodies) == 1:
+ if not bodies[0].IsStatic():
+ if event.pos[1] > 550 and (event.pos[0] < 350 or event.pos[0] > 850):
+ jointDef.Initialize(self.game.world.world.GetGroundBody(),
+ bodies[0], self.to_b2vec(event.pos))
+ elif len(bodies) == 2:
+ if bodies[0].IsStatic():
+ jointDef.Initialize(self.game.world.world.GetGroundBody(),
+ bodies[1], self.to_b2vec(event.pos))
+ elif bodies[1].IsStatic():
+ jointDef.Initialize(self.game.world.world.GetGroundBody(),
+ bodies[0], self.to_b2vec(event.pos))
+ else:
+ jointDef.Initialize(bodies[0], bodies[1], self.to_b2vec(event.pos))
joint = self.game.world.world.CreateJoint(jointDef)
self.game.bridge.joint_added(joint)