本文整理匯總了Python中FleetUtilsAI.get_empire_fleet_ids方法的典型用法代碼示例。如果您正苦於以下問題:Python FleetUtilsAI.get_empire_fleet_ids方法的具體用法?Python FleetUtilsAI.get_empire_fleet_ids怎麽用?Python FleetUtilsAI.get_empire_fleet_ids使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類FleetUtilsAI
的用法示例。
在下文中一共展示了FleetUtilsAI.get_empire_fleet_ids方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __split_new_fleets
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def __split_new_fleets(self):
"""Split any new fleets.
This function is supposed to be called once at the beginning of the turn.
Splitting the auto generated fleets at game start or those created by
recently built ships allows the AI to assign correct roles to all ships.
"""
# TODO: check length of fleets for losses or do in AIstate.__cleanRoles
universe = fo.getUniverse()
known_fleets = self.get_fleet_roles_map()
self.newlySplitFleets.clear()
fleets_to_split = [fleet_id for fleet_id in FleetUtilsAI.get_empire_fleet_ids() if fleet_id not in known_fleets]
if fleets_to_split:
print "Trying to split %d new fleets" % len(fleets_to_split)
for fleet_id in fleets_to_split:
fleet = universe.getFleet(fleet_id)
if not fleet:
warn("Trying to split fleet %d but seemingly does not exist" % fleet_id)
continue
fleet_len = len(fleet.shipIDs)
if fleet_len == 1:
continue
new_fleets = FleetUtilsAI.split_fleet(fleet_id)
print "Split fleet %d with %d ships into %d new fleets:" % (fleet_id, fleet_len, len(new_fleets))
示例2: session_start_cleanup
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def session_start_cleanup(self):
self.newlySplitFleets = {}
for fleetID in FleetUtilsAI.get_empire_fleet_ids():
self.get_fleet_role(fleetID)
self.update_fleet_rating(fleetID)
self.ensure_have_fleet_missions([fleetID])
self.__clean_fleet_roles(just_resumed=True)
fleetsLostBySystem.clear()
empireStars.clear()
self.qualifyingTroopBaseTargets.clear()
示例3: refresh
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def refresh(self):
"""Turn start AIstate cleanup/refresh."""
universe = fo.getUniverse()
# checks exploration border & clears roles/missions of missing fleets & updates fleet locs & threats
fleetsLostBySystem.clear()
invasionTargets[:] = []
exploration_center = PlanetUtilsAI.get_capital_sys_id()
if exploration_center == -1: # a bad state probably from an old savegame, or else empire has lost (or almost has)
exploration_center = self.__origin_home_system_id
# check if planets in cache is still present. Remove destroyed.
for system_id, info in sorted(self.systemStatus.items()):
planet_dict = info.get('planets', {})
cache_planet_set = set(planet_dict)
system_planet_set = set(universe.getSystem(system_id).planetIDs)
diff = cache_planet_set - system_planet_set
if diff:
print "Removing destroyed planets from systemStatus for system %s: planets to be removed: %s" % (system_id, sorted(diff))
for key in diff:
del planet_dict[key]
ExplorationAI.graphFlags.clear()
if fo.currentTurn() < 50:
print "-------------------------------------------------"
print "Border Exploration Update (relative to %s)" % (PlanetUtilsAI.sys_name_ids([exploration_center, -1])[0])
print "-------------------------------------------------"
if self.visBorderSystemIDs.keys() == [-1]:
self.visBorderSystemIDs.clear()
self.visBorderSystemIDs[exploration_center] = 1
for sys_id in self.visBorderSystemIDs.keys(): # This dict modified during iteration.
if fo.currentTurn() < 50:
print "Considering border system %s" % (PlanetUtilsAI.sys_name_ids([sys_id, -1])[0])
ExplorationAI.follow_vis_system_connections(sys_id, exploration_center)
newly_explored = ExplorationAI.update_explored_systems()
nametags = []
for sys_id in newly_explored:
newsys = universe.getSystem(sys_id)
nametags.append("ID:%4d -- %-20s" % (sys_id, (newsys and newsys.name) or "name unknown")) # an explored system *should* always be able to be gotten
if newly_explored:
print "-------------------------------------------------"
print "Newly explored systems:\n%s" % "\n".join(nametags)
print "-------------------------------------------------"
# cleanup fleet roles
# self.update_fleet_locs()
self.__clean_fleet_roles()
self.__clean_fleet_missions(FleetUtilsAI.get_empire_fleet_ids())
print "Fleets lost by system: %s" % fleetsLostBySystem
self.update_system_status()
示例4: session_start_cleanup
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def session_start_cleanup(self):
self.newlySplitFleets = {}
for fleetID in FleetUtilsAI.get_empire_fleet_ids():
self.get_fleet_role(fleetID)
self.update_fleet_rating(fleetID)
self.ensure_have_fleet_missions([fleetID])
self.__clean_fleet_roles(just_resumed=True)
fleetsLostBySystem.clear()
popCtrSystemIDs[:] = [] # resets without detroying existing references
colonizedSystems.clear()
empireStars.clear()
popCtrIDs[:] = []
outpostIDs[:] = []
outpostSystemIDs[:] = []
ResourcesAI.lastFociCheck[0] = 0
self.qualifyingColonyBaseTargets.clear()
self.qualifyingOutpostBaseTargets.clear()
self.qualifyingTroopBaseTargets.clear()
示例5: __clean_fleet_missions
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def __clean_fleet_missions(self):
"""Assign a new dummy mission to new fleets and clean up existing, now invalid missions."""
current_empire_fleets = FleetUtilsAI.get_empire_fleet_ids()
# assign a new (dummy) mission to new fleets
for fleet_id in current_empire_fleets:
if self.get_fleet_mission(fleet_id) is None:
self.__add_fleet_mission(fleet_id)
# Check all fleet missions for validity and clear invalid targets.
# If a fleet does not exist anymore, mark mission for deletion.
# Deleting only after the loop allows us to avoid an expensive copy.
deleted_fleet_ids = []
for mission in self.get_all_fleet_missions():
if mission.fleet.id not in current_empire_fleets:
deleted_fleet_ids.append(mission.fleet.id)
else:
mission.clean_invalid_targets()
for deleted_fleet_id in deleted_fleet_ids:
self.__remove_fleet_mission(deleted_fleet_id)
示例6: split_new_fleets
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def split_new_fleets(self):
"""Split any new fleets (at new game creation, can have unplanned mix of ship roles)."""
universe = fo.getUniverse()
mission_table = Table([Text('Fleet'), Text('Mission'), Text('Ships'), Float('Rating'), Float('Troops'), Text('Target')],
table_name="Turn %d: Fleet Mission Review from Last Turn" % fo.currentTurn())
for fleet_id, mission in self.get_fleet_missions_map().items():
fleet = universe.getFleet(fleet_id)
if not fleet:
continue
if not mission:
mission_table.add_row([fleet])
else:
mission_table.add_row([
fleet,
mission.type or "None",
len(fleet.shipIDs),
CombatRatingsAI.get_fleet_rating(fleet_id),
FleetUtilsAI.count_troops_in_fleet(fleet_id),
mission.target or "-"
])
mission_table.print_table()
# TODO: check length of fleets for losses or do in AIstat.__cleanRoles
known_fleets = self.get_fleet_roles_map()
self.newlySplitFleets.clear()
fleets_to_split = [fleet_id for fleet_id in FleetUtilsAI.get_empire_fleet_ids() if fleet_id not in known_fleets]
if fleets_to_split:
print "Splitting new fleets"
for fleet_id in fleets_to_split:
fleet = universe.getFleet(fleet_id)
if not fleet:
print >> sys.stderr, "After splitting fleet: resulting fleet ID %d appears to not exist" % fleet_id
continue
fleet_len = len(list(fleet.shipIDs))
if fleet_len == 1:
continue
new_fleets = FleetUtilsAI.split_fleet(fleet_id) # try splitting fleet
print "\t from splitting fleet ID %4d with %d ships, got %d new fleets:" % (fleet_id, fleet_len, len(new_fleets))
示例7: refresh
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def refresh(self):
"""Turn start AIstate cleanup/refresh."""
universe = fo.getUniverse()
# checks exploration border & clears roles/missions of missing fleets & updates fleet locs & threats
fleetsLostBySystem.clear()
invasionTargets[:] = []
exploration_center = PlanetUtilsAI.get_capital_sys_id()
if exploration_center == INVALID_ID: # a bad state probably from an old savegame, or else empire has lost (or almost has)
exploration_center = self.__origin_home_system_id
for system_id, info in sorted(self.systemStatus.items()):
self.systemStatus[system_id]['enemy_ship_count'] = 0 # clear now in prep for update_system_status()
ExplorationAI.graph_flags.clear()
if fo.currentTurn() < 50:
print "-------------------------------------------------"
print "Border Exploration Update (relative to %s)" % (PlanetUtilsAI.sys_name_ids([exploration_center, INVALID_ID])[0])
print "-------------------------------------------------"
if self.visBorderSystemIDs == {INVALID_ID}:
self.visBorderSystemIDs.clear()
self.visBorderSystemIDs.add(exploration_center)
for sys_id in list(self.visBorderSystemIDs): # This set is modified during iteration.
if fo.currentTurn() < 50:
print "Considering border system %s" % (PlanetUtilsAI.sys_name_ids([sys_id, INVALID_ID])[0])
ExplorationAI.follow_vis_system_connections(sys_id, exploration_center)
newly_explored = ExplorationAI.update_explored_systems()
nametags = []
for sys_id in newly_explored:
newsys = universe.getSystem(sys_id)
nametags.append("ID:%4d -- %-20s" % (sys_id, (newsys and newsys.name) or "name unknown")) # an explored system *should* always be able to be gotten
if newly_explored:
print "-------------------------------------------------"
print "Newly explored systems:\n%s" % "\n".join(nametags)
print "-------------------------------------------------"
# cleanup fleet roles
# self.update_fleet_locs()
self.__clean_fleet_roles()
self.__clean_fleet_missions(FleetUtilsAI.get_empire_fleet_ids())
print "Fleets lost by system: %s" % fleetsLostBySystem
self.update_system_status()
示例8: __clean_fleet_roles
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def __clean_fleet_roles(self, just_resumed=False):
"""Removes fleetRoles if a fleet has been lost, and update fleet Ratings."""
universe = fo.getUniverse()
current_empire_fleets = FleetUtilsAI.get_empire_fleet_ids()
self.shipCount = 0
destroyed_object_ids = universe.destroyedObjectIDs(fo.empireID())
fleet_table = Table([
Text('Fleet'), Float('Rating'), Float('Troops'),
Text('Location'), Text('Destination')],
table_name="Fleet Summary Turn %d" % fo.currentTurn()
)
# need to loop over a copy as entries are deleted in loop
for fleet_id in list(self.__fleetRoleByID):
fleet_status = self.fleetStatus.setdefault(fleet_id, {})
rating = CombatRatingsAI.get_fleet_rating(fleet_id, self.get_standard_enemy())
old_sys_id = fleet_status.get('sysID', -2) # TODO: Introduce helper function instead
fleet = universe.getFleet(fleet_id)
if fleet:
sys_id = fleet.systemID
if old_sys_id in [-2, -1]:
old_sys_id = sys_id
fleet_status['nships'] = len(fleet.shipIDs) # TODO: Introduce helper function instead
self.shipCount += fleet_status['nships']
else:
# can still retrieve a fleet object even if fleet was just destroyed, so shouldn't get here
# however,this has been observed happening, and is the reason a fleet check was added a few lines below.
# Not at all sure how this came about, but was throwing off threat assessments
sys_id = old_sys_id
# check if fleet is destroyed and if so, delete stored information
if fleet_id not in current_empire_fleets: # or fleet.empty:
# TODO(Morlic): Is this condition really correct? Seems like should actually be in destroyed object ids
if (fleet and self.__fleetRoleByID.get(fleet_id, -1) != -1 and
fleet_id not in destroyed_object_ids and
any(ship_id not in destroyed_object_ids for ship_id in fleet.shipIDs)):
if not just_resumed:
fleetsLostBySystem.setdefault(old_sys_id, []).append(max(rating, MilitaryAI.MinThreat))
self.delete_fleet_info(fleet_id)
continue
# if reached here, the fleet does still exist
this_sys = universe.getSystem(sys_id)
next_sys = universe.getSystem(fleet.nextSystemID)
fleet_table.add_row([
fleet,
rating,
FleetUtilsAI.count_troops_in_fleet(fleet_id),
this_sys or 'starlane',
next_sys or '-',
])
fleet_status['rating'] = rating
if next_sys:
fleet_status['sysID'] = next_sys.id
elif this_sys:
fleet_status['sysID'] = this_sys.id
else:
error("Fleet %s has no valid system." % fleet)
info(fleet_table)
# Next string used in charts. Don't modify it!
print "Empire Ship Count: ", self.shipCount
print "Empire standard fighter summary: ", CombatRatingsAI.get_empire_standard_fighter().get_stats()
print "------------------------"
示例9: __clean_fleet_roles
# 需要導入模塊: import FleetUtilsAI [as 別名]
# 或者: from FleetUtilsAI import get_empire_fleet_ids [as 別名]
def __clean_fleet_roles(self, just_resumed=False):
"""Removes fleetRoles if a fleet has been lost, and update fleet Ratings."""
for sys_id in self.systemStatus:
self.systemStatus[sys_id]['myFleetRating'] = 0
self.systemStatus[sys_id]['myFleetRatingVsPlanets'] = 0
universe = fo.getUniverse()
ok_fleets = FleetUtilsAI.get_empire_fleet_ids()
fleet_list = sorted(list(self.__fleetRoleByID))
ship_count = 0
destroyed_object_ids = universe.destroyedObjectIDs(fo.empireID())
fleet_table = Table([
Text('Fleet'), Float('Rating'), Float('Troops'),
Text('Location'), Text('Destination')],
table_name="Fleet Summary Turn %d" % fo.currentTurn()
)
for fleet_id in fleet_list:
status = self.fleetStatus.setdefault(fleet_id, {})
rating = CombatRatingsAI.get_fleet_rating(fleet_id, self.get_standard_enemy())
troops = FleetUtilsAI.count_troops_in_fleet(fleet_id)
old_sys_id = status.get('sysID', -2)
fleet = universe.getFleet(fleet_id)
if fleet:
sys_id = fleet.systemID
if old_sys_id in [-2, -1]:
old_sys_id = sys_id
status['nships'] = len(fleet.shipIDs)
ship_count += status['nships']
else:
sys_id = old_sys_id # can still retrieve a fleet object even if fleet was just destroyed, so shouldn't get here
# however,this has been observed happening, and is the reason a fleet check was added a few lines below.
# Not at all sure how this came about, but was throwing off threat assessments
if fleet_id not in ok_fleets: # or fleet.empty:
if (fleet and self.__fleetRoleByID.get(fleet_id, -1) != -1 and fleet_id not in destroyed_object_ids and
[ship_id for ship_id in fleet.shipIDs if ship_id not in destroyed_object_ids]):
if not just_resumed:
fleetsLostBySystem.setdefault(old_sys_id, []).append(max(rating, MilitaryAI.MinThreat))
if fleet_id in self.__fleetRoleByID:
del self.__fleetRoleByID[fleet_id]
if fleet_id in self.__aiMissionsByFleetID:
del self.__aiMissionsByFleetID[fleet_id]
if fleet_id in self.fleetStatus:
del self.fleetStatus[fleet_id]
continue
else: # fleet in ok fleets
this_sys = universe.getSystem(sys_id)
next_sys = universe.getSystem(fleet.nextSystemID)
fleet_table.add_row(
[
fleet,
rating,
troops,
this_sys or 'starlane',
next_sys or '-',
])
status['rating'] = rating
if next_sys:
status['sysID'] = next_sys.id
elif this_sys:
status['sysID'] = this_sys.id
else:
main_mission = self.get_fleet_mission(fleet_id)
main_mission_type = (main_mission.getAIMissionTypes() + [-1])[0]
if main_mission_type != -1:
targets = main_mission.getAITargets(main_mission_type)
if targets:
m_mt0 = targets[0]
if isinstance(m_mt0.target_type, System):
status['sysID'] = m_mt0.target.id # hmm, but might still be a fair ways from here
fleet_table.print_table()
self.shipCount = ship_count
# Next string used in charts. Don't modify it!
print "Empire Ship Count: ", ship_count
print "Empire standard fighter summary: ", CombatRatingsAI.get_empire_standard_fighter().get_stats()
print "------------------------"