本文整理汇总了Python中horizons.world.traderoute.TradeRoute.get_ship_status方法的典型用法代码示例。如果您正苦于以下问题:Python TradeRoute.get_ship_status方法的具体用法?Python TradeRoute.get_ship_status怎么用?Python TradeRoute.get_ship_status使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类horizons.world.traderoute.TradeRoute
的用法示例。
在下文中一共展示了TradeRoute.get_ship_status方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Ship
# 需要导入模块: from horizons.world.traderoute import TradeRoute [as 别名]
# 或者: from horizons.world.traderoute.TradeRoute import get_ship_status [as 别名]
#.........这里部分代码省略.........
def _movement_finished(self):
if self.in_ship_map:
# if the movement somehow stops, the position sticks, and the unit isn't at next_target any more
if self._next_target is not None:
ship = self.session.world.ship_map.get(self._next_target.to_tuple())
if ship is not None and ship() is self:
del self.session.world.ship_map[self._next_target.to_tuple()]
super(Ship, self)._movement_finished()
def go(self, x, y):
#disable the trading route
if hasattr(self, 'route'):
self.route.disable()
if self.get_component(CommandableComponent).go(x, y) is None:
self._update_buoy()
def move(self, *args, **kwargs):
super(Ship, self).move(*args, **kwargs)
if self.has_component(SelectableComponent) and \
self.get_component(SelectableComponent).selected and \
self.owner.is_local_player: # handle buoy
# if move() is called as move_callback, tmp() from above might
# be executed after this, so draw the new buoy after move_callbacks have finished.
Scheduler().add_new_object(self._update_buoy, self, run_in=0)
def _update_buoy(self, remove_only=False):
"""Draw a buoy at the move target if the ship is moving."""
if self.owner is None or not self.owner.is_local_player:
return
move_target = self.get_move_target()
ship_id = self.worldid
session = self.session # this has to happen here,
# cause a reference to self in a temporary function is implemented
# as a hard reference, which causes a memory leak
def tmp():
session.view.renderer['GenericRenderer'].removeAll("buoy_" + str(ship_id))
tmp() # also remove now
if remove_only:
return
if move_target != None:
# set remove buoy callback
self.add_move_callback(tmp)
loc = fife.Location(self.session.view.layers[LAYERS.OBJECTS])
loc.thisown = 0 # thisown = 0 because the genericrenderernode might delete it
coords = fife.ModelCoordinate(move_target.x, move_target.y)
coords.thisown = 1 # thisown = 1 because setLayerCoordinates will create a copy
loc.setLayerCoordinates(coords)
self.session.view.renderer['GenericRenderer'].addAnimation(
"buoy_" + str(self.worldid), fife.RendererNode(loc),
horizons.main.fife.animationloader.loadResource("as_buoy0+idle+45")
)
def find_nearby_ships(self, radius=15):
# TODO: Replace 15 with a distance dependant on the ship type and any
# other conditions.
ships = self.session.world.get_ships(self.position, radius)
if self in ships:
ships.remove(self)
return ships
def get_tradeable_warehouses(self, position=None):
"""Returns warehouses this ship can trade with w.r.t. position, which defaults to the ships ones."""
if position is None:
position = self.position
return self.session.world.get_warehouses(position, self.radius, self.owner, include_tradeable=True)
def get_location_based_status(self, position):
warehouses = self.get_tradeable_warehouses(position)
if warehouses:
warehouse = warehouses[0] # TODO: don't ignore the other possibilities
player_suffix = u''
if warehouse.owner is not self.owner:
player_suffix = u' ({name})'.format(name=warehouse.owner.name)
return u'{name}{suffix}'.format(name=warehouse.settlement.get_component(NamedComponent).name,
suffix=player_suffix)
return None
def get_status(self):
"""Return the current status of the ship."""
if hasattr(self, 'route') and self.route.enabled:
return self.route.get_ship_status()
elif self.is_moving():
target = self.get_move_target()
location_based_status = self.get_location_based_status(target)
if location_based_status is not None:
#xgettext:python-format
return (_('Going to {location}').format(location=location_based_status), target)
#xgettext:python-format
return (_('Going to {x}, {y}').format(x=target.x, y=target.y), target)
else:
location_based_status = self.get_location_based_status(self.position)
if location_based_status is not None:
#xgettext:python-format
return (_('Idle at {location}').format(location=location_based_status), self.position)
#xgettext:python-format
return (_('Idle at {x}, {y}').format(x=self.position.x, y=self.position.y), self.position)