def fix_transform_edges(self, touch: MotionEvent):
        (left, bottom), (width, height) = self.bbox
        right, top = left + width, bottom + height

        dx, dy, dz = 0, 0, 0

        if left > 0:
            dx = 0 - left

        elif right < graphics.width():
            dx = graphics.width() - right

        if bottom > 0:
            dy = 0 - bottom

        elif top < graphics.height():
            dy = graphics.height() - top

        self.apply_transform(Matrix().translate(dx, dy, dz))
        self.dispatch("on_transform_with_touch", touch)
        GlobalEvents.dispatch("on_scatter_transformed")
    def on_touch_down(self, touch: MotionEvent):
        if touch.is_mouse_scrolling:
            # dx, dy, dz = 0, 0, 0
            # z = self.scale

            if touch.button == 'scrolldown':

                if self.scale < self.scale_max:

                    nextScale = self.scale * (1 + self.scroll_sensitivity)
                    if nextScale < self.scale_max:
                        self.scale = nextScale

                    else:
                        self.scale = self.scale_max

            elif touch.button == 'scrollup':
                if self.scale > self.scale_min:

                    nextScale = self.scale * (1 - self.scroll_sensitivity)
                    if nextScale > self.scale_min:
                        self.scale = nextScale

                    else:
                        self.scale = self.scale_min

            else:
                self.log_warning(
                    "Touch event was sent and mouse was scrolling but not up or down - ",
                    touch)

            # bdz = self.scale - z
            # self.dispatch("on_transformed", dx, dy, dz)
            self.dispatch("on_transform_with_touch", touch)
            GlobalEvents.dispatch("on_scatter_transformed")

        else:
            ScatterLayout.on_touch_down(self, touch)

        self.fix_transform_edges(touch)
 def on_rotation(self, _instance, value):
     self._obj.rotation.z = value
     GlobalEvents.dispatch("building_rotated", self, value)
 def on_y(self, _instance, value):
     self._obj.pos.y = value
     GlobalEvents.dispatch("building_moved", self, self.x, value)
 def on_x(self, _instance, value):
     self._obj.pos.x = value
     GlobalEvents.dispatch("building_moved", self, value, self.y)
    def mine_batch_finished(self):
        self.log_deep_debug("Finished mining batch of", self.mine_batch_amount,
                            self.mine_item)

        GlobalEvents.dispatch("mine_batch_finished", self)
    def reset(self):
        self.scale = 1
        self.rotation = 0
        self.pos = 0, 0

        GlobalEvents.dispatch("on_scatter_transformed")
Beispiel #8
0
 def done_removing(self):
     GlobalEvents.dispatch("remove_mine_finished_icon", self)