Пример #1
0
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)
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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
Пример #11
0
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)