Пример #1
0
 def untag(self, grabable_ent):
     if grabable_ent in self._tags:
         joint_id = self._tags[grabable_ent]
         self.get_world_entity_manager().unjoin(joint_id)
         grabable_ent._taggable_attached = None
         play_sound('detach.wav')
         del self._tags[grabable_ent]
Пример #2
0
    def jump(self):
        if self._avail_jumps == Player.MAX_JUMPS and not self._can_begin_jump:
            return

        if self._avail_jumps > 0:
            self._can_begin_jump = False
            self._avail_jumps -= 1
            jump_factor = 1/(Player.MAX_JUMPS - self._avail_jumps)
            self.get_body().apply_impulse((0,3000 + 2000 * jump_factor), (0,0))
            play_sound('jump.wav')
Пример #3
0
    def hold(self, entity, wc_contact_pos):
        if not entity.is_grabable():
            return

        self.drop()

#        lc_for_entity = entity.get_body().world_to_local(wc_contact_pos)
#        lc_for_player = self.get_body().world_to_local(wc_contact_pos)
        entity.get_body().position = self.get_body().position
        joint_id = self.pin_join(entity, (0,0), (0,0))
        
        self._hold_joint = joint_id
        self._held_entity = entity
        play_sound('chain_up.wav')
Пример #4
0
    def tag(self, grabable_ent, wc_taggable_pos):
        if not self.is_taggable() or not grabable_ent.is_grabable():
            return

        grabable_body = grabable_ent.get_body()

        #move the body to the taggable pos
        grabable_body.position = wc_taggable_pos

        #convert world pin coordinates to local body coords
        lc_grabable_pos = grabable_body.world_to_local(wc_taggable_pos)
        lc_taggable_pos = self.get_body().world_to_local(wc_taggable_pos)

        #turn off collision checking between the combined items
        cgrp = self.get_world_entity_manager().alloc_collision_group()
        self.get_shape().group = cgrp
        grabable_ent.get_shape().group = cgrp
       
        #pin it to the taggable
        joint_id = grabable_ent.pin_join(self, lc_grabable_pos, lc_taggable_pos)

        grabable_ent.on_taggable_attach(self)
        self.on_tag(grabable_ent, joint_id)
        play_sound('attach.wav')
Пример #5
0
 def on_collision(self, entity, contacts, normal_coef, data):
     if isinstance(entity, Deliverable):
         self._value += entity._worth
         play_sound('goal.wav')
         self.get_world_entity_manager().remove_entity(entity)