Example #1
0
class Plot:
    def __init__(self, labels, screen_width, screen_height):
        self.screen_width = screen_width / 2
        self.screen_height = screen_height
        self.screen = pygame.Surface((self.screen_width, self.screen_height))
        self.xliftoff = 50
        self.yliftoff = 50
        self.bar_width = 17
        self.labels = labels
        self.axes = Axis(self.screen, self.screen_width, self.screen_height,
                         self.xliftoff, self.yliftoff, self.bar_width)
        self.movement = 0
        self.profile = 0
        self.power = 0
        self.charts = 0
        pub.subscribe(self.movement_handler, "gamepad.movement")
        pub.subscribe(self.profile_handler, "gamepad.profile")
        pub.subscribe(self.power_handler, "Thruster.Power")

    def update(self, order):
        self.update_charts()
        values = self.charts[order]
        directions = [
            Bar(i, self.screen, self.screen_width, self.screen_height,
                self.xliftoff, self.yliftoff, self.bar_width) for i in range(6)
        ]
        self.screen.fill((200, 200, 255))
        self.screen = self.axes.draw()

        for i in range(6):
            self.screen = directions[i].draw(self.screen, values[i],
                                             self.labels[i])

        return self.screen

    def movement_handler(self, message):
        self.movement = message["gamepad_message"]

    def profile_handler(self, message):
        self.profile = message

    def power_handler(self, message):
        self.power = message["Thruster_message"]

    def update_charts(self):
        self.charts = [self.movement, self.power[0]]