Пример #1
0
    def get_equip(self, name):
        """Return the raw values of both slots in a given equipment bag."""
        logging.debug("Getting %s contents", name)
        equip = getattr(self.ui, name)
        main_cell = equip.item(0, 0)
        glamor_cell = equip.item(0, 1)

        # when you drag itemwidgets around the cell will become empty so just
        # pretend it had an empty slot value
        empty_main = (main_cell is None or type(main_cell) is QTableWidgetItem
                      or main_cell.item is None)
        if empty_main:
            main = None
        else:
            widget = main_cell.item
            main = saves.new_item(widget["name"], widget["count"],
                                  widget["parameters"])

        empty_glamor = (glamor_cell is None
                        or type(glamor_cell) is QTableWidgetItem
                        or glamor_cell.item is None)
        if empty_glamor:
            glamor = None
        else:
            widget = glamor_cell.item
            glamor = saves.new_item(widget["name"], widget["count"],
                                    widget["parameters"])

        return main, glamor
Пример #2
0
    def get_equip(self, name):
        """Return the raw values of both slots in a given equipment bag."""
        logging.debug("Getting %s contents", name)
        equip = getattr(self.ui, name)
        main_cell = equip.item(0, 0)
        glamor_cell = equip.item(0, 1)

        # when you drag itemwidgets around the cell will become empty so just
        # pretend it had an empty slot value
        empty_main = (main_cell is None or
                      type(main_cell) is QTableWidgetItem or
                      main_cell.item is None)
        if empty_main:
            main = None
        else:
            widget = main_cell.item
            main = saves.new_item(widget["name"],
                                  widget["count"],
                                  widget["parameters"])

        empty_glamor = (glamor_cell is None or
                        type(glamor_cell) is QTableWidgetItem or
                        glamor_cell.item is None)
        if empty_glamor:
            glamor = None
        else:
            widget = glamor_cell.item
            glamor = saves.new_item(widget["name"],
                                    widget["count"],
                                    widget["parameters"])

        return main, glamor
Пример #3
0
    def get_bag(self, name):
        """Return the entire contents of a given non-equipment bag as raw values."""
        logging.debug("Getting %s contents", name)
        row = column = 0
        bag = getattr(self.player, "get_" + name)()

        for i in range(len(bag)):
            item = getattr(self.ui, name).item(row, column)
            empty_item = (item is None or type(item) is QTableWidgetItem
                          or item.item is None)
            if empty_item:
                item = None
            else:
                widget = item.item
                item = saves.new_item(widget["name"], widget["count"],
                                      widget["parameters"])

            bag[i] = item

            # so far all non-equip bags are 10 cols long
            column += 1
            if (column % 10) == 0:
                row += 1
                column = 0

        return bag
Пример #4
0
    def get_bag(self, name):
        """Return the entire contents of a given non-equipment bag as raw values."""
        logging.debug("Getting %s contents", name)
        row = column = 0
        bag = getattr(self.player, "get_" + name)()

        for i in range(len(bag)):
            item = getattr(self.ui, name).item(row, column)
            empty_item = (item is None or
                          type(item) is QTableWidgetItem or
                          item.item is None)
            if empty_item:
                item = None
            else:
                widget = item.item
                item = saves.new_item(widget["name"],
                                      widget["count"],
                                      widget["parameters"])

            bag[i] = item

            # so far all non-equip bags are 10 cols long
            column += 1
            if (column % 10) == 0:
                row += 1
                column = 0

        return bag
Пример #5
0
    def new_item_edit(self, bag):
        """Display a new item edit dialog using the select cell in a given bag."""
        logging.debug("New item edit dialog")
        row = bag.currentRow()
        column = bag.currentColumn()
        current = bag.currentItem()
        item = saves.new_item("", 0, {})
        # cells don't retain ItemSlot widget when they've been dragged away
        if type(current) is QTableWidgetItem or current.item is None:
            pass
        else:
            item.update(current.item)

        item_edit = ItemEdit(self.window, item,
                             self.player, self.remember_browser)

        def update_slot():
            logging.debug("Writing changes to slot")
            try:
                new_slot = ItemWidget(item_edit.get_item(), self.assets)
                if new_slot.item["name"] != "":
                    bag.setItem(row, column, new_slot)
                    self.remember_browser = item_edit.remember_browser
                    self.set_edited()
            except TypeError:
                dialog = QMessageBox(item_edit.dialog)
                dialog.setWindowTitle("Invalid Item ID")
                dialog.setText("That item ID does not exist in the Starbound assets.")
                dialog.setStandardButtons(QMessageBox.Close)
                dialog.setIcon(QMessageBox.Critical)
                dialog.exec()

        def trash_slot():
            dialog = QMessageBox(item_edit.dialog)
            dialog.setWindowTitle("Trash Item")
            dialog.setText("Are you sure?")
            dialog.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            dialog.setDefaultButton(QMessageBox.No)
            dialog.setIcon(QMessageBox.Question)
            if dialog.exec() == QMessageBox.Yes:
                logging.debug("Trashed item")
                bag.setItem(row, column, empty_slot())
                item_edit.dialog.close()
                self.set_edited()

        item_edit.dialog.accepted.connect(update_slot)
        item_edit.ui.trash_button.clicked.connect(trash_slot)
        item_edit.dialog.exec()
Пример #6
0
    def new_item_edit(self, bag):
        """Display a new item edit dialog using the select cell in a given bag."""
        logging.debug("New item edit dialog")
        row = bag.currentRow()
        column = bag.currentColumn()
        current = bag.currentItem()
        item = saves.new_item("", 0, {})
        # cells don't retain ItemSlot widget when they've been dragged away
        if type(current) is QTableWidgetItem or current.item is None:
            pass
        else:
            item.update(current.item)

        item_edit = ItemEdit(self.window, item, self.player,
                             self.remember_browser)

        def update_slot():
            logging.debug("Writing changes to slot")
            new_slot = ItemWidget(item_edit.get_item(), self.assets)
            if new_slot.item["name"] != "":
                bag.setItem(row, column, new_slot)
                self.remember_browser = item_edit.remember_browser
                self.set_edited()

        def trash_slot():
            dialog = QMessageBox(item_edit.dialog)
            dialog.setWindowTitle("Trash Item")
            dialog.setText("Are you sure?")
            dialog.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            dialog.setDefaultButton(QMessageBox.No)
            dialog.setIcon(QMessageBox.Question)
            if dialog.exec() == QMessageBox.Yes:
                logging.debug("Trashed item")
                bag.setItem(row, column, empty_slot())
                item_edit.dialog.close()
                self.set_edited()

        item_edit.dialog.accepted.connect(update_slot)
        item_edit.ui.trash_button.clicked.connect(trash_slot)
        item_edit.dialog.exec()
Пример #7
0
    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(name, 1, options)
        self.ui.count.setValue(1)
        self.update_item_info(name, options)
        self.populate_options()
Пример #8
0
    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(name, 1, options)
        self.ui.count.setValue(1)
        self.update_item_info(name, options)
        self.populate_options()
Пример #9
0
 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["data"]
     return saves.new_item(name, count, data)
Пример #10
0
 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["data"]
     return saves.new_item(name, count, data)