Changeset 570:3c7593a84b06


Ignore:
Timestamp:
Sep 7, 2013, 8:39:30 PM (7 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
rebase_source:
bc609deab754a66b1c4767cd13e6057888d12d9d
Message:

Make hatches movable

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • nagslang/game_object.py

    r569 r570  
    533533                ("end2", "coordinates"), ("key_state", "puzzler")]
    534534
     535    # The level knows that bulkheads are magical
     536    @classmethod
     537    def movable(cls):
     538        return True
     539
    535540
    536541class ToggleSwitch(GameObject):
  • tools/area_editor.py

    r549 r570  
    880880        old_coords = list(args[0])
    881881        param_defs = obj.requires()[1:]  # chop off name
    882         for i, (_key, key_type) in enumerate(param_defs):
     882        for i, (key, key_type) in enumerate(param_defs):
    883883            if i > len(args):
    884884                break
     
    887887                    args[i], old_coords, new_coords)
    888888                obj.update_image(new_outline)
     889            if key == 'end2':
     890                mid = shape.a + (shape.b - shape.a) / 2
     891                delta = new_coords - mid
     892                shape.unsafe_set_a(shape.a + delta)
     893                shape.unsafe_set_b(shape.b + delta)
     894                shape.update(new_pos, (0, 0))
    889895        self.invalidate()
    890896
     
    897903        args[0][1] = new_coords[1]
    898904        param_defs = obj.requires()[1:]  # chop off name
    899         for i, (_key, key_type) in enumerate(param_defs):
     905        for i, (key, key_type) in enumerate(param_defs):
    900906            if i > len(args):
    901907                break
     
    903909                args[i] = self.level.translate_poly(
    904910                    args[i], old_coords, new_coords)
     911            if key == 'end2':
     912                # Horrible, horrible hackery
     913                shape = obj.get_shape()
     914                mid = shape.a + (shape.b - shape.a) / 2
     915                delta = - mid + new_coords
     916                point2 = list(args[i])
     917                mid = pymunk.Vec2d(old_coords) + (
     918                    pymunk.Vec2d(point2) - old_coords) / 2
     919                delta = new_coords - mid
     920                args[0][0] = old_coords[0] + delta.x
     921                args[0][1] = old_coords[1] + delta.y
     922                args[i][0] = point2[0] + delta.x
     923                args[i][1] = point2[1] + delta.y
    905924        self.level.reset_objs()
    906925        self.invalidate()
Note: See TracChangeset for help on using the changeset viewer.