From 011c16a2dc87f0cab8062cd53e73bea465b76ce1 Mon Sep 17 00:00:00 2001 From: Sai Vineet Date: Sat, 14 Dec 2013 16:40:44 +0000 Subject: Add capability to remove pens with Destroy Tool, pen tracking to journal entry. --- (limited to 'physics.py') diff --git a/physics.py b/physics.py index c5f161e..6ce600a 100644 --- a/physics.py +++ b/physics.py @@ -83,7 +83,11 @@ class PhysicsGame: def write_file(self, path): #Saving to journal self.world.add.remove_mouseJoint() - self.world.json_save(path) + additional_data = { + "trackinfo" : self.trackinfo, + "full_pos_list" : self.full_pos_list + } + self.world.json_save(path, additional_data, serialize=True) def read_file(self, path): #Loading from journal @@ -117,7 +121,9 @@ class PhysicsGame: if self.opening_queue: path = self.opening_queue.encode('ascii', 'convert') if os.path.exists(path): - self.world.json_load(path) + self.world.json_load(path, serialized=True) + self.full_pos_list = self.world.additional_vars['full_pos_list'] + self.trackinfo = self.world.additional_vars['trackinfo'] while self.loop: while gtk.events_pending(): @@ -157,27 +163,28 @@ class PhysicsGame: for key, info in self.trackinfo.iteritems(): - body = info[1] # Format - [host_body, tracker, color] - trackdex = body.userData['track_index'] - def to_screen(pos): - px = self.world.meter_to_screen( - pos[0]) - py = self.world.meter_to_screen( - pos[1]) - py = self.world.renderer.get_surface() \ - .get_height() - py - return (px, py) - - x = body.position.x - y = body.position.y - tupled_pos = to_screen((x, y)) - posx = tupled_pos[0] - posy = tupled_pos[1] - try: - self.full_pos_list[trackdex].append(posx) - self.full_pos_list[trackdex].append(posy) - except IndexError: - self.full_pos_list.append([posx, posy]) + body = info[1] # [host_body, tracker, color, destroyed?] + if info[3] is False: # Not destroyed the pen + trackdex = info[4] + def to_screen(pos): + px = self.world.meter_to_screen( + pos[0]) + py = self.world.meter_to_screen( + pos[1]) + py = self.world.renderer.get_surface() \ + .get_height() - py + return (px, py) + + x = body.position.x + y = body.position.y + tupled_pos = to_screen((x, y)) + posx = tupled_pos[0] + posy = tupled_pos[1] + try: + self.full_pos_list[trackdex].append(posx) + self.full_pos_list[trackdex].append(posy) + except IndexError: + self.full_pos_list.append([posx, posy]) for body in self.world.world.GetBodyList(): if type(body.userData) == type({}): -- cgit v0.9.1