예제 #1
0
    def flush(self):
        self.controller.flush()
        Base.flushAll()
        self.controller.target.print()

        # 显示帧率
        if Con.FPSShowing:
            Base.printFPS(int(self.clock.get_fps()))

        pygame.display.update()
        self.controller.target.fill(Con.BackGround)
예제 #2
0
 def flush(self, playerPos=None):  # 只有在RelShowing成立时,playerPos才会起作用
     pygame.display.update()
     Base.CurrentScreen.fill([int(i - 20) % 256 for i in Con.BackGround])  # 周围变色
     self.frame.fill(Con.BackGround)
     # 更新manager内的角色
     self.manager.flush()
     # 执行打印任务
     Base.flushAll()
     # 更新Frame
     if Con.RelativeShowing and playerPos and self.onePlayer:
         pos = [-i for i in playerPos]
         w, h = Con.ScreenSize
         pos[0] += w // 2
         pos[1] += h // 2
         self.frame.print(pos)
     else:
         self.frame.print((0, 0))
예제 #3
0
    def showMenu(self):
        while True:
            events = pygame.event.get()
            for e in events:
                if e.type == pygame.QUIT:
                    self.close()
                    return False, None
                if e.type == pygame.VIDEORESIZE:
                    if Con.FullScreen:  # 全屏不缩放
                        continue
                    if Con.ScreenSize[0] != e.size[0]:  # 横改变
                        width = e.size[0]
                        height = int(e.size[0] / Con.ScreenSizeRatio)
                    else:  # 纵改变
                        height = e.size[1]
                        width = int(e.size[1] * Con.ScreenSizeRatio)
                    size = max(width, Con.MinSize[0]), max(height, Con.MinSize[1])
                    self.resize(size, pygame.RESIZABLE)
                if e.type == pygame.MOUSEBUTTONDOWN:
                    if Base.mouseInRect(self.startRect):
                        return ['c', 's'][self.chooseServer], [self.cUI, self.sUI][self.chooseServer].getText()
                    if Base.mouseInRect(self.backRect):
                        self.close()
                        return False, None
                    if Base.mouseInRect(self.toggleRect):
                        self.toggle()
                if e.type == pygame.KEYDOWN:
                    if e.key in self.fullKeys:
                        self.fullScreen()
                    if e.key in self.toggleSCKeys:
                        self.toggle()
                    if e.key in self.quitKeys:
                        self.close()
                        return False, None
                    if e.key in self.refreshKeys:
                        self.__init__()
                    if e.key in self.startKeys:
                        return ['c', 's'][self.chooseServer], [self.cUI, self.sUI][self.chooseServer].getText()
                    if e.key in self.settingKeys:
                        self.setting()
            Base.CurrentScreen.fill(Con.BackGround)
            # 显示对应UI
            ui = self.sUI if self.chooseServer else self.cUI
            ui.update(events)
            ui.pack()
            # 摆放底部文字
            bottom = 'Create ' + ["CLIENT", "SERVER"][self.chooseServer] + ' [SPACE] to toggle'
            textbottom = self.font.render(
                bottom,
                True, Con.TextColor, self.sOrcColor.calcColor()
            )
            w, h = textbottom.get_size()
            sw, sh = Base.CurrentScreen.get_size()
            mouseposx, mouseposy = pygame.mouse.get_pos()
            textbottommovedistansex = sw - w
            textbottompos = (int(textbottommovedistansex * mouseposx / sw), sh - textbottom.get_height())  # 浮动式摆法
            Base.CurrentScreen.blit(textbottom, textbottompos)
            self.startRect = pygame.Rect([*textbottompos, *textbottom.get_size()])
            # 返回按钮
            back = self.font.render('Back', True, Con.TextColor)
            backPos = (0, 0)
            Base.CurrentScreen.blit(back, backPos)
            self.backRect = pygame.Rect([*backPos, *back.get_size()])
            # 切换按钮
            toggle = self.font.render('Toggle', True, Con.TextColor, self.sOrcColor.calcColor())
            togglePos = (
                int(Base.CurrentScreen.get_width() - toggle.get_width()),
                0
            )
            Base.CurrentScreen.blit(toggle, togglePos)
            self.toggleRect = pygame.Rect([*togglePos, *toggle.get_size()])

            # 显示帧率
            if Con.FPSShowing:
                Base.printFPS(int(self.clock.get_fps()))

            # 刷新
            Base.flushAll()
            pygame.display.update()
            self.clock.tick(Con.FPS)
            Base.addTime()