本文整理汇总了Python中horizons.world.units.weapon.Weapon类的典型用法代码示例。如果您正苦于以下问题:Python Weapon类的具体用法?Python Weapon怎么用?Python Weapon使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Weapon类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: save
def save(self, db):
"""Saves the current game to the specified db.
@param db: DbReader object of the db the game is saved to."""
super(World, self).save(db)
if isinstance(self.map_name, list):
db("INSERT INTO metadata VALUES(?, ?)", 'random_island_sequence', ' '.join(self.map_name))
else:
# the map name has to be simplified because the absolute paths won't be transferable between machines
simplified_name = self.map_name
if self.map_name.startswith(PATHS.USER_MAPS_DIR):
simplified_name = 'USER_MAPS_DIR:' + simplified_name[len(PATHS.USER_MAPS_DIR):]
db("INSERT INTO metadata VALUES(?, ?)", 'map_name', simplified_name)
for island in self.islands:
island.save(db)
for player in self.players:
player.save(db)
if self.trader is not None:
self.trader.save(db)
if self.pirate is not None:
self.pirate.save(db)
for unit in self.ships + self.ground_units:
unit.save(db)
for bullet in self.bullets:
bullet.save(db)
self.diplomacy.save(db)
Weapon.save_attacks(db)
self.disaster_manager.save(db)
示例2: _load_combat
def _load_combat(self, savegame_db):
# load bullets
if self.session.is_game_loaded():
for (worldid, sx, sy, dx, dy, speed, img) in savegame_db("SELECT worldid, startx, starty, destx, desty, speed, image FROM bullet"):
Bullet(img, Point(sx, sy), Point(dx, dy), speed, self.session, False, worldid)
# load ongoing attacks
if self.session.is_game_loaded():
Weapon.load_attacks(self.session, savegame_db)
示例3: save
def save(self, db):
"""Saves the current game to the specified db.
@param db: DbReader object of the db the game is saved to."""
super(World, self).save(db)
for name, value in self.properties.iteritems():
db("INSERT INTO map_properties (name, value) VALUES (?, ?)", name, json.dumps(value))
for island in self.islands:
island.save(db)
for player in self.players:
player.save(db)
if self.trader is not None:
self.trader.save(db)
if self.pirate is not None:
self.pirate.save(db)
for unit in self.ships + self.ground_units:
unit.save(db)
for bullet in self.bullets:
bullet.save(db)
self.diplomacy.save(db)
Weapon.save_attacks(db)
self.disaster_manager.save(db)
示例4: save
def save(self, db):
"""Saves the current game to the specified db.
@param db: DbReader object of the db the game is saved to."""
super(World, self).save(db)
if isinstance(self.map_name, list):
db("INSERT INTO metadata VALUES(?, ?)", 'random_island_sequence', ' '.join(self.map_name))
else:
db("INSERT INTO metadata VALUES(?, ?)", 'map_name', self.map_name)
for island in self.islands:
island.save(db)
for player in self.players:
player.save(db)
if self.trader is not None:
self.trader.save(db)
if self.pirate is not None:
self.pirate.save(db)
for unit in self.ships + self.ground_units:
unit.save(db)
for bullet in self.bullets:
bullet.save(db)
self.diplomacy.save(db)
Weapon.save_attacks(db)
self.disaster_manager.save(db)
示例5: _load_combat
def _load_combat(self, savegame_db):
# load ongoing attacks
if self.session.is_game_loaded():
Weapon.load_attacks(self.session, savegame_db)
示例6: _init
#.........这里部分代码省略.........
load_building(self.session, savegame_db, building_typeid, building_worldid)
# use a dict because it's directly supported by the pathfinding algo
self.water = dict.fromkeys(list(self.ground_map), 1.0)
self._init_water_bodies()
self.sea_number = self.water_body[(self.min_x, self.min_y)]
# assemble list of water and coastline for ship, that can drive through shallow water
# NOTE: this is rather a temporary fix to make the fisher be able to move
# since there are tile between coastline and deep sea, all non-constructible tiles
# are added to this list as well, which will contain a few too many
self.water_and_coastline = copy.copy(self.water)
for island in self.islands:
for coord, tile in island.ground_map.iteritems():
if 'coastline' in tile.classes or 'constructible' not in tile.classes:
self.water_and_coastline[coord] = 1.0
# create ship position list. entries: ship_map[(x, y)] = ship
self.ship_map = {}
self.ground_unit_map = {}
# create shiplist, which is currently used for saving ships
# and having at least one reference to them
self.ships = []
self.ground_units = []
# create bullets list, used for saving bullets in ongoing attacks
self.bullets = []
if self.session.is_game_loaded():
# there are 0 or 1 trader AIs so this is safe
trader_data = savegame_db("SELECT rowid FROM player WHERE is_trader = 1")
if trader_data:
self.trader = Trader.load(self.session, savegame_db, trader_data[0][0])
# there are 0 or 1 pirate AIs so this is safe
pirate_data = savegame_db("SELECT rowid FROM player WHERE is_pirate = 1")
if pirate_data:
self.pirate = Pirate.load(self.session, savegame_db, pirate_data[0][0])
# load all units (we do it here cause all buildings are loaded by now)
for (worldid, typeid) in savegame_db("SELECT rowid, type FROM unit ORDER BY rowid"):
Entities.units[typeid].load(self.session, savegame_db, worldid)
if self.session.is_game_loaded():
# let trader command it's ships. we have to do this here cause ships have to be
# initialised for this, and trader has to exist before ships are loaded.
if self.trader:
self.trader.load_ship_states(savegame_db)
# let pirate command it's ships. we have to do this here cause ships have to be
# initialised for this, and pirate has to exist before ships are loaded.
if self.pirate:
self.pirate.load_ship_states(savegame_db)
# load the AI stuff only when we have AI players
if any(isinstance(player, AIPlayer) for player in self.players):
AIPlayer.load_abstract_buildings(self.session.db) # TODO: find a better place for this
# load the AI players
# this has to be done here because otherwise the ships and other objects won't exist
for player in self.players:
if not isinstance(player, HumanPlayer):
player.finish_loading(savegame_db)
# load bullets
if self.session.is_game_loaded():
for (worldid, sx, sy, dx, dy, speed, img) in savegame_db("SELECT worldid, startx, starty, destx, desty, speed, image FROM bullet"):
Bullet(img, Point(sx, sy), Point(dx, dy), speed, self.session, False, worldid)
# load ongoing attacks
if self.session.is_game_loaded():
Weapon.load_attacks(self.session, savegame_db)
# load diplomacy
self.diplomacy = Diplomacy()
if self.session.is_game_loaded():
self.diplomacy.load(self, savegame_db)
# add diplomacy notification listeners
def notify_change(caller, old_state, new_state, a, b):
player1 = u"%s" % a.name
player2 = u"%s" % b.name
data = {'player1' : player1, 'player2' : player2}
self.session.ingame_gui.message_widget.add(
None, None, 'DIPLOMACY_STATUS_'+old_state.upper()+"_"+new_state.upper(), data)
self.diplomacy.add_diplomacy_status_changed_listener(notify_change)
disasters_disabled_by_properties = 'disasters_enabled' in self.properties and not self.properties['disasters_enabled']
# if savegame or parameter disables disasters, it's disabled (both have to be set to enable to actually enable)
disasters_disabled = not disasters_enabled or disasters_disabled_by_properties
self.disaster_manager = DisasterManager(self.session, disabled=disasters_disabled)
if self.session.is_game_loaded():
self.disaster_manager.load(savegame_db)
self.inited = True
"""TUTORIAL:
示例7: _init
#.........这里部分代码省略.........
self.island_map[coords] = island
# load world buildings (e.g. fish)
for (building_worldid, building_typeid) in \
savegame_db("SELECT rowid, type FROM building WHERE location = ?", self.worldid):
load_building(self.session, savegame_db, building_typeid, building_worldid)
# use a dict because it's directly supported by the pathfinding algo
self.water = dict.fromkeys(list(self.ground_map), 1.0)
self._init_water_bodies()
self.sea_number = self.water_body[(self.min_x, self.min_y)]
# assemble list of water and coastline for ship, that can drive through shallow water
# NOTE: this is rather a temporary fix to make the fisher be able to move
# since there are tile between coastline and deep sea, all non-constructible tiles
# are added to this list as well, which will contain a few too many
self.water_and_coastline = copy.copy(self.water)
for island in self.islands:
for coord, tile in island.ground_map.iteritems():
if 'coastline' in tile.classes or 'constructible' not in tile.classes:
self.water_and_coastline[coord] = 1.0
# create ship position list. entries: ship_map[(x, y)] = ship
self.ship_map = {}
self.ground_unit_map = {}
# create shiplist, which is currently used for saving ships
# and having at least one reference to them
self.ships = []
self.ground_units = []
# create bullets list, used for saving bullets in ongoing attacks
self.bullets = []
if self.session.is_game_loaded():
# there are 0 or 1 trader AIs so this is safe
trader_data = savegame_db("SELECT rowid FROM player WHERE is_trader = 1")
if trader_data:
self.trader = Trader.load(self.session, savegame_db, trader_data[0][0])
# there are 0 or 1 pirate AIs so this is safe
pirate_data = savegame_db("SELECT rowid FROM player WHERE is_pirate = 1")
if pirate_data:
self.pirate = Pirate.load(self.session, savegame_db, pirate_data[0][0])
# load all units (we do it here cause all buildings are loaded by now)
for (worldid, typeid) in savegame_db("SELECT rowid, type FROM unit ORDER BY rowid"):
Entities.units[typeid].load(self.session, savegame_db, worldid)
if self.session.is_game_loaded():
# let trader command it's ships. we have to do this here cause ships have to be
# initialised for this, and trader has to exist before ships are loaded.
if self.trader:
self.trader.load_ship_states(savegame_db)
# let pirate command it's ships. we have to do this here cause ships have to be
# initialised for this, and pirate has to exist before ships are loaded.
if self.pirate:
self.pirate.load_ship_states(savegame_db)
# load the AI players
# this has to be done here because otherwise the ships and other objects won't exist
AIPlayer.load_abstract_buildings(self.session.db) # TODO: find a better place for this
for player in self.players:
if not isinstance(player, HumanPlayer):
player.finish_loading(savegame_db)
# load bullets
if self.session.is_game_loaded():
for (worldid, sx, sy, dx, dy, speed, img) in savegame_db("SELECT worldid, startx, starty, destx, desty, speed, image FROM bullet"):
Bullet(img, Point(sx, sy), Point(dx, dy), speed, self.session, False, worldid)
# load ongoing attacks
if self.session.is_game_loaded():
Weapon.load_attacks(self.session, savegame_db)
# load diplomacy
self.diplomacy = Diplomacy()
if self.session.is_game_loaded():
self.diplomacy.load(self, savegame_db)
# add diplomacy notification listeners
def notify_change(caller, change_type, a, b):
player1 = a.name
player2 = b.name
#check if status really changed, if so update status string
if change_type == 'friend':
status = 'friends'
elif change_type == 'enemy':
status = 'enemies'
else:
status = 'neutral'
self.session.ingame_gui.message_widget.add(self.max_x/2, self.max_y/2, 'DIPLOMACY_STATUS_CHANGED',
{'player1' : player1, 'player2' : player2, 'status' : status})
self.diplomacy.add_diplomacy_status_changed_listener(notify_change)
self.inited = True
"""TUTORIAL: