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)
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)
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
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()
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)
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)
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