def import_json(parent): filename = QFileDialog.getOpenFileName( parent, "Import Item File", filter="JSON (*.json);;All Files (*)") if filename[0] == "": return None def parse(): try: item_data = json.load(open(filename[0], "r")) except: logging.exception("Error parsing item: %s", filename[0]) return False if "name" not in item_data: return False if "count" not in item_data: item_data["count"] = 1 if "parameters" not in item_data: item_data["parameters"] = {} return item_data item = parse() if not item: logging.warning("Invalid item file: %s", filename[0]) return False else: return saves.new_item_data(item["name"], item["count"], item["parameters"])
def import_json(parent): filename = QFileDialog.getOpenFileName(parent, "Import Item File", filter="JSON (*.json);;All Files (*)") if filename[0] == "": return None def parse(): try: item_data = json.load(open(filename[0], "r")) except: logging.exception("Error parsing item: %s", filename[0]) return False if "name" not in item_data: return False if "count" not in item_data: item_data["count"] = 1 if "parameters" not in item_data: item_data["parameters"] = {} return item_data item = parse() if not item: logging.warning("Invalid item file: %s", filename[0]) return False else: return saves.new_item_data(item["name"], item["count"], item["parameters"])
def update_item(self): """Update main item view with current item browser data.""" name = self.ui.item_type.text() item = self.assets.items().get_item(name) uuid = self.player.get_uuid() generated_item = { "generatedgun": lambda: self.assets.items().generate_gun(item), "generatedsword": lambda: self.assets.items().generate_sword(item), "generatedshield": lambda: self.assets.items().generate_shield(item), "sapling": lambda: self.assets.items().generate_sapling(item), "filledcapturepod": lambda: self.assets.items().generate_filledcapturepod(item, uuid) } if item is not None: category = re.search("\..+$", item[1]) gen_match_cat = (category is not None and category.group()[1:] in generated_item.keys()) gen_match_name = name in generated_item.keys() if gen_match_cat: name = category.group()[1:] self.ui.item_type.setText(name) generated = generated_item[name]() self.item = saves.new_item_data(name, 1, generated) elif gen_match_name: generated = generated_item[name]() self.item = saves.new_item_data(name, 1, generated) else: self.item = saves.new_item_data(name, 1, item[0]) self.ui.count.setValue(1) self.update() return True else: self.item = saves.new_item_data("", 1) self.ui.desc.setText( "<html><body><strong>Empty Slot</strong></body></html>") self.update() return False
def update_item(self): """Update main item view with current item browser data.""" name = self.ui.item_type.text() item = self.assets.items().get_item(name) uuid = self.player.get_uuid() generated_item = { "generatedgun": lambda: self.assets.items().generate_gun(item), "generatedsword": lambda: self.assets.items().generate_sword(item), "generatedshield": lambda: self.assets.items().generate_shield(item), "sapling": lambda: self.assets.items().generate_sapling(item), "filledcapturepod": lambda: self.assets.items().generate_filledcapturepod(item, uuid) } if item is not None: category = re.search("\..+$", item[1]) gen_match_cat = (category is not None and category.group()[1:] in generated_item.keys()) gen_match_name = name in generated_item.keys() if gen_match_cat: name = category.group()[1:] self.ui.item_type.setText(name) generated = generated_item[name]() self.item = saves.new_item_data(name, 1, generated) elif gen_match_name: generated = generated_item[name]() self.item = saves.new_item_data(name, 1, generated) else: self.item = saves.new_item_data(name, 1, item[0]) self.ui.count.setValue(1) self.update() return True else: self.item = saves.new_item_data("", 1) self.ui.desc.setText("<html><body><strong>Empty Slot</strong></body></html>") self.update() return False
def update_item(self): """Update main item view with current item browser data.""" name = self.ui.item_type.text() # TODO: i guess eventually we're gonna need like.. some sort of generic # generate item function try: item = self.assets.items().get_item(name) if item[1].endswith("generatedgun"): options = self.assets.items().generate_gun(item) name = options["itemName"] elif item[1].endswith("generatedsword"): options = self.assets.items().generate_sword(item) name = options["itemName"] elif item[1].endswith("generatedshield"): options = self.assets.items().generate_shield(item) name = options["itemName"] elif item[1].endswith("sapling"): options = self.assets.items().generate_sapling(item) elif name == "filledcapturepod": options = self.assets.items().generate_filledcapturepod(item, self.player.get_uuid()) else: options = item[0] except TypeError: self.item = empty_slot().item self.ui.desc.setText("<html><body><strong>Empty Slot</strong></body></html>") self.ui.icon.setPixmap(QPixmap()) self.clear_item_options() return self.ui.item_type.setText(name) self.item = saves.new_item_data(name, 1, options) self.ui.count.setValue(1) self.update_item_info(name, options) self.populate_options()
def new_blueprint(name, data): return saves.new_item_data(name, 1, data)
def get_item(self): """Return an ItemWidget of the currently open item.""" name = self.ui.item_type.text() count = self.ui.count.value() data = self.item["parameters"] return saves.new_item_data(name, count, data)
def make_tech_list(tech_names): techs = [] for i in tech_names: techs.append(saves.new_item_data(i)) return techs