Пример #1
0
    def sound_play(self, event):
        """
        Plays the currently selected sound.
        """

        if self.selected_row == 0:
            return

        utils.sound_play(self.patch.sound_names[self.selected_index], self.pwads)
Пример #2
0
    def sound_play(self, event):
        """
        Plays the currently selected sound.
        """

        if self.selected_row == 0:
            return

        utils.sound_play(self.patch.sound_names[self.selected_index],
                         self.pwads)
Пример #3
0
    def sound_play(self, event):
        """
        Plays a sound entry.
        """

        key = self.PROPS_SOUNDNAMES[event.GetId()]
        sound_index = self.patch.things[self.selected_index]['sound' + key]
        if sound_index == 0:
            return

        utils.sound_play(self.patch.sound_names[sound_index - 1], self.pwads)
Пример #4
0
    def sound_play(self, event):
        """
        Plays a sound entry.
        """

        key = self.PROPS_SOUNDNAMES[event.GetId()]
        sound_index = self.patch.things[self.selected_index]['sound' + key]
        if sound_index == 0:
            return

        utils.sound_play(self.patch.sound_names[sound_index - 1], self.pwads)
Пример #5
0
    def set_state(self, state_index):
        """
        Sets a new state index.
        """

        if state_index <= 1 or state_index >= len(self.patch.states):
            self.ticks = -1
            self.anim_stop()
            return

        state = self.patch.states[state_index]
        sprite_index = state['sprite']
        sprite_name = self.patch.sprite_names[sprite_index]
        sprite_frame = state['spriteFrame'] & 0x3FFF

        self.Sprite.show_sprite(sprite_name, sprite_frame)

        self.StateIndex.SetLabel(str(state_index))
        self.StateInfo.SetLabel('{}{}'.format(sprite_name, chr(65 + sprite_frame)))

        action_label = ''

        # Play any state-related sound.
        if state['action'] is not None:

            # Support for RandomJump action that takes parameters to jump to a random next state.
            if state['action'] == 'RandomJump' and random.randint(0, 255) < state['unused2']:
                self.set_state(state['unused1'])
                return

            action_label = state['action']

            action_name = state['action']
            action = self.patch.engine.actions[action_name]

            sound_label = ''
            sound_index = None

            spawn_sound_label = ''
            spawn_sound_index = None

            if 'sound' in action:
                parts = action['sound'].split(':')
                if len(parts) != 2:
                    raise Exception('Invalid sound for action {}'.format(action_name))

                if parts[0] == 'sound':
                    sound_index = int(parts[1])

                elif parts[0] == 'thing':
                    if self.ref_thing_index is not None:
                        sound_index = self.ref_thing[parts[1]]
                    else:
                        sound_label = '{}:{}'.format(parts[0], parts[1])

                elif parts[0] == 'state':
                    sound_index = state[parts[1]]

            # Action spawns a thing.
            if 'spawns' in action:
                thing = self.patch.things[action['spawns']]
                spawn_sound_index = thing['soundAlert']

            # Playback sounds for this action. Any specific sound overrides a spawned thing sound.
            if sound_index is not None:
                utils.sound_play(self.patch.sound_names[sound_index - 1], self.pwads)
                sound_label = self.patch.sound_names[sound_index - 1]
            elif spawn_sound_index is not None:
                utils.sound_play(self.patch.sound_names[spawn_sound_index - 1], self.pwads)
                spawn_sound_label = self.patch.sound_names[spawn_sound_index - 1]

            self.SpawnSound.SetLabel(spawn_sound_label.upper())
            self.StateSound.SetLabel(sound_label.upper())

        self.StateAction.SetLabel(action_label)

        self.state_index = state_index
        self.ticks = state['duration']