Changeset 180:026297a03963 for nagslang
- Timestamp:
- Sep 3, 2013, 2:58:45 PM (7 years ago)
- Branch:
- default
- rebase_source:
- 6acd60ff0197cad6bc4cbd52053cdf77bbacd0bd
- Location:
- nagslang
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/engine.py
r175 r180 23 23 'level2': AreaScreen, 24 24 } 25 self.change_screen('menu' )25 self.change_screen('menu', None) 26 26 # Dummy resize event, to force us to realise our real size 27 27 # http://stackoverflow.com/q/16442573/8629 … … 29 29 size=(0, 0), w=0, h=0)) 30 30 31 def change_screen(self, new_screen ):31 def change_screen(self, new_screen, player): 32 32 if self._current_screen is not None: 33 33 self._current_screen.teardown() 34 34 screen_cls = self._screens[new_screen] 35 self._current_screen = screen_cls(new_screen, self._world)35 self._current_screen = screen_cls(new_screen, player, self._world) 36 36 self._current_screen.setup() 37 37 … … 48 48 elif ScreenChange.matches(ev): 49 49 self._surface.fill(pygame.color.Color(0, 0, 0)) 50 self.change_screen(ev.screen )50 self.change_screen(ev.screen, ev.player) 51 51 else: 52 52 self._current_screen.handle_event(ev) -
nagslang/events.py
r20 r180 36 36 class ScreenChange(UserEvent): 37 37 @classmethod 38 def post(cls, new_screen): 39 super(ScreenChange, cls).post(screen=new_screen) 38 def post(cls, new_screen, player=None): 39 super(ScreenChange, cls).post(screen=new_screen, player=player) 40 41 42 class DoorEvent(UserEvent): 43 @classmethod 44 def post(cls, destination, dest_pos): 45 super(DoorEvent, cls).post(destination=destination, dest_pos=dest_pos) -
nagslang/game_object.py
r176 r180 10 10 from nagslang.options import options 11 11 from nagslang.resources import resources 12 from nagslang.events import ScreenChange12 from nagslang.events import DoorEvent 13 13 14 14 … … 407 407 if shape.collision_type == COLLISION_TYPE_PLAYER: 408 408 # Force to new position 409 shape.body.position = self.dest_pos 410 ScreenChange.post(self.destination) 409 DoorEvent.post(self.destination, self.dest_pos) -
nagslang/screens/area.py
r147 r180 5 5 import pymunk.pygame_util 6 6 7 from nagslang.events import ScreenChange 7 from nagslang.events import ScreenChange, DoorEvent 8 8 from nagslang.level import Level 9 9 from nagslang.protagonist import Protagonist … … 69 69 self._drawables = Drawables() 70 70 self.add_walls() 71 self.add_protagonist() 71 if self.protagonist is not None: 72 # We do things this way to avoid extra pymunk 73 # juggling to move objects between spaces 74 old_protagonist = self.protagonist 75 self.add_protagonist() 76 self.protagonist.copy_state(old_protagonist) 77 else: 78 self.add_protagonist() 72 79 self.add_game_objects() 73 80 … … 101 108 if ev.key == pygame.locals.K_c: 102 109 self.protagonist.toggle_form() 110 elif DoorEvent.matches(ev): 111 self.protagonist.set_position(ev.dest_pos) 112 if ev.destination != self.name: 113 # Go to anther screen 114 ScreenChange.post(ev.destination, self.protagonist) 115 # else we're teleporting within the screen, and just the 116 # position change is enough 103 117 self.keys.handle_event(ev) 104 118 -
nagslang/screens/base.py
r37 r180 7 7 class Screen(object): 8 8 9 def __init__(self, name, world):9 def __init__(self, name, player, world): 10 10 self.name = name 11 11 self.world = world 12 self.protagonist = player 12 13 self.space = pymunk.Space() 13 14 -
nagslang/screens/menu.py
r29 r180 15 15 QuitEvent.post() 16 16 elif ev.key == pygame.locals.K_1: 17 ScreenChange.post('level1' )17 ScreenChange.post('level1', None) 18 18 19 19 def render(self, surface):
Note: See TracChangeset
for help on using the changeset viewer.