Exemplo n.º 1
0
def generate_world(combat_test=False):
    _menu = MENUS[menus.get_menu_by_name('World Generation')]
    _settings = {}

    for entry in _menu['menu']:
        _settings[entry['key']] = entry['values'][entry['value']]

    if _settings['Map'] == 'Generate Map':
        _settings['Map'] = mapgen.generate_map(towns=1,
                                               factories=0,
                                               outposts=2,
                                               forests=1)['name']

    if _settings['World Age'] == 'Day 0':
        _ticks = 10
    elif _settings['World Age'] == '1 Week':
        _ticks = 1000  #30000
    elif _settings['World Age'] == '2 Weeks':
        _ticks = 2000
    elif _settings['World Age'] == '3 Weeks':
        _ticks = 3000
    elif _settings['World Age'] == '4 Weeks':
        _ticks = 4000
    elif _settings['World Age'] == '5 Weeks':
        _ticks = 5000

    maps.load_map(_settings['Map'], cache_map=True)

    worldgen.generate_world(WORLD_INFO['map'],
                            dynamic_spawns=_settings['Dynamic Spawns'],
                            wildlife_spawns=_settings['Wildlife Density'],
                            simulate_ticks=_ticks,
                            save=True,
                            thread=True)
Exemplo n.º 2
0
def generate_world(combat_test=False):
	_menu = MENUS[menus.get_menu_by_name('World Generation')]
	_settings = {}
	
	for entry in _menu['menu']:
		_settings[entry['key']] = entry['values'][entry['value']]
	
	if _settings['Map'] == 'Generate Map':
		_settings['Map'] = mapgen.generate_map(towns=1,
		                                       factories=0,
		                                       outposts=2,
		                                       forests=1)['name']
	
	if _settings['World Age'] == 'Day 0':
		_ticks = 10
	elif _settings['World Age'] == '1 Week':
		_ticks = 1000#30000
	elif _settings['World Age'] == '2 Weeks':
		_ticks = 2000
	elif _settings['World Age'] == '3 Weeks':
		_ticks = 3000
	elif _settings['World Age'] == '4 Weeks':
		_ticks = 4000
	elif _settings['World Age'] == '5 Weeks':
		_ticks = 5000
	
	maps.load_map(_settings['Map'], cache_map=True)
	
	worldgen.generate_world(WORLD_INFO['map'],
		dynamic_spawns=_settings['Dynamic Spawns'],
		wildlife_spawns=_settings['Wildlife Density'],
		simulate_ticks=_ticks,
		save=True,
		thread=True)
Exemplo n.º 3
0
def process_fights():
	_fighters = []
	for life in LIFE.values():
		if life['next_stance']['stance']:
			if sum([abs(i) for i in life['velocity']]):
				continue
			
			if not life['id'] in _fighters:
				_fighters.append(life['id'])
			
			if life['next_stance']['towards']:
				if sum([abs(i) for i in LIFE[life['next_stance']['towards']]['velocity']]):
					life['next_stance']['stance'] = None
					life['next_stance']['towards'] = None
					continue
				
				if numbers.distance(life['pos'], LIFE[life['next_stance']['towards']]['pos'])>1:
					life['next_stance']['stance'] = None
					life['next_stance']['towards'] = None
					continue
				
				if not life['next_stance']['towards'] in _fighters:
					_fighters.append(life['next_stance']['towards'])
	
	if len(_fighters)<=1:
		WORLD_INFO['sub_ticks'] = WORLD_INFO['max_sub_ticks']
		return False
	
	if WORLD_INFO['sub_ticks']:
		WORLD_INFO['sub_ticks'] -= 1
	else:
		WORLD_INFO['sub_ticks'] = WORLD_INFO['max_sub_ticks']
		return False
	
	for _fighter in _fighters:
		if lfe.calculate_velocity(LIFE[_fighter]):
			continue
		
		examine_possible_moves(LIFE[_fighter], _fighters)

		tick(LIFE[_fighter])
	
	perform_moves(_fighters)
	
	_i = 0
	for fighter in _fighters:
		if sum([abs(i) for i in LIFE[fighter]['velocity']]):
			continue
		
		_i += 1
	
	if _i<=1:
		if menus.get_menu_by_name('Advanced Movement')>-1:
			menus.delete_active_menu()
	
	return _fighters
Exemplo n.º 4
0
def main():
	if not '--select' in sys.argv and not '--test' in sys.argv:
		if regenerate_world():
			SETTINGS['running'] = 2
	
	while SETTINGS['running']:
		get_input()
		handle_input()
		
		#Show list of maps if not passed directly
		if SETTINGS['running'] == 1:
			if menus.get_menu_by_name('Maps')>-1 or menus.get_menu_by_name('Buildings')>-1:
				map_selection()
			else:
				create_maps_menu('--test' in sys.argv)
		
		elif SETTINGS['running'] == 2:
			terraform()
		
		elif SETTINGS['running'] == 3:
			chunk_map()
Exemplo n.º 5
0
def main():
	if not '--select' in sys.argv and not '--test' in sys.argv:
		if regenerate_world():
			SETTINGS['running'] = 2
	
	while SETTINGS['running']:
		get_input()
		handle_input()
		
		#Show list of maps if not passed directly
		if SETTINGS['running'] == 1:
			if menus.get_menu_by_name('Maps')>-1 or menus.get_menu_by_name('Buildings')>-1:
				map_selection()
			else:
				create_maps_menu('--test' in sys.argv)
		
		elif SETTINGS['running'] == 2:
			terraform()
		
		elif SETTINGS['running'] == 3:
			chunk_map()
Exemplo n.º 6
0
def examine_possible_moves(p, targets):
	#TODO: Cancel move?
	_moves = {}
	
	#if p['next_stance']['stance']:
	#	return False
	
	for _target in targets:
		target = LIFE[_target]
		if target == p:
			continue
		
		if sum([abs(i) for i in target['velocity']]):
			continue
		
		if 'player' in p:
			_moves[_target] = {'moves': [], 'counters': []}
		
		_next_stance = p['next_stance']['stance']
		_next_target_stance = target['next_stance']['stance']
		_incoming_attack = False
		
		#Target is attacking
		if target['stance'] in target['moves']:
			_incoming_attack = target['stance']
		elif _next_target_stance in target['moves']:
			_incoming_attack = _next_target_stance
		
		if _incoming_attack:
			if not _next_stance in p['moves'][_incoming_attack]['counters']:
				if 'player' in p:
					_moves[_target]['counters'].extend(p['moves'][_incoming_attack]['counters'])
				elif p['moves'][_incoming_attack]['counters']:
					assume_stance(p, random.choice(p['moves'][_incoming_attack]['counters']), towards=_target)
					return False
			
			elif p['stance'] in p['moves'][_incoming_attack]['counters']:
				return True
		
		if 'player' in p:
			_moves[_target]['moves'].extend(p['moves'].keys())
		else:
			assume_stance(p, random.choice(p['moves'].keys()), towards=_target)
			return True
		
		#if _next_stance and _next_stance in p['moves'] and not p['stance'] in p['moves'][_next_stance]['counters']:
		#	assume_stance(p, p['moves'][_next_stance]['counters'][0], towards=_target)
		#	return False
		#elif (not _next_stance or not target['stance'] in p['moves']):
		#	assume_stance(p, random.choice(p['moves'].keys()), towards=_target)
		#	return True
	
	if _moves and menus.get_menu_by_name('Advanced Movement')==-1 and not sum([abs(i) for i in p['velocity']]):
		_menu = []
		
		for target_id in _moves:
			if _moves[target_id]['moves']:
				_menu.append(menus.create_item('title', '%s (Attacks)' % ' '.join(LIFE[target_id]['name']), None))
				
				for move in _moves[target_id]['moves']:
					_menu.append(menus.create_item('single', move, None, move=move, target=target_id))
			
			if _moves[target_id]['counters']:
				_menu.append(menus.create_item('title', '%s (Counters)' % ' '.join(LIFE[target_id]['name']), None))
				
				for move in _moves[target_id]['counters']:
					_menu.append(menus.create_item('single', move, None, move=move, target=target_id))
		
		_m = menus.create_menu(menu=_menu,
		                       position=[1, 1],
		                       title='Advanced Movement',
		                       format_str='$k',
		                       on_select=lambda entry: assume_stance(LIFE[SETTINGS['controlling']],
		                                                             entry['move'],
		                                                             towards=entry['target']),
		                       close_on_select=True)
		menus.activate_menu(_m)
Exemplo n.º 7
0
def examine_possible_moves(p, targets):
    #TODO: Cancel move?
    _moves = {}

    #if p['next_stance']['stance']:
    #	return False

    for _target in targets:
        target = LIFE[_target]
        if target == p:
            continue

        if sum([abs(i) for i in target['velocity']]):
            continue

        if 'player' in p:
            _moves[_target] = {'moves': [], 'counters': []}

        _next_stance = p['next_stance']['stance']
        _next_target_stance = target['next_stance']['stance']
        _incoming_attack = False

        #Target is attacking
        if target['stance'] in target['moves']:
            _incoming_attack = target['stance']
        elif _next_target_stance in target['moves']:
            _incoming_attack = _next_target_stance

        if _incoming_attack:
            if not _next_stance in p['moves'][_incoming_attack]['counters']:
                if 'player' in p:
                    _moves[_target]['counters'].extend(
                        p['moves'][_incoming_attack]['counters'])
                elif p['moves'][_incoming_attack]['counters']:
                    assume_stance(
                        p,
                        random.choice(
                            p['moves'][_incoming_attack]['counters']),
                        towards=_target)
                    return False

            elif p['stance'] in p['moves'][_incoming_attack]['counters']:
                return True

        if 'player' in p:
            _moves[_target]['moves'].extend(p['moves'].keys())
        else:
            assume_stance(p, random.choice(p['moves'].keys()), towards=_target)
            return True

        #if _next_stance and _next_stance in p['moves'] and not p['stance'] in p['moves'][_next_stance]['counters']:
        #	assume_stance(p, p['moves'][_next_stance]['counters'][0], towards=_target)
        #	return False
        #elif (not _next_stance or not target['stance'] in p['moves']):
        #	assume_stance(p, random.choice(p['moves'].keys()), towards=_target)
        #	return True

    if _moves and menus.get_menu_by_name(
            'Advanced Movement') == -1 and not sum(
                [abs(i) for i in p['velocity']]):
        _menu = []

        for target_id in _moves:
            if _moves[target_id]['moves']:
                _menu.append(
                    menus.create_item(
                        'title',
                        '%s (Attacks)' % ' '.join(LIFE[target_id]['name']),
                        None))

                for move in _moves[target_id]['moves']:
                    _menu.append(
                        menus.create_item('single',
                                          move,
                                          None,
                                          move=move,
                                          target=target_id))

            if _moves[target_id]['counters']:
                _menu.append(
                    menus.create_item(
                        'title',
                        '%s (Counters)' % ' '.join(LIFE[target_id]['name']),
                        None))

                for move in _moves[target_id]['counters']:
                    _menu.append(
                        menus.create_item('single',
                                          move,
                                          None,
                                          move=move,
                                          target=target_id))

        _m = menus.create_menu(menu=_menu,
                               position=[1, 1],
                               title='Advanced Movement',
                               format_str='$k',
                               on_select=lambda entry: assume_stance(
                                   LIFE[SETTINGS['controlling']],
                                   entry['move'],
                                   towards=entry['target']),
                               close_on_select=True)
        menus.activate_menu(_m)
Exemplo n.º 8
0
def process_fights():
    _fighters = []
    for life in LIFE.values():
        if life['next_stance']['stance']:
            if sum([abs(i) for i in life['velocity']]):
                continue

            if not life['id'] in _fighters:
                _fighters.append(life['id'])

            if life['next_stance']['towards']:
                if sum([
                        abs(i) for i in LIFE[life['next_stance']['towards']]
                    ['velocity']
                ]):
                    life['next_stance']['stance'] = None
                    life['next_stance']['towards'] = None
                    continue

                if numbers.distance(
                        life['pos'],
                        LIFE[life['next_stance']['towards']]['pos']) > 1:
                    life['next_stance']['stance'] = None
                    life['next_stance']['towards'] = None
                    continue

                if not life['next_stance']['towards'] in _fighters:
                    _fighters.append(life['next_stance']['towards'])

    if len(_fighters) <= 1:
        WORLD_INFO['sub_ticks'] = WORLD_INFO['max_sub_ticks']
        return False

    if WORLD_INFO['sub_ticks']:
        WORLD_INFO['sub_ticks'] -= 1
    else:
        WORLD_INFO['sub_ticks'] = WORLD_INFO['max_sub_ticks']
        return False

    for _fighter in _fighters:
        if lfe.calculate_velocity(LIFE[_fighter]):
            continue

        examine_possible_moves(LIFE[_fighter], _fighters)

        tick(LIFE[_fighter])

    perform_moves(_fighters)

    _i = 0
    for fighter in _fighters:
        if sum([abs(i) for i in LIFE[fighter]['velocity']]):
            continue

        _i += 1

    if _i <= 1:
        if menus.get_menu_by_name('Advanced Movement') > -1:
            menus.delete_active_menu()

    return _fighters