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]])
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()
def serialize(cls, data: Dma, **kwargs) -> bytes: return data.to_bytes()
def deserialize(cls, data: bytes, **kwargs) -> Dma: return Dma(data)