def redo_buttons(self, button_ids: list[str], building: BuildingBase):
        self.scatter = get_screen("BaseBuildScreen").ids["scatter"]
        # Hacky fix so its not got every time the scatter is transformed

        self.clear_buttons()

        self.custom_buttons_holder.add_widget(self.spacer1)

        button_id: str
        for button_id in button_ids:
            button = BetterButton(button_id=button_id,
                                  size_type="big",
                                  on_release=button_pressed,
                                  button_storage=building)
            self.custom_buttons_holder.add_widget(button)

        self.custom_buttons_holder.add_widget(self.spacer2)

        if building.movable:  # TODO: Fix problem of buttons going everywhere because of fix of positioning
            self.transform_button_1 = BetterButton(
                button_id="move",
                size_type="small",
                on_touch_down=self.button_touch_down,
                on_touch_move=self.button_touch_move,
                on_touch_up=self.button_touch_up,
                button_storage=building)
            self.transform_button_2 = BetterButton(
                button_id="rotate",
                size_type="small",
                on_touch_down=self.button_touch_down,
                on_touch_move=self.button_touch_move,
                on_touch_up=self.button_touch_up,
                button_storage=building)
            GlobalEvents.bind(on_scatter_transformed=lambda: self.
                              redo_building_move_buttons(building))

            self.move_buttons_holder.add_widget(self.transform_button_1)
            self.move_buttons_holder.add_widget(self.transform_button_2)

            # TODO: Find better solution
            Clock.schedule_once(
                lambda _elapsed_time: self.redo_building_move_buttons(building
                                                                      ), 0)

        self.log_deep_debug("Added buttons to self, they are",
                            self.custom_buttons_holder.children)
Beispiel #2
0
    def __init__(self, **kwargs):
        BetterLogger.__init__(self)
        FloatLayout.__init__(self, **kwargs)

        GlobalEvents.bind(mine_batch_finished=self.batch_finished)
        GlobalEvents.bind(remove_mine_finished_icon=self.remove_finished_icon)
        GlobalEvents.bind(on_scatter_transformed=self.update_positions)
    def __init__(self, **kwargs):
        BetterLogger.__init__(self)
        FloatLayout.__init__(self, **kwargs)

        self.create_renderer()
        if userSettings.get("debug", "building_hit_boxes"):
            self.bind(buildings=lambda _instance, _value: self.redraw_hit_boxes())
            GlobalEvents.bind(building_moved=lambda _instance, _x, _y: self.redraw_hit_boxes(),
                              building_rotated=lambda _instance, _rotation: self.redraw_hit_boxes())

        self.log_info("Created renderer, starting to create building objects")

        for building_id in gameData.get("placed_buildings"):
            building_info = gameData.get("placed_buildings", building_id)
            building_class = str_to_building[building_info.pop("type")]
            building = building_class(**building_info)
            building.id = building_id

            self.log_debug("Created building object for building", building_id, "with info", building_info)
            self.add_building(building)

        self.log_info("Created objects -", self.buildings)