Esempio n. 1
0
class Button(SpriteElement):
    def __init__(self, pos, type, input, text=None, frames=3, frames_per_row=3, up=0, hover=1, down=2): # assumes it's all in one picture
        super().__init__(pos, type, input, frames, frames_per_row)
        
        self.label = Label(pos, text, input)
        self.text_bounds = self.label.text.local_bounds
        self.text_offset = self.center - sf.Vector2(self.text_bounds.width/2, self.text_bounds.height/1.5)
        self.add_child(self.label)

        self.up = up
        self.hover = hover
        self.down = down
        
    def on_mouse_button_pressed(self, mouse_button, x, y):
        if contains(self.local_bounds, sf.Vector2(x, y)):
            self.sprite.set_frame(self.down) # down
    
    def on_mouse_button_released(self, button, x, y):
        self.sprite.set_frame(self.up) # up
            
    def on_mouse_moved(self, position, move):
        if contains(self.local_bounds, sf.Vector2(position.x, position.y)):
            self.sprite.set_frame(self.hover) # hover
        else:
            self.sprite.set_frame(self.up) # up
            
    def update(self, dt):
        super().update(dt)
        self.label.text.position = self.sprite.position + self.text_offset
            
    def draw(self, target):
        super().draw(target)
        self.label.draw(target)