예제 #1
0
def delete(entity):
	time.sleep(.75)
	display.clear_text_group('bot_center')
	
	#TODO: Let menu take over
	display.CAMERA['zoom_speed'] = .09
	display.CAMERA['next_zoom'] = 4.5
	display.CAMERA['camera_move_speed'] = 0.02
	
	#NOTERIETY -= entities.get_entity_group('enemies')
	
	events.unregister_event('camera', handle_camera)
	menu.setup_main_menu()
	
	_enemy_amount = len(entities.get_entity_group('enemies'))
	
	if _enemy_amount>=3:
		_loss_string = 'Pirates spread the news of your death...'
	elif _enemy_amount:
		_loss_string = 'People think a little less of you now...'
	else:
		_loss_string = 'Only the machines saw your death...'
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.25,
	                   _loss_string,
	                   text_group='bot_center',
	                   color=(255, 0, 0, 0),
	                   show_for=6,
	                   fade_in_speed=4,
	                   center=True)
예제 #2
0
def tick(entity):
	entity['recoil_time'] -= 1
	
	if not entity['owner_id'] in entities.ENTITIES:
		entities.unregister_event(entity, 'tick', tick)
		
		return False
	
	if entity['recoil_time']>0:
		return False
	elif not entity['rounds']:
		if entity['reload_time']:
			if entity['owner_id'] in entities.ENTITIES and 'player' in entities.get_entity(entity['owner_id']) and entity['reload_time'] == entity['reload_time_max']:
				display.print_text(0, 0, 'RELOADING', show_for=(entity['reload_time']/display.get_tps())*2, fade_out_speed=255)
				
			entity['reload_time'] -= 1
		else:
			entity['reload_time'] = entity['reload_time_max']
			entity['recoil_time'] = 1
			entity['rounds'] = entity['max_rounds']
			entity['firing'] = False
			entities.unregister_event(entity, 'tick', tick)
		
		return False
	
	_owner = entities.get_entity(entity['owner_id'])
	
	if 'shoot_direction' in entity:
		_direction = entity['shoot_direction']
	elif 'shoot_direction' in _owner:
		_direction = _owner['shoot_direction']
	else:
		_direction = _owner['direction']
	
	if entity['kickback']:
		entities.trigger_event(entities.get_entity(entity['owner_id']), 'push', velocity=numbers.velocity(_direction+180, entity['kickback']))
	
	if entity['missile']:
		bullet.create_missile(_owner['position'][0],
		                      _owner['position'][1],
		                      _direction,
		                      entity['speed'],
		                      'bullet.png',
		                      entity['owner_id'],
		                      turn_rate=entity['turn_rate'],
		                      tracking=entity['tracking'],
		                      radius=entity['damage_radius'])
	
	if entity['bullet']:
		bullet.create_bullet(_owner['position'][0],
		                     _owner['position'][1],
		                     _direction+random.randint(-entity['spray'], entity['spray']),
		                     entity['speed'],
		                     'bullet.png',
		                     entity['owner_id'],
		                     scale=.6,
		                     radius=entity['damage_radius'])
	
	entity['recoil_time'] = entity['recoil_time_max']
	entity['rounds'] -= 1
예제 #3
0
def boss_victory(entity, victory_text='Boss Defeated'):
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.6,
	                   victory_text,
	                   color=(255, 255, 255, 255),
	                   show_for=1.5,
	                   font_size=42,
	                   center=True)
예제 #4
0
def unlock_chaingun():
    display.print_text(
        display.get_window_size()[0] / 2,
        display.get_window_size()[1] * 0.30,
        "Unlocked: Ivan's Chaingun",
        color=(255, 255, 255, 150),
        font_size=18,
        center=True,
        show_for=2,
    )
예제 #5
0
파일: ui.py 프로젝트: witheld9/vector-kill
def boot():
	events.register_event('tick', tick)
	display.print_text(5,
	                   10,
	                   'flagsdev, 2014',
	                   fade_in_speed=2,
	                   show_for=4)
	display.print_text(5,
	                   24,
	                   '<b>Vector:Kill: Suicide Ships (Prototype)</b>',
	                   color=(200, 200, 200, 0),
	                   fade_in_speed=4,
	                   show_for=5)
예제 #6
0
def draw_menu():
	_i = 0
	
	display.clear_text_group('menu')
	
	for menu_item in MENU:
		_text = menu_item['text']
		
		if _i == MENU_INDEX:
			_text = '> '+_text+' <'
		
		display.print_text(display.get_window_size()[0]/2,
		                   (display.get_window_size()[1]*.65)-(_i*24),
		                   _text,
		                   show_for=-1,
		                   center=True,
		                   text_group='menu')
		_i += 1
예제 #7
0
def system_input():
	if key_held('o'):
		display.CAMERA['next_zoom'] -= .1
	elif key_held('p'):
		display.CAMERA['next_zoom'] += .1
	elif key_held('['):
		display.CAMERA['next_zoom'] = 2.5
	elif key_pressed('p'):
		_entities = set(entities.ENTITIES.keys())
		_i = 0
		for entity_group in entities.GROUPS:
			display.print_text(0, display.get_window_size()[1]-(_i*14), '%s: %s' % (entity_group, len(entities.GROUPS[entity_group])), fade_out_speed=255)
			_entities -= set(entities.GROUPS[entity_group])
			_i += 1
		
		display.print_text(0, display.get_window_size()[1]-(_i*14), 'Total: %s' % len(entities.ENTITIES), fade_out_speed=255)
		print 'Stranded ents:', len(_entities)
		
		for entity in _entities:
			_entity = entities.ENTITIES[entity]
			import pprint
			pp = pprint.PrettyPrinter(indent=4)
			
			print pp.pprint(_entity)
			break
		
		_i += 1
		
		for group_name in display.SPRITE_GROUPS:
			display.print_text(0, display.get_window_size()[1]-(_i*14), '%s: %s' % (group_name, len(display.SPRITE_GROUPS[group_name]['sprites'])), fade_out_speed=255)
			_i += 1
	elif key_pressed('z'):
		display.screenshot()
예제 #8
0
def weapon_selection():
	global MENU_INDEX, MENU
	
	MENU_INDEX = 0
	MENU = [{'text': 'None', 'callback': start_arena},
	        {'text': 'Chaingun', 'callback': lambda: start_arena(weapon='chaingun')},
	        {'text': 'Back', 'callback': setup_main_menu}]
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.8,
	                   'VECTOR:KILL',
	                   color=(0, 255, 0, 100),
	                   font_name='Thin Design',
	                   font_size=42,
	                   center=True,
	                   show_for=-1,
	                   text_group='logo')
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.20,
	                   'Next unlock:',
	                   text_group='bot_center',
	                   color=(238, 221, 130, 255),
	                   show_for=-1,
	                   center=True)
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.15,
	                   'Ivan\'s Chaingun',
	                   text_group='bot_center',
	                   color=(255, 215, 0, 255),
	                   show_for=-1,
	                   center=True)
	
	draw_menu()
예제 #9
0
def loop():
	global TRANSITION_PAUSE, ANNOUNCE, NOTERIETY
	
	if entities.get_entity_group('players') and not entities.get_entity_group('enemies') and not entities.get_entity_group('hazards'):
		if TRANSITION_PAUSE:
			if ANNOUNCE:
				ANNOUNCE = False
				
				display.print_text(display.get_window_size()[0]/2,
				                   display.get_window_size()[1]*.95,
				                   'WAVE CLEARED',
				                   color=(200, 200, 200, 255),
				                   text_group='bot_center',
				                   show_for=2,
				                   center=True)
			
			TRANSITION_PAUSE -= 1
			
			return False
		
		NOTERIETY += LEVEL
		spawn_enemies()
예제 #10
0
def loop():
    global TRANSITION_PAUSE, ANNOUNCE, NOTERIETY

    if entities.get_entity_group('players') and not entities.get_entity_group(
            'enemies') and not entities.get_entity_group('hazards'):
        if TRANSITION_PAUSE:
            if ANNOUNCE:
                ANNOUNCE = False

                display.print_text(display.get_window_size()[0] / 2,
                                   display.get_window_size()[1] * .95,
                                   'WAVE CLEARED',
                                   color=(200, 200, 200, 255),
                                   text_group='bot_center',
                                   show_for=2,
                                   center=True)

            TRANSITION_PAUSE -= 1

            return False

        NOTERIETY += LEVEL
        spawn_enemies()
예제 #11
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))
예제 #12
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))
예제 #13
0
def setup_main_menu():
	global MENU
	
	events.register_event('input', control)
	events.register_event('loop', battlefield.loop_attract)
	events.register_event('camera', action_camera)
	battlefield.create(player=False)
	display.create_text_group('logo')
	display.create_text_group('menu')
	
	MENU = [{'text': 'Planet', 'callback': start_planet},
	        {'text': 'Arena', 'callback': weapon_selection},
	        {'text': 'Quit', 'callback': shutdown}]
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.8,
	                   'VECTOR:KILL',
	                   color=(0, 255, 0, 100),
	                   font_name='Thin Design',
	                   font_size=42,
	                   center=True,
	                   show_for=-1,
	                   text_group='logo')
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.20,
	                   'Next unlock:',
	                   text_group='bot_center',
	                   color=(238, 221, 130, 255),
	                   show_for=-1,
	                   center=True)
	
	display.print_text(display.get_window_size()[0]/2,
	                   display.get_window_size()[1]*.15,
	                   'Ivan\'s Chaingun',
	                   text_group='bot_center',
	                   color=(255, 215, 0, 255),
	                   show_for=-1,
	                   center=True)
	
	draw_menu()
예제 #14
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
예제 #15
0
def score(entity, target_id, amount=0, text=''):
	display.print_text(0, 10+(len(display.LABELS)*15), '%s (<b>+%s</b>)' % (text, amount), color=(0, 240, 0, 255), show_for=1.5)
	
	if target_id in entities.ENTITIES and abs(entity['shoot_direction']-numbers.direction_to(entity['position'], entities.get_entity(target_id)['position']))<45:
		display.print_text(0, 10+(len(display.LABELS)*15), 'FRENZY!!!', color=(0, 240, 0, 255), show_for=1.5)
예제 #16
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