Exemplo n.º 1
0
def load_map(name):
	_map = {}
	
	with open('%s.dat' % name, 'r') as _file:
		_x = 0
		_y = 0
		
		for line in _file.readlines():
			_x = 0
			
			for tile in [int(c) for c in line if not c == '\n']:
				_map['%s,%s' % (_x*100, _y*100)] = {'solid': False}
				
				if tile == 1:
					_map['%s,%s' % (_x*100, _y*100)]['solid'] = True
					_tile = entities.create_entity('tiles_foreground')
					_map['%s,%s' % (_x*100, _y*100)]['tile'] = _tile['_id']
					_sprite = effects.create_image(_x*100, _y*100, 'wall_full.png')
					_id = _sprite['_id']
					
					entities.register_event(_tile, 'delete', lambda _entity: entities.delete_entity_via_id(_id))
					
					_sprite['sprite'].image.anchor_x = 0
					_sprite['sprite'].image.anchor_y = 0
				
				_x += 1
			_y += 1
	
	return _map
Exemplo n.º 2
0
def create_flea(x=0, y=0, hazard=False):
	if hazard:
		_group = 'hazards'
	else:
		_group = 'enemies'
	
	_entity = create(sprite_name='diamond_body.png', group=_group, x=x, y=y, acceleration=.4, speed=30, max_velocity=30, turn_rate=0.8)
	_entity['current_target'] = None
	_entity['fire_rate'] = 0
	_entity['fire_rate_max'] = 20
	_entity['weapon_id'] = weapons.create(_entity['_id'], rounds=3, recoil_time=15, speed=30, tracking=False)['_id']
	
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'diamond_turret.png',
	                     parent_entity=_entity)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'diamond_drive.png',
	                     parent_entity=_entity,
	                     rotate_by=3)
	
	entities.register_event(_entity, 'moved', set_direction)
	entities.register_event(_entity, 'tick', tick_energy_ship)
	entities.register_event(_entity, 'tick', tick_flea)
	entities.register_event(_entity, 'tick', tick_turret)
	entities.register_event(_entity, 'shoot', lambda entity: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot'))
	
	return _entity
Exemplo n.º 3
0
def create_image(x, y, sprite_name, parent_entity=None, rotate_by=0, rotate_with_parent=False, background=False, scale=1):
	_entity = entities.create_entity(group='effects')
	
	if parent_entity:
		_entity['parent_entity'] = parent_entity['_id']
	else:
		_entity['parent_entity'] = None
	
	_entity['rotate_by'] = rotate_by
	_entity['rotate_with_parent'] = rotate_with_parent
	
	movement.register_entity(_entity, x=x, y=y, no_tick=True)
	entities.register_event(_entity, 'loop', tick_image)
	
	if parent_entity:
		entities.register_event(parent_entity, 'delete', lambda parent_entity: entities.delete_entity(_entity))
	
	if background == 1:
		sprites.register_entity(_entity, 'effects_background', sprite_name, scale=scale)
	elif background == 2:
		sprites.register_entity(_entity, 'effects_background_bottom', sprite_name, scale=scale)
	else:
		sprites.register_entity(_entity, 'effects_foreground', sprite_name, scale=scale)
	
	return _entity
Exemplo n.º 4
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
Exemplo n.º 5
0
def create_player():
	_player = ships.create_energy_ship()
	_player['player'] = True
	
	player.register_entity(_player)
	events.register_event('input', player.handle_input, _player['_id'])
	events.register_event('camera', player.handle_camera, _player['_id'])
	entities.register_event(_player, 'delete', player.delete)
Exemplo n.º 6
0
def create_laser(x, y, direction, owner_id, damage=12, length=20):
	_vel = numbers.velocity(direction, length)
	
	for i in range(length):
		_vel = numbers.velocity(direction, 3*(length*i))
		_bullet = create(x+_vel[0], y+_vel[1], direction, 0, 'laser.png', owner_id, damage=damage, life=10)
		entities.trigger_event(_bullet, 'set_rotation', degrees=direction)
		entities.register_event(_bullet, 'hit', hit_laser)
Exemplo n.º 7
0
def create_gravity_well(x=0, y=0, kill_engines=True, strength=0.1, min_distance=3000):
	_entity = entities.create_entity(group='items')
	_entity['position'] = (x, y)
	_entity['min_distance'] = min_distance
	_entity['strength'] = strength
	_entity['kill_engines'] = kill_engines
	
	entities.register_event(_entity, 'tick', _gravity_well)
Exemplo n.º 8
0
def create_missile_turret(x=0, y=0):
	_entity = create(x=x, y=y, group='hazards', sprite_name='eyemine_body.png', speed=5, acceleration=1, max_velocity=5)
	_entity['weapon_id'] = weapons.create(_entity['_id'], rounds=3, recoil_time=20, tracking=True, turn_rate=.02)['_id']
	
	entities.register_event(_entity, 'shoot', lambda entity: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot'))
	entities.register_event(_entity, 'tick', tick_turret)
	
	return _entity
Exemplo n.º 9
0
def shoot(entity, direction=-1):
	if entity['firing']:
		return False
	
	entities.register_event(entity, 'tick', tick)
	
	if not direction == -1:
		entity['shoot_direction'] = direction
	
	entity['firing'] = True
Exemplo n.º 10
0
def create_player(x=0, y=0):
	_player = ships.create_energy_ship(x=x, y=y)
	_player['player'] = True
	
	player.register_entity(_player)
	events.register_event('input', player.handle_input, _player['_id'])
	events.register_event('camera', player.handle_camera, _player['_id'], min_zoom=5, max_zoom=14, max_enemy_distance=10000, center_distance=5000)
	entities.register_event(_player, 'delete', player.delete)
	entities.register_event(_player, 'hit_edge', lambda entity: entities.trigger_event(entity, 'hit', damage=100))
	entities.trigger_event(_player, 'push', velocity=(30, 30))
Exemplo n.º 11
0
def create_ivan_large(x=0, y=0):
	_entity = create(sprite_name='boss3.png', group='hazards', scale=2.0, x=x, y=y, acceleration=.4, speed=0, max_velocity=0, turn_rate=0.8, death_time=40, hp=1000)
	_entity['current_target'] = None
	_entity['fire_rate'] = 0
	_entity['fire_rate_max'] = 20
	_entity['collision_radius'] = 1000
	_entity['cycle'] = 'shoot'
	_entity['shoot_cycle_max'] = 3
	_entity['shoot_cycle'] = 3
	_entity['spawn_cycle_max'] = 5
	_entity['spawn_cycle'] = 5
	_entity['warmup_cycles'] = 1
	
	_entity['weapon_id'] = weapons.create(_entity['_id'],
	                                      rounds=25,
	                                      recoil_time=1,
	                                      reload_time=30,
	                                      damage_radius=40,
	                                      speed=140,
	                                      missile=False,
	                                      bullet=True)['_id']
	timers.register_entity(_entity)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'boss3_core.png',
	                     scale=2.0,
	                     parent_entity=_entity,
	                     background=False)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'boss3_shield1.png',
	                     scale=2.0,
	                     rotate_by=-1,
	                     parent_entity=_entity,
	                     background=False)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'boss3_shield2.png',
	                     scale=2.0,
	                     rotate_by=0.5,
	                     parent_entity=_entity,
	                     background=False)
	entities.trigger_event(_entity,
	                       'create_timer',
	                       repeat=-1,
	                       time=100,
	                       repeat_callback=lambda entity: entities.trigger_event(_entity, 'shoot'))
	entities.register_event(_entity, 'moved', set_direction)
	entities.register_event(_entity, 'kill', boss_victory)
	entities.register_event(_entity, 'dying', boss_dying)
	entities.register_event(_entity, 'explode', boss_explode)
	entities.register_event(_entity, 'shoot', ivan_cycles)
	
	return _entity
Exemplo n.º 12
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)
Exemplo n.º 13
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)
Exemplo n.º 14
0
def create_eyemine(x=0, y=0, max_explode_velocity=40):
	_entity = create(x=x, y=y, group='hazards', sprite_name='eyemine_body.png', speed=35, acceleration=0.1, max_velocity=35)
	_entity['max_explode_velocity'] = max_explode_velocity
	
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'eyemine_subbody.png',
	                     parent_entity=_entity,
	                     rotate_by=3,
	                     background=True)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'eyemine_eye1.png',
	                     parent_entity=_entity,
	                     background=False)
	effects.create_image(_entity['position'][0],
	                     _entity['position'][1],
	                     'eyemine_eye2.png',
	                     parent_entity=_entity,
	                     rotate_with_parent=True,
	                     background=False)
	entities.register_event(_entity, 'tick', tick_eyemine)
	entities.register_event(_entity,
	                        'hit',
	                        lambda _entity, target_id, **kwargs: target_id in entities.ENTITIES and entities.trigger_event(_entity,
	                                                                                                                       'set_direction',
	                                                                                                                       direction=numbers.direction_to(_entity['position'],
	                                                                                                                                                      entities.get_entity(target_id)['position'])))
	entities.register_event(_entity, 'hit', lambda _entity, target_id, **kwargs: ai.track_target(_entity, target_id))
	entities.register_event(_entity, 'hit_edge', lambda entity: entities.trigger_event(entity, 'kill'))
	ai.guard(_entity)
	
	return _entity
Exemplo n.º 15
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
Exemplo n.º 16
0
def create_gun_turret(x=0, y=0):
	_entity = create(x=x, y=y, group='hazards', sprite_name='eyemine_body.png', speed=5, acceleration=1, max_velocity=5)
	_entity['weapon_id'] = weapons.create(_entity['_id'],
	                                      rounds=10,
	                                      recoil_time=2,
	                                      reload_time=40,
	                                      damage_radius=40,
	                                      speed=140,
	                                      missile=False,
	                                      bullet=True)['_id']
	
	entities.register_event(_entity, 'shoot', lambda entity: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot'))
	entities.register_event(_entity, 'tick', tick_turret)
	
	return _entity
Exemplo n.º 17
0
def create_missile(x, y, direction, speed, sprite_name, owner_id, life=3000, scale=.2, turn_rate=.15, tracking=True, drunk=True, radius=50):
	_bullet = create(x, y, direction, speed, sprite_name, owner_id, life=life, turn_rate=turn_rate, radius=radius)
	_owner = entities.get_entity(_bullet['owner_id'])
	_bullet['sprite'].anchor_x = 0
	_bullet['sprite'].anchor_y = sprites.get_size(_bullet['sprite'])[1]/2
	
	entities.trigger_event(_bullet, 'set_scale', scale=scale)
	entities.register_event(_bullet, 'tick', tick_missile)
	entities.register_event(_bullet, 'hit', hit_missile)
	
	if drunk:
		entities.register_event(_bullet, 'tick', tick_drunk)
	
	if tracking:
		_bullet['target_id'] = ai.find_target(_owner, max_distance=1600)
		
		if _bullet['target_id']:
			_target = entities.get_entity(_bullet['target_id'])
			
			entities.register_event(_bullet, 'tick', tick_track)
			entities.register_event(_target,
			                        'delete',
			                        lambda target: _bullet['_id'] in entities.ENTITIES and entities.unregister_event(_bullet,
			                                                                                                         'tick',
			                                                                                                         tick_track))
			
			if 'player' in _owner and _owner['player']:
				effects.create_particle(_target['position'][0],
					                    _target['position'][1],
					                    'crosshair.png',
					                    background=False,
					                    scale_rate=.95,
					                    fade_rate=.98,
					                    spin=random.choice([-3, -6, 3, 6]))
	else:
		_bullet['target_id'] = None
	
	_bullet['engine_power'] = 100
	
	return _bullet
Exemplo n.º 18
0
def create_player():
	_player = ships.create_energy_ship()
	_player['player'] = True
	
	player.register_entity(_player)
	events.register_event('input', player.handle_input, _player['_id'])
	events.register_event('camera', player.handle_camera, _player['_id'])
	entities.register_event(_player, 'score', player.score)
	entities.register_event(_player, 'delete', player.delete)
	entities.register_event(_player, 'kill', lambda entity: events.unregister_event('input', player.handle_input))
	entities.register_event(_player, 'kill', lambda entity: display.print_text(display.get_window_size()[0]/2,
	                                                                           display.get_window_size()[1]*.75,
	                                                                           'Awarded medal:',
	                                                                           color=(255, 0, 0, 50),
	                                                                           font_size=18,
	                                                                           show_for=3.5,
	                                                                           fade_in_speed=6,
	                                                                           center=True))
Exemplo n.º 19
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)
Exemplo n.º 20
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)
Exemplo n.º 21
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
Exemplo n.º 22
0
def create_player():
    _player = ships.create_energy_ship()
    _player['player'] = True

    player.register_entity(_player)
    events.register_event('input', player.handle_input, _player['_id'])
    events.register_event('camera', player.handle_camera, _player['_id'])
    entities.register_event(_player, 'score', player.score)
    entities.register_event(_player, 'delete', player.delete)
    entities.register_event(
        _player, 'kill',
        lambda entity: events.unregister_event('input', player.handle_input))
    entities.register_event(
        _player, 'kill',
        lambda entity: display.print_text(display.get_window_size()[0] / 2,
                                          display.get_window_size()[1] * .75,
                                          'Awarded medal:',
                                          color=(255, 0, 0, 50),
                                          font_size=18,
                                          show_for=3.5,
                                          fade_in_speed=6,
                                          center=True))
Exemplo n.º 23
0
def create_particle(x, y, sprite_name, background=True, scale=1, rotation=0, friction=0, scale_min=0.15, scale_max=5, direction=0, speed=0, scale_rate=1.0, fade_rate=1.0, spin=0, flashes=-1, flash_chance=0, streamer=False, streamer_chance=0.3, swerve_rate=0, swerve_speed=25, force_smooth_draw=False):
	_entity = entities.create_entity()
	_entity['scale_rate'] = scale_rate
	_entity['scale_min'] = scale_min
	_entity['scale_max'] = scale_max
	_entity['fade_rate'] = fade_rate
	_entity['flash_chance'] = flash_chance
	_entity['flashes'] = flashes
	_entity['spin'] = spin
	_entity['streamer'] = streamer
	_entity['swerve_rate'] = swerve_rate
	_entity['swerve_speed'] = swerve_speed
	_entity['swerve_speed_max'] = swerve_speed
	_entity['NO_BOUNCE'] = True
	
	if streamer:
		_entity['sprite_name'] = sprite_name
		_entity['background'] = background
		_entity['streamer_chance'] = streamer_chance
	
	movement.register_entity(_entity, x=x, y=y)
	entities.add_entity_to_group('effects', _entity)
	entities.trigger_event(_entity, 'set_direction', direction=direction)
	entities.trigger_event(_entity, 'set_speed', speed=speed)
	entities.trigger_event(_entity, 'thrust')
	
	if _entity['speed'] or force_smooth_draw:
		_smooth_draw = True
	else:
		_smooth_draw = False
		entities.register_event(_entity, 'moved', lambda entity, **kwargs: entities.trigger_event(entity, 'redraw'))
		
		#TODO: Hack
		entities.register_event(_entity, 'moved', lambda entity, **kwargs: entities.unregister_event(entity, 'tick', movement.tick))
	
	if background:
		sprites.register_entity(_entity, 'effects_background', sprite_name, scale=scale, smooth_draw=_smooth_draw)
	else:
		sprites.register_entity(_entity, 'effects_foreground', sprite_name, scale=scale, smooth_draw=_smooth_draw)
	
	if swerve_rate:
		_entity['sprite'].opacity = 0
	
	entities.register_event(_entity, 'tick', tick_particle)
	entities.trigger_event(_entity, 'set_friction', friction=friction)
	entities.trigger_event(_entity, 'set_rotation', degrees=rotation)
	
	return _entity
Exemplo n.º 24
0
def create_energy_ship(x=0, y=0):
	_entity = create(x=x, y=y, group='players', sprite_name='ball.png', speed=19, acceleration=.3, max_velocity=30, turn_rate=0.5, death_time=35, hp=60)
	_entity['weapon_id'] = weapons.create(_entity['_id'],
	                                      rounds=35,
	                                      recoil_time=0,
	                                      reload_time=48,
	                                      kickback=3,
	                                      damage_radius=65,
	                                      spray=3,
	                                      speed=200,
	                                      missile=False,
	                                      bullet=True)['_id']
	_entity['alt_weapon_id'] = weapons.create(_entity['_id'], rounds=6, recoil_time=5, reload_time=28, speed=60, tracking=True)['_id']
	
	timers.register_entity(_entity)
	entities.register_event(_entity, 'tick', tick_energy_ship)
	entities.register_event(_entity, 'shoot', lambda entity, direction=0: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot', direction=direction))
	entities.register_event(_entity, 'shoot_alt', lambda entity: entities.trigger_event(entities.get_entity(_entity['alt_weapon_id']), 'shoot'))
	
	return _entity
Exemplo n.º 25
0
def guard(entity):
	register_entity(entity)
	entities.register_event(entity, 'tick', tick_guard)
Exemplo n.º 26
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)
Exemplo n.º 27
0
def spawn_enemies():
	global TRANSITION_PAUSE, ANNOUNCE, LEVEL
	
	if LEVEL == 5:
		_boss = ships.create_ivan(x=random.randint(0, worlds.get_size()[0]), y=random.randint(0, worlds.get_size()[1]))
		_details = ['<b>Stolovitzky, Ivan</b>',
		            '<i>Suicidal maniac</i>',
		            'Wanted for: <b>Intergalactic Manslaughter</b>']
		
		display.camera_zoom(1.5)
		display.camera_focus_on(_boss['position'])
		display.clear_text_group('bot_center')
		display.print_text(display.get_window_size()[0]/2,
		                   display.get_window_size()[1]*.75,
		                   'CRAZY IVAN',
		                   font_size=42,
		                   text_group='bot_center',
		                   center=True,
		                   color=(0, 240, 0, 50),
		                   fade_in_speed=24,
		                   show_for=3)
		
		_i = 0
		for detail_text in _details:
			display.print_text(display.get_window_size()[0]*.6,
			                   display.get_window_size()[1]*.65-(24*_i),
			                   detail_text,
			                   font_size=20,
			                   text_group='bot_center',
			                   color=(240, 240, 240, 0),
			                   fade_in_speed=(len(_details)-_i)*2,
			                   show_for=3)
			_i += 1
		
		clock.hang_for(180)
		entities.register_event(_boss, 'kill', lambda entity: progress.unlock_chaingun())
		
		TRANSITION_PAUSE = 240
		ANNOUNCE = True
		LEVEL += 1
		
		return False
	
	if not LEVEL % 4:
		for i in range(1*(LEVEL-1)):
			ships.create_flea(x=random.randint(0, worlds.get_size()[0]), y=random.randint(0, worlds.get_size()[1]))
		
		TRANSITION_PAUSE = 120
		ANNOUNCE = True
		LEVEL += 1
		
		return False
	
	for i in range(1*(LEVEL-1)):
		ships.create_flea(x=random.randint(0, worlds.get_size()[0]), y=random.randint(0, worlds.get_size()[1]))
	
	_eyemine_spawn_point = (random.randint(worlds.get_size()[0]*.25, worlds.get_size()[0]*.75),
	                        random.randint(worlds.get_size()[1]*.25, worlds.get_size()[1]*.75))
	for i in range(random.randint(2, 4)*LEVEL):
		_rand_distance = 350+(120*LEVEL)
		_x_mod = random.randint(-_rand_distance, _rand_distance)
		_y_mod = random.randint(-_rand_distance, _rand_distance)
		ships.create_eyemine(x=_eyemine_spawn_point[0]+_x_mod, y=_eyemine_spawn_point[1]+_y_mod)
	
	_move = random.randint(0, 1)
	
	if _move:
		_move_direction = random.randint(0, 359)
	
	for i in range(random.randint(1, 2)*LEVEL):
		_x, _y = random.randint(worlds.get_size()[0]*.25, worlds.get_size()[0]*.75), random.randint(worlds.get_size()[1]*.25, worlds.get_size()[1]*.75)
		_turret = ships.create_missile_turret(x=_x, y=_y)
		
		if _move:
			entities.trigger_event(_turret, 'set_direction', direction=_move_direction)
			entities.trigger_event(_turret, 'set_minimum_velocity', velocity=[-5, -5])
			entities.trigger_event(_turret, 'set_maximum_velocity', velocity=[5, 5])
			entities.trigger_event(_turret, 'thrust')
	
	if LEVEL >= 3:
		for i in range(random.randint(1, 2)*(int(round(LEVEL*.25)))):
			_x, _y = random.randint(worlds.get_size()[0]*.25, worlds.get_size()[0]*.75), random.randint(worlds.get_size()[1]*.25, worlds.get_size()[1]*.75)
			_turret = ships.create_gun_turret(x=_x, y=_y)
			
			if _move:
				entities.trigger_event(_turret, 'set_direction', direction=_move_direction)
				entities.trigger_event(_turret, 'set_minimum_velocity', velocity=[-5, -5])
				entities.trigger_event(_turret, 'set_maximum_velocity', velocity=[5, 5])
				entities.trigger_event(_turret, 'thrust')
	
	if 1*(LEVEL-1):
		display.clear_text_group('bot_center')
		display.print_text(display.get_window_size()[0]/2,
		                   display.get_window_size()[1]*.95,
		                   'ENEMY FIGHTERS INBOUND',
		                   color=(0, 240, 0, 255),
		                   text_group='bot_center',
		                   show_for=1.5,
		                   center=True)
	
	LEVEL += 1
	ANNOUNCE = True
	TRANSITION_PAUSE = 120
Exemplo n.º 28
0
def create_ivan(x=0, y=0):
	_entity = create(sprite_name='boss1.png', group='enemies', x=x, y=y, acceleration=.4, speed=3, max_velocity=3, turn_rate=0.8, death_time=40, hp=100)
	_entity['current_target'] = None
	_entity['fire_rate'] = 0
	_entity['fire_rate_max'] = 20
	_entity['weapon_id'] = weapons.create(_entity['_id'],
	                                      rounds=25,
	                                      recoil_time=1,
	                                      reload_time=30,
	                                      damage_radius=40,
	                                      speed=140,
	                                      missile=False,
	                                      bullet=True)['_id']
	
	entities.register_event(_entity, 'moved', set_direction)
	entities.register_event(_entity, 'tick', tick_energy_ship)
	entities.register_event(_entity, 'tick', tick_flea)
	entities.register_event(_entity, 'tick', tick_turret)
	entities.register_event(_entity, 'kill', boss_victory)
	entities.register_event(_entity, 'dying', boss_dying)
	entities.register_event(_entity, 'explode', boss_explode)
	entities.register_event(_entity, 'shoot', lambda entity: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot'))
	
	return _entity
Exemplo n.º 29
0
def track_target(entity, target_id):
    register_entity(entity)
    entities.register_event(entity, 'tick', tick_track)

    entity['current_target'] = target_id
Exemplo n.º 30
0
def spawn_enemies():
    global TRANSITION_PAUSE, ANNOUNCE, LEVEL

    if LEVEL == 5:
        _boss = ships.create_ivan(x=random.randint(0,
                                                   worlds.get_size()[0]),
                                  y=random.randint(0,
                                                   worlds.get_size()[1]))
        _details = [
            '<b>Stolovitzky, Ivan</b>', '<i>Suicidal maniac</i>',
            'Wanted for: <b>Intergalactic Manslaughter</b>'
        ]

        display.camera_zoom(1.5)
        display.camera_focus_on(_boss['position'])
        display.clear_text_group('bot_center')
        display.print_text(display.get_window_size()[0] / 2,
                           display.get_window_size()[1] * .75,
                           'CRAZY IVAN',
                           font_size=42,
                           text_group='bot_center',
                           center=True,
                           color=(0, 240, 0, 50),
                           fade_in_speed=24,
                           show_for=3)

        _i = 0
        for detail_text in _details:
            display.print_text(display.get_window_size()[0] * .6,
                               display.get_window_size()[1] * .65 - (24 * _i),
                               detail_text,
                               font_size=20,
                               text_group='bot_center',
                               color=(240, 240, 240, 0),
                               fade_in_speed=(len(_details) - _i) * 2,
                               show_for=3)
            _i += 1

        clock.hang_for(180)
        entities.register_event(_boss, 'kill',
                                lambda entity: progress.unlock_chaingun())

        TRANSITION_PAUSE = 240
        ANNOUNCE = True
        LEVEL += 1

        return False

    if not LEVEL % 4:
        for i in range(1 * (LEVEL - 1)):
            ships.create_flea(x=random.randint(0,
                                               worlds.get_size()[0]),
                              y=random.randint(0,
                                               worlds.get_size()[1]))

        TRANSITION_PAUSE = 120
        ANNOUNCE = True
        LEVEL += 1

        return False

    for i in range(1 * (LEVEL - 1)):
        ships.create_flea(x=random.randint(0,
                                           worlds.get_size()[0]),
                          y=random.randint(0,
                                           worlds.get_size()[1]))

    _eyemine_spawn_point = (random.randint(worlds.get_size()[0] * .25,
                                           worlds.get_size()[0] * .75),
                            random.randint(worlds.get_size()[1] * .25,
                                           worlds.get_size()[1] * .75))
    for i in range(random.randint(2, 4) * LEVEL):
        _rand_distance = 350 + (120 * LEVEL)
        _x_mod = random.randint(-_rand_distance, _rand_distance)
        _y_mod = random.randint(-_rand_distance, _rand_distance)
        ships.create_eyemine(x=_eyemine_spawn_point[0] + _x_mod,
                             y=_eyemine_spawn_point[1] + _y_mod)

    _move = random.randint(0, 1)

    if _move:
        _move_direction = random.randint(0, 359)

    for i in range(random.randint(1, 2) * LEVEL):
        _x, _y = random.randint(worlds.get_size()[0] * .25,
                                worlds.get_size()[0] * .75), random.randint(
                                    worlds.get_size()[1] * .25,
                                    worlds.get_size()[1] * .75)
        _turret = ships.create_missile_turret(x=_x, y=_y)

        if _move:
            entities.trigger_event(_turret,
                                   'set_direction',
                                   direction=_move_direction)
            entities.trigger_event(_turret,
                                   'set_minimum_velocity',
                                   velocity=[-5, -5])
            entities.trigger_event(_turret,
                                   'set_maximum_velocity',
                                   velocity=[5, 5])
            entities.trigger_event(_turret, 'thrust')

    if LEVEL >= 3:
        for i in range(random.randint(1, 2) * (int(round(LEVEL * .25)))):
            _x, _y = random.randint(worlds.get_size()[0] * .25,
                                    worlds.get_size()[0] *
                                    .75), random.randint(
                                        worlds.get_size()[1] * .25,
                                        worlds.get_size()[1] * .75)
            _turret = ships.create_gun_turret(x=_x, y=_y)

            if _move:
                entities.trigger_event(_turret,
                                       'set_direction',
                                       direction=_move_direction)
                entities.trigger_event(_turret,
                                       'set_minimum_velocity',
                                       velocity=[-5, -5])
                entities.trigger_event(_turret,
                                       'set_maximum_velocity',
                                       velocity=[5, 5])
                entities.trigger_event(_turret, 'thrust')

    if 1 * (LEVEL - 1):
        display.clear_text_group('bot_center')
        display.print_text(display.get_window_size()[0] / 2,
                           display.get_window_size()[1] * .95,
                           'ENEMY FIGHTERS INBOUND',
                           color=(0, 240, 0, 255),
                           text_group='bot_center',
                           show_for=1.5,
                           center=True)

    LEVEL += 1
    ANNOUNCE = True
    TRANSITION_PAUSE = 120
Exemplo n.º 31
0
def guard(entity):
    register_entity(entity)
    entities.register_event(entity, 'tick', tick_guard)
Exemplo n.º 32
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)
Exemplo n.º 33
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)
Exemplo n.º 34
0
def track_target(entity, target_id):
	register_entity(entity)
	entities.register_event(entity, 'tick', tick_track)
	
	entity['current_target'] = target_id
Exemplo n.º 35
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)