Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge.py2
-rw-r--r--tools.py19
2 files changed, 16 insertions, 5 deletions
diff --git a/bridge.py b/bridge.py
index 9d9a401..c6b4775 100644
--- a/bridge.py
+++ b/bridge.py
@@ -53,7 +53,7 @@ class Bridge:
coord = int(self.world.meter_to_screen(vec.x)),int(780 - self.world.meter_to_screen(vec.y))
pygame.draw.circle(self.screen, (int(force/2),255-int(force/2),0), coord, 4)
- def create_train(self, worldpoint = (-100,490), train = (100, 50), wheelrad = 20, cars = 3):
+ def create_train(self, worldpoint = (-100,490), train = (100, 50), wheelrad = 20, cars = 3, speed = -10):
points = []
for i in range(0,cars):
startpoint = (worldpoint[0]-(train[0]+7)*i, worldpoint[1])
diff --git a/tools.py b/tools.py
index 68b2c1e..4ad4d46 100644
--- a/tools.py
+++ b/tools.py
@@ -285,12 +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:
- print len(bodies)
+ 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))
+ else:
+ 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)