Ignore:
Timestamp:
09/04/13 12:53:37 (8 years ago)
Author:
Jeremy Thurgood <firxen@…>
Branch:
default
Phase:
public
Message:

Composition-based renderers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • nagslang/protagonist.py

    r215 r217  
    8282        self.angle = 0
    8383        self._renderers = {
    84             self.HUMAN_FORM: render.AnimatedFacingImageRenderer(
    85                 (self._get_image('human_1.png'),
    86                  self._get_image('human_1.png'),
    87                  self._get_image('human_1.png'),
    88                  self._get_image('human_2.png'),
    89                  self._get_image('human_2.png'),
    90                  self._get_image('human_2.png')),
    91                 (self._get_image('human_1.png', FLIP_H),
    92                  self._get_image('human_1.png', FLIP_H),
    93                  self._get_image('human_1.png', FLIP_H),
    94                  self._get_image('human_2.png', FLIP_H),
    95                  self._get_image('human_2.png', FLIP_H),
    96                  self._get_image('human_2.png', FLIP_H))),
    97             self.HUMAN_FORM_BACK: render.AnimatedFacingImageRenderer(
    98                 (self._get_image('human_back_1.png'),
    99                  self._get_image('human_back_1.png'),
    100                  self._get_image('human_back_1.png'),
    101                  self._get_image('human_back_2.png'),
    102                  self._get_image('human_back_2.png'),
    103                  self._get_image('human_back_2.png')),
    104                 (self._get_image('human_back_1.png', FLIP_H),
    105                  self._get_image('human_back_1.png', FLIP_H),
    106                  self._get_image('human_back_1.png', FLIP_H),
    107                  self._get_image('human_back_2.png', FLIP_H),
    108                  self._get_image('human_back_2.png', FLIP_H),
    109                  self._get_image('human_back_2.png', FLIP_H))),
    110             self.WOLF_FORM: render.AnimatedFacingImageRenderer(
    111                 (self._get_image('werewolf_1.png'),
    112                  self._get_image('werewolf_1.png'),
    113                  self._get_image('werewolf_1.png'),
    114                  self._get_image('werewolf_2.png'),
    115                  self._get_image('werewolf_2.png'),
    116                  self._get_image('werewolf_2.png')),
    117                 (self._get_image('werewolf_1.png', FLIP_H),
    118                  self._get_image('werewolf_1.png', FLIP_H),
    119                  self._get_image('werewolf_1.png', FLIP_H),
    120                  self._get_image('werewolf_2.png', FLIP_H),
    121                  self._get_image('werewolf_2.png', FLIP_H),
    122                  self._get_image('werewolf_2.png', FLIP_H))),
    123             self.WOLF_FORM_BACK: render.AnimatedFacingImageRenderer(
    124                 (self._get_image('werewolf_back_1.png'),
    125                  self._get_image('werewolf_back_1.png'),
    126                  self._get_image('werewolf_back_1.png'),
    127                  self._get_image('werewolf_back_2.png'),
    128                  self._get_image('werewolf_back_2.png'),
    129                  self._get_image('werewolf_back_2.png')),
    130                 (self._get_image('werewolf_back_1.png', FLIP_H),
    131                  self._get_image('werewolf_back_1.png', FLIP_H),
    132                  self._get_image('werewolf_back_1.png', FLIP_H),
    133                  self._get_image('werewolf_back_2.png', FLIP_H),
    134                  self._get_image('werewolf_back_2.png', FLIP_H),
    135                  self._get_image('werewolf_back_2.png', FLIP_H))),
     84            self.HUMAN_FORM: render.FacingSelectionRenderer(
     85                {
     86                    'left': render.MovementAnimatedRenderer(
     87                        [self._get_image('human_1.png'),
     88                         self._get_image('human_2.png')], 3),
     89                    'right': render.MovementAnimatedRenderer(
     90                        [self._get_image('human_1.png', FLIP_H),
     91                         self._get_image('human_2.png', FLIP_H)], 3),
     92                }),
     93            self.HUMAN_FORM_BACK: render.FacingSelectionRenderer(
     94                {
     95                    'left': render.MovementAnimatedRenderer(
     96                        [self._get_image('human_back_1.png'),
     97                         self._get_image('human_back_2.png')], 3),
     98                    'right': render.MovementAnimatedRenderer(
     99                        [self._get_image('human_back_1.png', FLIP_H),
     100                         self._get_image('human_back_2.png', FLIP_H)], 3),
     101                }),
     102            self.WOLF_FORM: render.FacingSelectionRenderer(
     103                {
     104                    'left': render.MovementAnimatedRenderer(
     105                        [self._get_image('werewolf_1.png'),
     106                         self._get_image('werewolf_2.png')], 3),
     107                    'right': render.MovementAnimatedRenderer(
     108                        [self._get_image('werewolf_1.png', FLIP_H),
     109                         self._get_image('werewolf_2.png', FLIP_H)], 3),
     110                }),
     111            self.WOLF_FORM_BACK: render.FacingSelectionRenderer(
     112                {
     113                    'left': render.MovementAnimatedRenderer(
     114                        [self._get_image('werewolf_back_1.png'),
     115                         self._get_image('werewolf_back_2.png')], 3),
     116                    'right': render.MovementAnimatedRenderer(
     117                        [self._get_image('werewolf_back_1.png', FLIP_H),
     118                         self._get_image('werewolf_back_2.png', FLIP_H)], 3),
     119                }),
    136120        }
    137121        for renderer in self._renderers.values():
     
    191175    def set_direction(self, dx, dy):
    192176        if (dx, dy) == (0, 0):
    193             self.renderer.stop()
    194177            return
    195178        old_angle = self.angle
     
    206189        self.physicser.apply_impulse(
    207190            (dx * self.impulse_factor, dy * self.impulse_factor))
    208         self.renderer.start()
    209191
    210192    def set_position(self, position):
     
    214196        self.physicser.position = old_protagonist.physicser.position
    215197        self.physicser.switch_form(self.form, old_protagonist.form)
     198        self.impulse_factor = old_protagonist.impulse_factor
    216199        self.form = old_protagonist.form
    217200        self.angle = old_protagonist.angle
Note: See TracChangeset for help on using the changeset viewer.