def calculate_route(self, fleet, dest_point): open_planets = store.get_objects_list('open_planet', {'user_id':fleet['user_id']}) start_point = int(fleet['x']), int(fleet['y']) spd,rng = store.get_fleet_speed_range(fleet['fleet_id']) return algorithm.route_find(fleet, rng, dest_point)
def save_user_data(user_id, path): util.assureDirExist(path) log.info('saving user %s %s'%(user_id, path)) user_filter = {'user_id':user_id} save_csv_table(path, 'user', user_filter) save_csv_table(path, 'open_planet', user_filter) save_csv_table(path, 'race', user_filter) save_csv_table(path, 'diplomacy', user_filter) save_csv_table(path, 'hw', user_filter) save_csv_table(path, 'flying_fleet', user_filter) save_csv_table(path, 'alien_flying_fleet', user_filter) save_csv_table(path, 'user_planet', user_filter) save_csv_table(path, 'fleet', user_filter) save_csv_table(path, 'proto', user_filter) save_csv_table(path, 'action', user_filter) fleet_unit_writer = csv_open( os.path.join(path, 'fleet_unit.csv'), store.keys('fleet_unit')) unit_writer = csv_open( os.path.join(path, 'unit.csv'), store.keys('unit')) for fleet in store.iter_objects_list('fleet', {'user_id':user_id}): for fleet_unit in store.iter_objects_list('fleet_unit', {'fleet_id':fleet['fleet_id']}): fleet_unit_writer.writerow(fleet_unit) unit_writer.writerow( store.get_object('unit', {'unit_id':fleet_unit['unit_id']}) ) for fleet in store.iter_objects_list('flying_fleet', {'user_id':user_id}): for fleet_unit in store.iter_objects_list('fleet_unit', {'fleet_id':fleet['fleet_id']}): fleet_unit_writer.writerow(fleet_unit) unit_writer.writerow( store.get_object('unit', {'unit_id':fleet_unit['unit_id']}) ) garrison_unit_writer = csv_open(os.path.join(path, 'garrison_unit.csv'), store.keys('garrison_unit')) garrison_queue_unit_writer = csv_open(os.path.join(path, 'garrison_queue_unit.csv'), store.keys('garrison_queue_unit')) #save_csv_table(path, 'garrison_queue_unit') for planet in store.iter_objects_list('user_planet', {'user_id':user_id}): for garrison_unit in store.iter_objects_list('garrison_unit', {'x':planet['x'], 'y':planet['y']}): garrison_unit_writer.writerow(garrison_unit) unit_writer.writerow( store.get_object('unit', {'unit_id':garrison_unit['unit_id']}) ) for queue_unit in store.iter_objects_list('garrison_queue_unit', {'x':planet['x'], 'y':planet['y']}): garrison_queue_unit_writer.writerow( queue_unit ) proto_actions_writer = csv_open(os.path.join(path, 'proto_action.csv'), store.keys('proto_action')) for proto in store.iter_objects_list('proto', {'user_id':user_id}): proto_actions_writer.writerows(store.get_objects_list('proto_action', {'proto_id':proto['proto_id']}))
def onMakeScoutFleets(self, _): # get all planets # get harrison units able to scout # create fleets # put units to fleets # get all scouting fleets ( available to jump ( on my planets ) ) # get unexplored planets # send nearest fleets to these planets # load size-map, use it to scout biggest first ( N > 70, descending ) # get all scouting fleets ( on other planets ) # geo-explore # send them back to nearest home planet #command_type, #move_command = ('move_to', #move_commands = [((x,y), fleet_id)] carapace = 11 # probe/zond fleet_name = 'scout:geo' turn = db.getTurn() for acc in config.accounts(): if not 'id' in acc: continue user_id = int(acc['id']) #if user_id < 601140: # continue probes_types = store.get_objects_list('proto', {'carapace':carapace, 'user_id':user_id}) #any_class = 'class in (%s)'%(','.join([str(cls) for cls in units_classes]),) #print 'testing user %s with class %s'%(user_id, any_class) probe_ids = [str(proto['proto_id']) for proto in probes_types] self.pending_actions.user_id = user_id pending_units = [] for planet in store.iter_objects_list('user_planet', {'user_id':user_id}): coord = get_coord(planet) #print 'checking harrison for planet %s'%(planet,) for unit in store.get_garrison_units(coord, value_in=('proto_id', probe_ids)): #print 'found unit %s on planet %s'%(unit, planet,) action_create = action.ActionCreateFleet(user_id, fleet_name, coord) self.actions.add_action(action_create) fleet_id = action_create.fleet_id self.actions.add_action(action.ActionUnitMove(user_id, fleet_id, unit['unit_id'])) #self.actions.add_action(action.Action('unit_move', user_id, {'planet':coord, 'unit_id':unit['unit_id'], 'fleet_id':fleet_id})) #self.actions.add_action(action.Action('unit_move', user_id, {'planet':coord, 'unit_id':unit['unit_id'], 'fleet_id':fleet_id})) #self.pending_actions.createNewFleet(coord, fleet_name) #pending_units.append( (self.pending_actions.get_action_id(), coord, unit['id'] ) ) #print 'found unit %s on planet %s'%(unit, coord ) if len(pending_units) == 0: continue