diff options
-rw-r--r-- | bridge.py | 2 | ||||
-rw-r--r-- | tools.py | 19 |
2 files changed, 16 insertions, 5 deletions
@@ -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]) @@ -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) |