Ejemplo n.º 1
0
    def __init__(self, shippo):
        self.shippo = shippo
        self.size = shippo.W, shippo.H

        # init view control buttons
        thick = 40
        w, h = self.size
        visible = 0
        self.buttons = []
        self.buttons.append(Button(Rect((0, 0), (w, thick)), 'up', visible))
        self.buttons.append(Button(Rect((w - 3*thick, 0), (3*thick, h)), 'right', visible))
        self.buttons.append(Button(Rect((0, h - thick), (w, thick)), 'down', visible))
        self.buttons.append(Button(Rect((0, 0), (thick, h)), 'left', visible))

        self.buttons.append(Button(Rect((0, 0), (w, h)), 'scroll', 0))

        for button in self.buttons:
            self.shippo.UISprites.append(button)

        # bind event
        self.speed = speed = 10 # scroll speed
        self.buttons[0].bind(Button.Over, self.mover((0, -speed)))
        self.buttons[1].bind(Button.Over, self.mover((speed, 0)))
        self.buttons[2].bind(Button.Over, self.mover((0, speed)))
        self.buttons[3].bind(Button.Over, self.mover((-speed, 0)))
        def scroll(event):
            ds = 0.05
            if event.button == 4: 
                # scroll up, zoom in
                ds = ds
            elif event.button == 5:
                ds = -ds
            self.shippo.viewBox.zoom(event.pos, ds)
        self.buttons[4].bind(Button.Scroll, scroll)
        # self.buttons[4].bind(Button.Press, lambda event:self.shippo.viewBox.zoom(event.pos, 0))

        hidedash = Button(Rect(self.shippo.dashBoard.rect), 'hidedash', 0)
        self.buttons.append(hidedash)
        hidedash.bind(Button.Over, self.hide_dash)
        def start_show(event):
            self.showingDash = 1
            self.shippo.dashBoard.hided = 0
        hidedash.bind(Button.Out, start_show)
        self.showingDash = 0

        # bind events for every ship
        def shower(obj):
            def show_detail(event):
                shippo.detailBoard.update_target(obj)
            return show_detail

        for ship in self.shippo.ships:
            ship.button.bind(Button.Over, shower(ship))
            ship.button.bind(Button.Out, shower(None))

        for res in self.shippo.resources:
            res.button.bind(Button.Over, shower(res))
            res.button.bind(Button.Out, shower(None))

        self.vim_bindings = {K_h: self.mover((-speed, 0)), K_j: self.mover((0, speed)), K_k: self.mover((0, -speed)), K_l: self.mover((speed, 0))}