本文整理汇总了Python中horizons.util.savegameupgrader.SavegameUpgrader.get_path方法的典型用法代码示例。如果您正苦于以下问题:Python SavegameUpgrader.get_path方法的具体用法?Python SavegameUpgrader.get_path怎么用?Python SavegameUpgrader.get_path使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类horizons.util.savegameupgrader.SavegameUpgrader
的用法示例。
在下文中一共展示了SavegameUpgrader.get_path方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SavegameAccessor
# 需要导入模块: from horizons.util.savegameupgrader import SavegameUpgrader [as 别名]
# 或者: from horizons.util.savegameupgrader.SavegameUpgrader import get_path [as 别名]
class SavegameAccessor(DbReader):
"""
SavegameAccessor is the class used for loading saved games.
Frequent select queries are preloaded for faster access.
"""
def __init__(self, dbfile):
self.upgrader = SavegameUpgrader(dbfile)
dbfile = self.upgrader.get_path()
super(SavegameAccessor, self).__init__(dbfile=dbfile)
self._load_building()
self._load_settlement()
self._load_concrete_object()
self._load_production()
self._load_storage()
self._load_wildanimal()
self._load_unit()
self._load_building_collector()
self._load_production_line()
self._load_unit_path()
self._load_storage_global_limit()
self._load_health()
self._hash = None
def close(self):
super(SavegameAccessor, self).close()
self.upgrader.close()
def _load_building(self):
self._building = {}
for row in self("SELECT rowid, x, y, location, rotation, level FROM building"):
self._building[int(row[0])] = row[1:]
def get_building_row(self, worldid):
"""Returns (x, y, location, rotation, level)"""
return self._building[int(worldid)]
def get_building_location(self, worldid):
return self._building[int(worldid)][2]
def _load_settlement(self):
self._settlement = {}
for row in self("SELECT rowid, owner, island FROM settlement"):
self._settlement[int(row[0])] = row[1:]
def get_settlement_owner(self, worldid):
"""Returns the id of the owner of the settlement or None otherwise"""
return self._settlement.get(int(worldid), [None])[0]
def get_settlement_island(self, worldid):
return self._settlement[int(worldid)][1]
def _load_concrete_object(self):
self._concrete_object = {}
for row in self("SELECT id, action_runtime, action_set_id FROM concrete_object"):
self._concrete_object[int(row[0])] = int(row[1]), row[2]
def get_concrete_object_data(self, worldid):
return self._concrete_object[int(worldid)]
def _load_production(self):
self._productions_by_worldid = {}
self._production_lines_by_owner = {}
self._productions_by_id_and_owner = {}
db_data = self("SELECT rowid, state, owner, prod_line_id, remaining_ticks, _pause_old_state, creation_tick FROM production")
for row in db_data:
rowid = int(row[0])
data = row[1:]
self._productions_by_worldid[rowid] = data
owner = int(row[2])
line = int(row[3])
if not line in self._productions_by_id_and_owner:
self._productions_by_id_and_owner[line] = {}
# in the line dict, the owners are unique
self._productions_by_id_and_owner[line][owner] = data
if owner not in self._production_lines_by_owner:
self._production_lines_by_owner[owner] = [line]
else:
self._production_lines_by_owner[owner].append(line)
self._production_lines_by_owner[owner].append
self._production_state_history = defaultdict(lambda: deque())
for object_id, production_id, tick, state in self("SELECT object_id, production, tick, state FROM production_state_history ORDER BY object_id, production, tick"):
self._production_state_history[int(object_id), int(production_id)].append((tick, state))
def get_production_by_id_and_owner(self, id, ownerid):
# owner means worldid of entity
return self._productions_by_id_and_owner[id][ownerid]
def get_production_line_id(self, production_worldid):
"""Returns the prod_line_id of the given production"""
return self._productions_by_worldid[int(production_worldid)][2]
#.........这里部分代码省略.........
示例2: SavegameAccessor
# 需要导入模块: from horizons.util.savegameupgrader import SavegameUpgrader [as 别名]
# 或者: from horizons.util.savegameupgrader.SavegameUpgrader import get_path [as 别名]
class SavegameAccessor(DbReader):
"""
SavegameAccessor is the class used for loading saved games.
Frequent select queries are preloaded for faster access.
"""
def __init__(self, game_identifier, is_map, options=None):
is_random_map = False
if is_map:
self.upgrader = None
handle, self._temp_path = tempfile.mkstemp()
os.close(handle)
super(SavegameAccessor, self).__init__(dbfile=self._temp_path)
with open('content/savegame_template.sql') as savegame_template:
self.execute_script(savegame_template.read())
if isinstance(game_identifier, list):
is_random_map = True
random_island_sequence = game_identifier
else:
self._map_path = game_identifier
else:
self.upgrader = SavegameUpgrader(game_identifier)
self._temp_path = None
game_identifier = self.upgrader.get_path()
super(SavegameAccessor, self).__init__(dbfile=game_identifier)
map_name_data = self('SELECT value FROM metadata WHERE name = ?', 'map_name')
if not map_name_data:
is_random_map = True
random_island_sequence = self('SELECT value FROM metadata WHERE name = ?', 'random_island_sequence')[0][0].split(' ')
else:
map_name = map_name_data[0][0]
if map_name.startswith('USER_MAPS_DIR:'):
self._map_path = PATHS.USER_MAPS_DIR + map_name[len('USER_MAPS_DIR:'):]
elif os.path.isabs(map_name):
self._map_path = map_name
else:
self._map_path = SavegameManager.get_filename_from_map_name(map_name)
if is_random_map:
handle, self._temp_path2 = tempfile.mkstemp()
os.close(handle)
random_map_db = DbReader(self._temp_path2)
with open('content/map-template.sql') as map_template:
random_map_db.execute_script(map_template.read())
for island_id, island_string in enumerate(random_island_sequence):
create_random_island(random_map_db, island_id, island_string)
random_map_db.close()
self._map_path = self._temp_path2
self('INSERT INTO metadata VALUES(?, ?)', 'random_island_sequence',
' '.join(random_island_sequence))
if options is not None:
if options.map_padding is not None:
self("INSERT INTO map_properties VALUES(?, ?)", 'padding', options.map_padding)
self('ATTACH ? AS map_file', self._map_path)
if is_random_map:
self.map_name = random_island_sequence
elif os.path.isabs(self._map_path):
self.map_name = self._map_path
else:
self.map_name = SavegameManager.get_savegamename_from_filename(self._map_path)
map_padding = self("SELECT value FROM map_properties WHERE name = 'padding'")
self.map_padding = int(map_padding[0][0]) if map_padding else MAP.PADDING
self._load_building()
self._load_settlement()
self._load_concrete_object()
self._load_production()
self._load_storage()
self._load_wildanimal()
self._load_unit()
self._load_building_collector()
self._load_production_line()
self._load_unit_path()
self._load_storage_global_limit()
self._load_health()
self._load_fish_data()
self._hash = None
def close(self):
super(SavegameAccessor, self).close()
if self.upgrader is not None:
self.upgrader.close()
if self._temp_path is not None:
os.unlink(self._temp_path)
if hasattr(self, '_temp_path2'):
os.unlink(self._temp_path2)
def _load_building(self):
self._building = {}
for row in self("SELECT rowid, x, y, location, rotation, level FROM building"):
self._building[int(row[0])] = row[1:]
def get_building_row(self, worldid):
#.........这里部分代码省略.........
示例3: SavegameAccessor
# 需要导入模块: from horizons.util.savegameupgrader import SavegameUpgrader [as 别名]
# 或者: from horizons.util.savegameupgrader.SavegameUpgrader import get_path [as 别名]
class SavegameAccessor(DbReader):
"""
SavegameAccessor is the class used for loading saved games.
Frequent select queries are preloaded for faster access.
"""
def __init__(self, dbfile):
self.upgrader = SavegameUpgrader(dbfile)
super(SavegameAccessor, self).__init__(dbfile=self.upgrader.get_path())
self._load_building()
self._load_settlement()
self._load_concrete_object()
self._load_production()
self._load_storage()
self._load_storage_slot_limit()
self._load_wildanimal()
self._load_unit()
self._load_building_collector()
self._load_production_line()
self._load_unit_path()
self._load_component()
self._load_storage_global_limit()
def close(self):
super(SavegameAccessor, self).close()
self.upgrader.close()
def _load_building(self):
self._building = {}
for row in self("SELECT rowid, x, y, location, rotation, level FROM building"):
self._building[int(row[0])] = row[1:]
def get_building_row(self, worldid):
"""Returns (x, y, location, rotation, level)"""
return self._building[int(worldid)]
def get_building_location(self, worldid):
return self._building[int(worldid)][2]
def _load_settlement(self):
self._settlement = {}
for row in self("SELECT rowid, owner, island FROM settlement"):
self._settlement[int(row[0])] = row[1:]
def get_settlement_owner(self, worldid):
"""Returns the id of the owner of the settlement or None otherwise"""
worldid = int(worldid)
return None if worldid not in self._settlement else self._settlement[worldid][0]
def get_settlement_island(self, worldid):
return self._settlement[int(worldid)][1]
def _load_concrete_object(self):
self._concrete_object = {}
for row in self("SELECT id, action_runtime FROM concrete_object"):
self._concrete_object[int(row[0])] = int(row[1])
def get_concrete_object_action_runtime(self, worldid):
return self._concrete_object[int(worldid)]
def _load_production(self):
self._production = {}
self._productions_by_id_and_owner = {}
db_data = self("SELECT rowid, state, owner, prod_line_id, remaining_ticks, _pause_old_state, creation_tick FROM production")
for row in db_data:
rowid = int(row[0])
data = row[1:]
self._production[rowid] = data
owner = int(row[2])
line = int(row[3])
if not line in self._productions_by_id_and_owner:
self._productions_by_id_and_owner[line] = {}
# in the line dict, the owners are unique
self._productions_by_id_and_owner[line][owner] = data
self._production_state_history = defaultdict(lambda: deque())
for production_id, tick, state in self("SELECT production, tick, state FROM production_state_history ORDER BY production, tick"):
self._production_state_history[int(production_id)].append((tick, state))
def get_production_by_id_and_owner(self, id, ownerid):
# owner means worldid of entity
return self._productions_by_id_and_owner[id][ownerid]
def get_production_line_id(self, production_worldid):
"""Returns the prod_line_id of the given production"""
return self._production[int(production_worldid)][2]
def get_production_state_history(self, worldid):
return self._production_state_history[int(worldid)]
def _load_storage(self):
self._storage = {}
for row in self("SELECT object, resource, amount FROM storage"):
ownerid = int(row[0])
#.........这里部分代码省略.........