From bce2e832c2664e9d5a9f8988da92e6d6f8d4f000 Mon Sep 17 00:00:00 2001 From: nrp Date: Sun, 31 Aug 2008 18:16:44 +0000 Subject: fixing the bridge error --- 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) -- cgit v0.9.1