예제 #1
0
파일: worlds.py 프로젝트: penny64/r3-tdw
def delete(world_name):
	global ACTIVE_WORLD

	if not world_name in WORLDS:
		raise Exception('World does not exist: %s' % world_name)

	for entity_id in WORLDS[world_name]['entities']:
		entities.delete_entity_via_id(entity_id)

	logging.debug('Deleted world: %s' % world_name)

	if ACTIVE_WORLD == world_name:
		ACTIVE_WORLD = None

	del WORLDS[world_name]
예제 #2
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
예제 #3
0
def handle_input(entity_id):
	if not entity_id in entities.ENTITIES or not 'player' in entities.ENTITIES[entity_id]:
		if controls.key_pressed(' '):
			battlefield.clean()
			battlefield.create_player()
			battlefield.spawn_enemies()
		
		return False
	
	if not clock.is_ticking() and controls.key_pressed(' '):
		clock.hang_for(0)
	
	_entity = entities.get_entity(entity_id)
	_move_speed = _entity['speed']
	
	if controls.key_held('s'):
		#entities.trigger_event(_entity, 'accelerate', velocity=[0, _move_speed])
		entities.trigger_event(_entity, 'set_direction', direction=270)
		entities.trigger_event(_entity, 'thrust')
	
	if controls.key_held('a'):
		#entities.trigger_event(_entity, 'accelerate', velocity=[-_move_speed, 0])
		entities.trigger_event(_entity, 'set_direction', direction=180)
		entities.trigger_event(_entity, 'thrust')
	
	if controls.key_held('d'):
		#entities.trigger_event(_entity, 'accelerate', velocity=[_move_speed, 0])
		entities.trigger_event(_entity, 'set_direction', direction=0)
		entities.trigger_event(_entity, 'thrust')
	
	if controls.key_held('w'):
		#entities.trigger_event(_entity, 'accelerate', velocity=[0, -_move_speed])
		entities.trigger_event(_entity, 'set_direction', direction=90)
		entities.trigger_event(_entity, 'thrust')
	
	if controls.key_pressed('q'):
		entities.trigger_event(_entity,
		                       'create_timer',
		                       time=120,
		                       enter_callback=lambda entity: entities.trigger_event(_entity, 'set_maximum_velocity', velocity=[80, 80]) and entities.trigger_event(_entity, 'set_speed', speed=80),
		                       exit_callback=lambda entity: entities.trigger_event(_entity, 'set_maximum_velocity', velocity=[30, 30]))
	
	if controls.key_pressed('v'):
		for entity_id in entities.get_sprite_groups(['hazards', 'enemies']):
			entities.delete_entity_via_id(entity_id)
	
	if controls.key_held_ord(controls.NUM_1):
		entities.trigger_event(_entity, 'shoot', direction=225)
	
	if controls.key_held_ord(controls.NUM_2):
		entities.trigger_event(_entity, 'shoot', direction=270)
	
	if controls.key_held_ord(controls.NUM_3):
		entities.trigger_event(_entity, 'shoot', direction=315)
	
	if controls.key_held_ord(controls.NUM_4):
		entities.trigger_event(_entity, 'shoot', direction=180)
	
	if controls.key_held_ord(controls.NUM_6):
		entities.trigger_event(_entity, 'shoot', direction=0)
	
	if controls.key_held_ord(controls.NUM_7):
		entities.trigger_event(_entity, 'shoot', direction=135)
	
	if controls.key_held_ord(controls.NUM_8):
		entities.trigger_event(_entity, 'shoot', direction=90)
	
	if controls.key_held_ord(controls.NUM_9):
		entities.trigger_event(_entity, 'shoot', direction=45)
	
	if controls.key_held_ord(controls.NUM_5):
		entities.trigger_event(_entity, 'shoot_alt')
	
	if controls.key_held('x'):
		battlefield.clean()