Пример #1
0
    def update_chunks_from_current_rules(self):
        solid_type = self._get_current_solid_type()
        all_chunk_mapping_vars = []
        for y, row in enumerate(self.rules):
            for x, solid in enumerate(row):
                chunk_type = solid_type if solid else DmaType.FLOOR
                solid_neighbors = Dma.get_tile_neighbors(self.rules, x, y, bool(solid))
                all_chunk_mapping_vars.append(self.dma.get(chunk_type, solid_neighbors))

        for i, v_icon_view_name in enumerate(("rules_main_1", "rules_main_2", "rules_main_3")):
            icon_view_model: Gtk.ListStore = self.builder.get_object(v_icon_view_name).get_model()
            icon_view_model.clear()
            for j, idxs in enumerate(all_chunk_mapping_vars):
                icon_view_model.append([j, idxs[i]])
Пример #2
0
    def _rule_updated(self, i, variation):
        icon_view = self.builder.get_object('rules_chunk_picker')
        model, treeiter = icon_view.get_model(), icon_view.get_selected_items()
        if model is not None and treeiter is not None and treeiter != []:

            x = i % 3
            y = math.floor(i / 3)
            edited_value = model[treeiter][1]
            solid = bool(self.rules[x][y])
            self.dma.set(
                self._get_current_solid_type() if solid else DmaType.FLOOR,
                Dma.get_tile_neighbors(self.rules, x, y, solid),
                variation, edited_value
            )
            self.update_chunks_from_current_rules()
            self.mark_as_modified()
Пример #3
0
 def serialize(cls, data: Dma, **kwargs) -> bytes:
     return data.to_bytes()
Пример #4
0
 def deserialize(cls, data: bytes, **kwargs) -> Dma:
     return Dma(data)