def register_entity(entity, sprite_group, sprite_name, scale=1, smooth_draw=True): if display.RABBYT: entity['image'] = sprite_name else: entity['image'] = display.load_image(sprite_name) entity['sprite'] = display.create_sprite(entity['image'], 0, 0, sprite_group) entity['sprite_group'] = sprite_group entity['last_rotation'] = 0 entity['next_rotation'] = 0 entity['rotation_speed'] = 0 entity['last_scale'] = scale entity['next_scale'] = scale entity['smooth_draw'] = smooth_draw entity['scale_only'] = False entities.create_event(entity, 'redraw') entities.create_event(entity, 'set_scale') entities.create_event(entity, 'set_rotation') entities.create_event(entity, 'rotate_by') entities.create_event(entity, 'fade_by') entities.register_event(entity, 'tick', tick) entities.register_event(entity, 'redraw', lambda _entity: entities.register_event(_entity, 'loop', loop)) entities.register_event(entity, 'delete', display.delete_sprite) entities.register_event(entity, 'set_scale', set_scale) entities.register_event(entity, 'set_rotation', set_rotation) entities.register_event(entity, 'rotate_by', rotate_by) entities.register_event(entity, 'fade_by', fade_by) entities.register_event(entity, 'loop', loop)
def create(owner_id, rounds=1, recoil_time=16, reload_time=35, kickback=0, spray=8, turn_rate=.15, speed=30, bullet=False, missile=True, hitscan=False, tracking=False, damage_radius=50): _entity = entities.create_entity(group='weapons') _entity['owner_id'] = owner_id _entity['rounds'] = rounds _entity['max_rounds'] = rounds _entity['recoil_time'] = 1 _entity['recoil_time_max'] = recoil_time _entity['reload_time'] = reload_time _entity['reload_time_max'] = reload_time _entity['bullet'] = bullet _entity['missile'] = missile _entity['hitscan'] = hitscan _entity['tracking'] = tracking _entity['firing'] = False _entity['turn_rate'] = turn_rate _entity['speed'] = speed _entity['damage_radius'] = damage_radius _entity['kickback'] = kickback _entity['spray'] = spray entities.create_event(_entity, 'shoot') entities.register_event(_entity, 'shoot', shoot) entities.register_event(entities.get_entity(owner_id), 'delete', lambda owner_entity: entities.delete_entity(_entity)) return _entity
def register(entity, use_system_event=None, use_entity_event='tick'): entity['timers'] = [] entities.create_event(entity, 'create_timer') entities.create_event(entity, 'clear_timers') entities.register_event(entity, 'create_timer', create_timer) entities.register_event(entity, 'clear_timers', clear_timers) if use_system_event: events.register_event(use_system_event, lambda: tick(entity)) else: entities.register_event(entity, use_entity_event, tick)
def register(entity): entity['flags'] = {} entities.create_event(entity, 'set_flag') entities.create_event(entity, 'delete_flag') entities.create_event(entity, 'flag_add') entities.create_event(entity, 'flag_sub') entities.create_event(entity, 'flag_changed') entities.register_event(entity, 'set_flag', set_flag) entities.register_event(entity, 'delete_flag', delete_flag) entities.register_event(entity, 'flag_add', flag_add) entities.register_event(entity, 'flag_sub', flag_sub) entities.register_event(entity, 'save', save)
def create(x, y, direction, speed, sprite_name, owner_id, damage=3, life=30, turn_rate=.15, radius=50): _entity = entities.create_entity() movement.register_entity(_entity, x=x, y=y, direction=direction, speed=speed, turn_rate=turn_rate) sprites.register_entity(_entity, 'effects_foreground', sprite_name) entities.create_event(_entity, 'hit') entities.create_event(_entity, 'destroy') entities.register_event(_entity, 'tick', tick) entities.register_event(_entity, 'tick', tick_bullet) entities.register_event(_entity, 'destroy', destroy) entities.register_event(_entity, 'hit_edge', lambda entity: entities.trigger_event(entity, 'destroy')) entities.trigger_event(_entity, 'set_friction', friction=0) entities.trigger_event(_entity, 'thrust') entities.add_entity_to_group('bullets', _entity) _entity['life'] = life _entity['owner_id'] = owner_id _entity['damage'] = damage _entity['damage_radius'] = radius _entity['enemy_sprite_groups'] = [name for name in entities.GROUPS if not name in entities.get_entity(_entity['owner_id'])['_groups'] and not name in entities.IGNORE_ENTITY_GROUPS] return _entity
def register_entity(entity): entity['timers'] = [] entities.create_event(entity, 'create_timer') entities.register_event(entity, 'create_timer', create_timer) entities.register_event(entity, 'tick', tick)
def register(entity, surface=None, animated=True, char='X', fore_color=(255, 255, 255)): entity['tile'] = {'char': char, 'x': -1, 'y': -1, 'fore_color': fore_color, 'back_color': None, 'surface': surface, 'flags': {}, 'animation': {}} entities.create_event(entity, 'set_char') entities.create_event(entity, 'set_position') entities.create_event(entity, 'set_fore_color') entities.create_event(entity, 'set_back_color') entities.create_event(entity, 'tint_fore_color') entities.create_event(entity, 'tint_back_color') entities.create_event(entity, 'set_surface') entities.create_event(entity, 'draw') entities.create_event(entity, 'flag') entities.create_event(entity, 'unflag') entities.create_event(entity, 'animate') entities.create_event(entity, 'stop_animation') entities.register_event(entity, 'set_char', set_char) entities.register_event(entity, 'set_position', set_tile_position) entities.register_event(entity, 'set_fore_color', set_fore_color) entities.register_event(entity, 'set_back_color', set_back_color) entities.register_event(entity, 'tint_fore_color', tint_fore_color) entities.register_event(entity, 'tint_back_color', tint_back_color) entities.register_event(entity, 'set_surface', set_surface) entities.register_event(entity, 'save', save) if animated: entities.register_event(entity, 'tick', tick) entities.register_event(entity, 'draw', draw) entities.register_event(entity, 'flag', flag_tile) entities.register_event(entity, 'unflag', unflag_tile) entities.register_event(entity, 'animate', animate) entities.register_event(entity, 'stop_animation', cancel_animation)
def create(sprite_name, x=0, y=0, group=None, speed=10, scale=1, turn_rate=0.1, acceleration=0.5, max_velocity=15, death_time=10, hp=10): _soldier = entities.create_entity() _soldier['hp'] = hp _soldier['death_timer'] = -1 _soldier['death_timer_max'] = death_time _soldier['speed'] = speed _soldier['turn_rate'] = turn_rate _soldier['collision_radius'] = 0 if group: entities.add_entity_to_group(group, _soldier) else: print 'WARNING: Entity has no group!' movement.register_entity(_soldier, x=x, y=y) sprites.register_entity(_soldier, 'ships', sprite_name, scale=scale) entities.create_event(_soldier, 'shoot') entities.create_event(_soldier, 'shoot_alt') entities.create_event(_soldier, 'hit') entities.create_event(_soldier, 'kill') entities.create_event(_soldier, 'score') entities.create_event(_soldier, 'dying') entities.create_event(_soldier, 'explode') entities.register_event(_soldier, 'tick', tick) entities.register_event(_soldier, 'dying', destroy) entities.register_event(_soldier, 'explode', explode) entities.register_event(_soldier, 'hit', damage) entities.trigger_event(_soldier, 'set_minimum_velocity', velocity=[-max_velocity, -max_velocity]) entities.trigger_event(_soldier, 'set_maximum_velocity', velocity=[max_velocity, max_velocity]) entities.trigger_event(_soldier, 'set_acceleration', acceleration=acceleration) entities.trigger_event(_soldier, 'set_friction', friction=0) return _soldier
def register(entity, surface=None, animated=True, char='X', fore_color=(255, 255, 255)): entity['tile'] = { 'char': char, 'x': -1, 'y': -1, 'fore_color': fore_color, 'back_color': None, 'surface': surface, 'flags': {}, 'animation': {} } entities.create_event(entity, 'set_char') entities.create_event(entity, 'set_position') entities.create_event(entity, 'set_fore_color') entities.create_event(entity, 'set_back_color') entities.create_event(entity, 'tint_fore_color') entities.create_event(entity, 'tint_back_color') entities.create_event(entity, 'set_surface') entities.create_event(entity, 'draw') entities.create_event(entity, 'flag') entities.create_event(entity, 'unflag') entities.create_event(entity, 'animate') entities.create_event(entity, 'stop_animation') entities.register_event(entity, 'set_char', set_char) entities.register_event(entity, 'set_position', set_tile_position) entities.register_event(entity, 'set_fore_color', set_fore_color) entities.register_event(entity, 'set_back_color', set_back_color) entities.register_event(entity, 'tint_fore_color', tint_fore_color) entities.register_event(entity, 'tint_back_color', tint_back_color) entities.register_event(entity, 'set_surface', set_surface) entities.register_event(entity, 'save', save) if animated: entities.register_event(entity, 'tick', tick) entities.register_event(entity, 'draw', draw) entities.register_event(entity, 'flag', flag_tile) entities.register_event(entity, 'unflag', unflag_tile) entities.register_event(entity, 'animate', animate) entities.register_event(entity, 'stop_animation', cancel_animation)