Example #1
0
class LabArm():
    def __init__(self):
        pygame.init()

        self.imgs = Images()
        self.canvas = Canvas()
        self.netw = Network()
        self.fonts = Fonts()
        self.events = PCEvents()
        self.buttons = Buttons()

        self.screen = pygame.display.set_mode(SCREEN_SIZE)

    def run(self):
        while True:
            self.events.handle(self.screen, self.netw)
            self.canvas.draw(self.screen)
            self.buttons.draw(self.screen)
            self.fonts.draw(self.screen)
            self.netw.draw(self.screen)
            pygame.display.flip()
Example #2
0
    def run(self):
        g = self.g
        tick = 30
        clock = pygame.time.Clock()
        running = True

        level_key = sorted(self._levels.keys())[0]

        disp_w, disp_h = self.g.surface.get_size()

        board_surface = self.g.surface.subsurface(
            pygame.Rect((0,0), (disp_w/2, disp_h*7/8)))

        buttons_surface = self.g.surface.subsurface(
            pygame.Rect((0, disp_h*7/8), (disp_w, disp_h/8)))

        tao_surface = self.g.surface.subsurface(
            pygame.Rect((disp_w/2, 0), (disp_w/2, disp_h*7/8)))

        buttons = Buttons(self.g, buttons_surface)

        bg_colors = mk_color_set()
        frame_cnt = 0
        while running:

            if True: # debug
                # Pulse the background to see what's being redrawn.
                self.g.surface.fill(
                    bg_colors[frame_cnt%len(bg_colors)])

            if g.android:
                if g.android.check_pause():
                    g.android.wait_for_resume()

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        running = False

                if event.type in (pygame.MOUSEBUTTONDOWN, pygame.MOUSEBUTTONUP):

                    if buttons.collidepoint(event.pos):
                        action = buttons.mouse_event(event, buttons_surface)
                        if action is not None:
                            if action.lower() == "abort":
                                running = False
                            elif action == "+":
                                level.change_size(1)
                            elif action == "-":
                                level.change_size(-1)

                    if level.collidepoint(event.pos, board_surface):
                        action = level.mouse_event(event, board_surface)



            level = self._levels[level_key]
            level.draw(board_surface)

            buttons.draw()
     
            pygame.display.flip()
            frame_cnt += 1
            clock.tick(tick)
Example #3
0
class PygameView:
    def __init__(self, event_manager, 
                       display_manager,
                       tile_manager,
                       level_manager):
        self.em = event_manager
        self.connections = [
            self.em.register(DisplayResizeEvent, self.on_display_resize),
            self.em.register(LevelKeyChangeEvent, self.on_display_resize),
            self.em.register(LevelSizeChangeEvent, self.on_display_resize),
            self.em.register(TickEvent, self.on_tick),
        ]
        self.dm = display_manager
        self.tm = tile_manager
        self.lm = level_manager

        self.board_surface = None
        self.board_view = None

        self.buttons_surface = None
        self.tao_surface = None

        self.buttons = None
        self.tao = None



    def on_display_resize(self, event):
        """
        * also used when switching Levels
        * also used when changing a Level's grid size
        """
        disp_surf = self.dm.screen
        disp_w, disp_h = disp_surf.get_size()

        # The board is where the current level is shown
        # in the top left.
        self.board_surface = disp_surf.subsurface(
            pygame.Rect((0,0), (disp_w/2, disp_h*7/8)))
        self.board_view = BoardView(self.board_surface, self.lm, self.tm, self.em)

        # "buttons" is the collection of buttons across the bottom.
        self.buttons_surface = disp_surf.subsurface(
            pygame.Rect((0, disp_h*7/8), (disp_w, disp_h/8)))
        self.buttons = Buttons(self.buttons_surface, self.em)
        self.buttons.calc_rects()

        # "tao" means "tiles and objects"
        # It's the selection control for tiles and objects
        # in the top right.
        self.tao_surface = disp_surf.subsurface(
            pygame.Rect((disp_w/2, 0), (disp_w/2, disp_h*7/8)))
        self.tao = TAO(self.tao_surface, self.tm, self.em)


    def on_tick(self, event):
        #LOGGER.info("[[render]]")

        screen = self.dm.screen

        screen.fill((0, 0, 0))

        tm = self.tm

        self.board_view.draw_edit_grid()
        self.board_view.draw()

        self.buttons.draw()
        self.tao.draw()

        pygame.display.update()