Esempio n. 1
0
    def __init__(self, beanAmount):
        if not ScavengerHuntEffect.images:
            ScavengerHuntEffect.images = loader.loadModel('phase_4/models/props/tot_jar')
        self.npRoot = DirectFrame(parent=aspect2d, relief=None, scale=0.75, pos=(0, 0, 0.6))
        if beanAmount > 0:
            self.npRoot.setColorScale(VBase4(1, 1, 1, 0))
            self.jar = DirectFrame(parent=self.npRoot, relief=None, image=ScavengerHuntEffect.images.find('**/tot_jar'))
            self.jar.hide()
            self.eventImage = NodePath('EventImage')
            self.eventImage.reparentTo(self.npRoot)
            self.countLabel = DirectLabel(parent=self.jar, relief=None, text='+0', text_pos=(0.02, -0.2), text_scale=0.25, text_fg=(0.95, 0.0, 0, 1), text_font=ToontownGlobals.getSignFont())

            def countUp(t, startVal, endVal):
                beanCountStr = startVal + t * (endVal - startVal)
                self.countLabel['text'] = '+' + `(int(beanCountStr))`

            def setCountColor(color):
                self.countLabel['text_fg'] = color

            self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(1), Func(self.jar.show), LerpColorScaleInterval(self.eventImage, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Parallel(LerpScaleInterval(self.npRoot, 1, scale=0.5, startScale=0.75), LerpPosInterval(self.npRoot, 1, pos=VBase3(-0.9, 0, -0.83))), LerpFunc(countUp, duration=2, extraArgs=[0, beanAmount]), Func(setCountColor, VBase4(0.95, 0.95, 0, 1)), Wait(3), Func(self.destroy))
        else:
            self.npRoot.setColorScale(VBase4(1, 1, 1, 0))
            self.attemptFailedMsg()
            self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(5), LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Func(self.destroy))
        return
Esempio n. 2
0
    def _createComponents(self):
        self.debug("Creating GUI Components")

        self.categoryMenu = self.parent.attachNewNode("CategoryMenu")
        self.categoryMenu.setPos(-350, 0, -49)

        self.sidebar = self.parent.attachNewNode("EditorSidebar")

        self.sidebarBackground = DirectFrame(
            parent=self.sidebar,
            pos=(0, 0, 0),
            frameSize=(0, 92, 0, -base.win.getYSize()),
            frameColor=(0.05, 0.05, 0.05, 1.0),
        )

        self.logo = BetterOnscreenImage(
            parent=self.sidebar, transparent=False, image="Editor/GUI/logo.png", x=0, y=0, w=92, h=48
        )

        self.categoriesParent = self.sidebar.attachNewNode("Categories")
        self.categoriesParent.setPos(0, 0, -48)

        self.categoryIcons = {}

        self.animations = {"moveMenuArrow": None, "moveCategoryMenu": None}

        for index, category in enumerate(EditorCategories.Categories):
            iconDefault = "Editor/GUI/Icon-" + category.name + ".png"
            iconHover = "Editor/GUI/Icon-" + category.name + "-Hover.png"
            # iconActive = "Editor/GUI/Icon-" + category.name + "-Hover.png"
            self.categoryIcons[category.name] = BetterOnscreenImage(
                parent=self.categoriesParent, transparent=False, image=iconDefault, x=0, y=94 * index, w=92, h=94
            )

            # i hate direct gui
            hoverCatch = DirectFrame(
                parent=self.categoriesParent,
                frameSize=(0, 92, 0, -94),
                pos=(0, 0, -94 * index),
                frameColor=(0, 0, 0, 0),
                state=DGG.NORMAL,
            )

            # Add a hover effect
            hoverCatch.bind(DGG.ENTER, partial(self._showCategoryMenu, category.name))
            hoverCatch.bind(DGG.EXIT, partial(self._hideCategoryMenu, category.name))

        self.currentCategoryMarker = BetterOnscreenImage(
            parent=self.categoriesParent, image="Editor/GUI/Arrow-Right.png", x=92, y=0, w=11, h=21
        )

        self.currentCategoryMarker.hide()

        self.categoryMenuBg = DirectFrame(
            parent=self.categoryMenu, pos=(15, 0, 0), frameSize=(0, 300, 0, -400), frameColor=(0.2, 0.2, 0.2, 1.0)
        )
 def __init__(self, phaseNames):
     self.phaseNames = phaseNames
     self.model = loader.loadModel('models/gui/pir_m_gui_gen_loadingBar')
     bar = self.model.findTexture('pir_t_gui_gen_loadingBar')
     self.model.find('**/loading_bar').hide()
     self.topFrame = DirectFrame(parent = base.a2dTopRight, pos = (-0.80000000000000004, 0, -0.10000000000000001), sortOrder = NO_FADE_SORT_INDEX + 1)
     self.text = DirectLabel(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherText', pos = (0, 0, 0), text = '                     ', text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), text_scale = 0.040000000000000001, textMayChange = 1, text_align = TextNode.ARight, text_pos = (0.17000000000000001, 0), sortOrder = 2)
     self.bar = DirectWaitBar(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherBar', pos = (0, 0, 0), frameSize = (-0.40000000000000002, 0.38, -0.044999999999999998, 0.065000000000000002), borderWidth = (0.02, 0.02), range = 100, frameColor = (1, 1, 1, 1), barColor = (0, 0.29999999999999999, 0, 1), barTexture = bar, geom = self.model, geom_scale = 0.089999999999999997, geom_pos = (-0.014, 0, 0.01), text = '0%', text_scale = 0.040000000000000001, text_fg = (1, 1, 1, 1), text_align = TextNode.ALeft, text_pos = (0.19, 0), sortOrder = 1)
     self.bgFrame = DirectFrame(relief = DGG.FLAT, parent = self.topFrame, pos = (0, 0, 0), frameColor = (0.5, 0.27000000000000002, 0.35999999999999999, 0.20000000000000001), frameSize = (-0.44, 0.39000000000000001, -0.035999999999999997, 0.056000000000000001), borderWidth = (0.02, 0.02), scale = 0.90000000000000002, sortOrder = 0)
     self.accept('launcherPercentPhaseComplete', self.update)
Esempio n. 4
0
    def renderBuffers(self):
        self.buffersParent.node().removeAllChildren()

        posX = 0
        posY = 0

        for name in self.bufferOrder:
            target = self.buffers[name]
            for targetType in RenderTargetType.All:
                if not target.hasTarget(targetType):
                    continue
                tex = target.getTexture(targetType)
                sizeStr = str(tex.getXSize()) + " x " + str(tex.getYSize())

                if tex.getZSize() != 1:
                    sizeStr += " x " + str(tex.getZSize())

                sizeStr += " - " + str(self.calculateTexSize(tex)) + " MB"

                node = DirectFrame(parent=self.buffersParent, frameColor=(
                    1, 1, 1, 0.2), frameSize=(-self.innerPadding, self.texWidth + self.innerPadding, -self.texHeight - 30 - self.innerPadding, self.innerPadding + 15),
                    state=DGG.NORMAL)
                node.setPos(
                    20 + posX * (self.texWidth + self.texPadding), 0, -self.paddingTop - 22 - posY * (self.texHeight + self.texPadding + 44))
                node.bind(DGG.ENTER, partial(self.onMouseOver, node))
                node.bind(DGG.EXIT, partial(self.onMouseOut, node))
                node.bind(DGG.B1RELEASE, partial(self.showDetail, tex))

                aspect = tex.getYSize() / float(tex.getXSize())
                computedWidth = self.texWidth
                computedHeight = self.texWidth * aspect

                if computedHeight > self.texHeight:
                    # have to scale tex width instead
                    computedHeight = self.texHeight
                    computedWidth = tex.getXSize() / float(tex.getYSize()) * \
                        self.texHeight

                img = BetterOnscreenImage(
                    image=tex, parent=node, x=0, y=30, w=computedWidth,
                    h=computedHeight, transparent=False, nearFilter=False,
                    anyFilter=False)
                txtName = BetterOnscreenText(
                    text=name, x=0, y=0, size=13, parent=node)
                txtSizeFormat = BetterOnscreenText(
                    text=sizeStr, x=0, y=20, size=13, parent=node,
                    color=Vec3(0.2))
                txtTarget = BetterOnscreenText(
                    text=str(targetType), align="right", x=self.texWidth,
                    y=20, size=13, parent=node, color=Vec3(0.2))

                posX += 1
                if posX > self.pageSize:
                    posY += 1
                    posX = 0
class TrickOrTreatTargetEffect(ScavengerHuntEffect):

    def __init__(self, beanAmount):
        ScavengerHuntEffect.__init__(self, beanAmount)
        if beanAmount > 0:
            self.pumpkin = DirectFrame(parent=self.eventImage, relief=None, image=ScavengerHuntEffect.images.find('**/tot_pumpkin_tall'))

    def attemptFailedMsg(self):
        pLabel = DirectLabel(parent=self.npRoot, relief=None, pos=(0.0, 0.0, -0.15), text=TTLocalizer.TrickOrTreatMsg, text_fg=(0.95, 0.5, 0.0, 1.0), text_scale=0.12, text_font=ToontownGlobals.getSignFont())

    def destroy(self):
        if hasattr(self, 'pumpkin') and self.pumpkin:
            self.pumpkin.destroy()
        ScavengerHuntEffect.destroy(self)
Esempio n. 6
0
    def _createBugReport(self):
        """ Creates a bug report """

        w, h = self.showbase.win.getXSize(), self.showbase.win.getYSize()

        overlayBg = DirectFrame(parent=self.showbase.pixel2dp,
                                   frameColor=(0.05, 0.05, 0.05, 0.8),
                                   frameSize=(0, w, -h, 0))  # state=DGG.NORMAL
        overlay = BetterOnscreenImage(image="Data/GUI/BugReport.png", parent=self.showbase.pixel2dp, w=757, h=398, x=(w-757)/2, y=(h-398)/2)

        for i in xrange(2):
            self.showbase.graphicsEngine.renderFrame()
        reporter = BugReporter(self)
        overlay.remove()
        overlayBg.remove()
class WinterCarolingEffect(ScavengerHuntEffect):

    def __init__(self, beanAmount):
        ScavengerHuntEffect.__init__(self, beanAmount)
        if beanAmount > 0:
            sm = loader.loadModel('phase_5.5/models/estate/tt_m_prp_ext_snowman_icon')
            self.snowman = DirectFrame(parent=self.eventImage, relief=None, image=sm, scale=20.0)

    def attemptFailedMsg(self):
        pLabel = DirectLabel(parent=self.npRoot, relief=None, pos=(0.0, 0.0, -0.15), text=TTLocalizer.WinterCarolingMsg, text_fg=(0.9, 0.9, 1.0, 1.0), text_scale=0.12, text_font=ToontownGlobals.getSignFont())

    def destroy(self):
        if hasattr(self, 'snowman') and self.snowman:
            self.snowman.destroy()
        ScavengerHuntEffect.destroy(self)
    def createBugReport(self):
        """ Creates a bug report """

        w, h = self.showbase.win.getXSize(), self.showbase.win.getYSize()

        overlayBg = DirectFrame(parent=self.showbase.pixel2dp,
                                   frameColor=(0.05, 0.05, 0.05, 0.8),
                                   frameSize=(0, w, -h, 0))  # state=DGG.NORMAL
        overlay = BetterOnscreenImage(image="Data/GUI/BugReport.png", parent=self.showbase.pixel2dp, w=757, h=398, x=(w-757)/2, y=(h-398)/2)

        for i in xrange(2):
            self.showbase.graphicsEngine.renderFrame()
        reporter = BugReporter(self)
        overlay.remove()
        overlayBg.remove()
Esempio n. 9
0
    def _create_components(self):
        """ Creates the window components """
        self._node = self._parent.attach_new_node("Window")
        self._node.set_pos(self._pos.x, 1, -self._pos.y)
        border_px = 1
        border_frame_size = (-border_px, self._width + border_px, border_px,
                             -self._height - border_px)
        self._border_frame = DirectFrame(pos=(0, 1, 0),
                                         frameSize=border_frame_size,
                                         frameColor=(24 / 255.0, 131 / 255.0,
                                                     215 / 255.0, 1),
                                         parent=self._node,
                                         state=DGG.NORMAL)
        self._background = DirectFrame(pos=(0, 1, 0),
                                       frameSize=(0, self._width, 0,
                                                  -self._height),
                                       frameColor=(0.1, 0.1, 0.1, 1.0),
                                       parent=self._node)
        self._title_bar = DirectFrame(
            pos=(0, 1, 0),
            frameSize=(0, self._width, 0, -25),
            # frameColor=(0.058, 0.058, 0.058, 1),
            frameColor=(1, 1, 1, 1),
            parent=self._node,
            state=DGG.NORMAL)
        self._window_title = Text(parent=self._node,
                                  x=8,
                                  y=17,
                                  text=self._title,
                                  size=13,
                                  color=Vec3(0.15),
                                  may_change=True)
        self._btn_close = DirectButton(
            relief=DGG.FLAT,
            pressEffect=1,
            pos=(self._width - 22, 1, -12),
            frameColor=(1.0, 0.2, 0.2, 0.5),
            parent=self._node,
            scale=(45 / 2, 1, 24 / 2),
            image="/$$rp/rpcore/data/gui/close_window.png")

        # Init bindings
        self._btn_close.set_transparency(TransparencyAttrib.M_alpha)
        self._btn_close.bind(DGG.B1CLICK, self._request_close)
        self._btn_close.bind(DGG.WITHIN, self._on_close_btn_hover)
        self._btn_close.bind(DGG.WITHOUT, self._on_close_btn_out)
        self._title_bar.bind(DGG.B1PRESS, self._start_drag)
        self._title_bar.bind(DGG.B1RELEASE, self._stop_drag)
Esempio n. 10
0
class WinterCarolingEffect(ScavengerHuntEffect):

    def __init__(self, beanAmount):
        ScavengerHuntEffect.__init__(self, beanAmount)
        if beanAmount > 0:
            sm = loader.loadModel('phase_5.5/models/estate/tt_m_prp_ext_snowman_icon')
            self.snowman = DirectFrame(parent=self.eventImage, relief=None, image=sm, scale=20.0)

    def attemptFailedMsg(self):
        pLabel = DirectLabel(parent=self.npRoot, relief=None, pos=(0.0, 0.0, -0.15), text=TTLocalizer.WinterCarolingMsg, text_fg=(0.9, 0.9, 1.0, 1.0), text_scale=0.12, text_font=ToontownGlobals.getSignFont())

    def destroy(self):
        if hasattr(self, 'snowman') and self.snowman:
            self.snowman.destroy()
        
        ScavengerHuntEffect.destroy(self)
Esempio n. 11
0
 def build_page(self):
     menu_args = self.menu.gui.menu_args
     self.frm = DirectFrame(frameSize=(-1.5, 1.5, -.9, .9),
                            frameColor=(.95, .95, .7, .85))
     txt = _(
         'Please, visit our site after exiting!\n\nIt helps us! Thank you!')
     self.txt = OnscreenText(text=txt,
                             pos=(0, .64),
                             scale=.08,
                             wordwrap=32,
                             fg=menu_args.text_fg,
                             font=menu_args.font)
     menu_data = [('visit our site after exiting',
                   _('visit our site after exiting'),
                   lambda: self.on_end(True)),
                  ("don't visit our site after exiting",
                   _("don't visit our site after exiting"),
                   lambda: self.on_end(False))]
     btn_args = self.menu.gui.btn_args
     btn_args['frameSize'] = (-12, 12, -.8, 1.2)
     btn_visit = DirectButton(text=menu_data[0][1],
                              pos=(0, 1, 0),
                              command=menu_data[0][2],
                              text_scale=.9,
                              **btn_args)
     btn_dont_visit = DirectButton(text=menu_data[1][1],
                                   pos=(0, 1, -.5),
                                   command=menu_data[1][2],
                                   text_scale=.7,
                                   **btn_args)
     widgets = [self.frm, self.txt, btn_visit, btn_dont_visit]
     map(self.add_widget, widgets)
     PageGui.build_page(self, False)
Esempio n. 12
0
 def askForRequeue(self):
     buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
     okImageList = (buttons.find('**/ChtBx_OKBtn_UP'),
                    buttons.find('**/ChtBx_OKBtn_DN'),
                    buttons.find('**/ChtBx_OKBtn_Rllvr'))
     cancelImageList = (buttons.find('**/CloseBtn_UP'),
                        buttons.find('**/CloseBtn_DN'),
                        buttons.find('**/CloseBtn_Rllvr'))
     buttons.removeNode()
     self.cr.mainMenu.buttons[0]['state'] = DISABLED
     self.requeueFrame = DirectFrame(
         relief=None,
         image=loader.loadModel('phase_13/models/gui/fade'),
         image_scale=(5, 2, 2),
         image_color=(0, 0, 0, 0.3),
         image_pos=(0.5, 0, 0),
         state=NORMAL,
         sortOrder=20)
     self.requeueDialog = YesNoDialog(
         parent=self.requeueFrame,
         text='Would you like to requeue?',
         button_text_pos=(0, -0.1),
         button_relief=None,
         buttonImageList=[okImageList, cancelImageList],
         button_text_font=FONT,
         text_font=FONT,
         command=self.requeueResponse)
Esempio n. 13
0
    def _create_components(self):
        """ Creates the window components """
        self._node = self._parent.attach_new_node("Window")
        self._node.set_pos(self._pos.x, 1, -self._pos.y)
        border_px = 1
        self._border_frame = DirectFrame(
            pos=(0, 1, 0), frameSize=(-border_px, self._width + border_px,
            border_px, -self._height - border_px),
            frameColor=(24 / 255.0, 131 / 255.0, 215 / 255.0, 1),
            parent=self._node, state=DGG.NORMAL)
        self._background = DirectFrame(
            pos=(0, 1, 0), frameSize=(0, self._width, 0, -self._height),
            frameColor=(0.1, 0.1, 0.1, 1.0), parent=self._node)
        self._title_bar = DirectFrame(
            pos=(0, 1, 0), frameSize=(0, self._width, 0, -25),
            # frameColor=(0.058, 0.058, 0.058, 1),
            frameColor=(1, 1, 1, 1),
            parent=self._node,
            state=DGG.NORMAL)
        self._window_title = Text(
            parent=self._node, x=8, y=17, text=self._title, size=13,
            color=Vec3(0.15), may_change=True)
        self._btn_close = DirectButton(
            relief=DGG.FLAT, pressEffect=1, pos=(self._width - 22, 1, -12),
            frameColor=(1.0, 0.2, 0.2, 0.5), parent=self._node,
            scale=(45 / 2, 1, 24 / 2),
            image="/$$rp/data/gui/close_window.png")

        # Init bindings
        self._btn_close.set_transparency(TransparencyAttrib.M_alpha)
        self._btn_close.bind(DGG.B1CLICK, self._request_close)
        self._btn_close.bind(DGG.WITHIN, self._on_close_btn_hover)
        self._btn_close.bind(DGG.WITHOUT, self._on_close_btn_out)
        self._title_bar.bind(DGG.B1PRESS, self._start_drag)
        self._title_bar.bind(DGG.B1RELEASE, self._stop_drag)
Esempio n. 14
0
    def set_news(self):
        menu_gui = self.menu.gui
        menu_args = self.menu.gui.menu_args
        feeds = parse(self.props.feed_url)
        if not feeds['entries']:
            return

        def conv(datestr):
            months = [
                'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
                'Oct', 'Nov', 'Dec'
            ]
            date_el = datestr.split()[1:-2]
            month = months.index(date_el[1]) + 1
            day, year = date_el[0], date_el[2]
            return datetime(int(year), month, int(day))

        publ = lambda entry: conv(entry['published'])
        rss = sorted(feeds['entries'], key=publ)
        conv_time = lambda ent: datetime.strftime(conv(ent), '%b %d')
        rss = [(conv_time(ent['published']), ent['title']) for ent in rss]
        rss.reverse()
        rss = rss[:5]

        def conv_str(_str):
            return _str if len(_str) <= 20 else _str[:20] + '...'

        rss = [(_rss[0], conv_str(_rss[1])) for _rss in rss]
        frm = DirectFrame(frameSize=(0, 1.0, 0, .75),
                          frameColor=(.2, .2, .2, .5),
                          pos=(.05, 1, .1),
                          parent=base.a2dBottomLeft)
        texts = [
            OnscreenText(_('Last news:'),
                         pos=(.55, .75),
                         scale=.055,
                         wordwrap=32,
                         parent=base.a2dBottomLeft,
                         fg=menu_args.text_bg,
                         font=menu_args.font)
        ]
        texts += [
            OnscreenText(': '.join(rss[i]),
                         pos=(.1, .65 - i * .1),
                         scale=.055,
                         wordwrap=32,
                         parent=base.a2dBottomLeft,
                         align=TextNode.A_left,
                         fg=menu_args.text_bg,
                         font=menu_args.font) for i in range(5)
        ]
        btn_args = menu_gui.btn_args.copy()
        btn_args['scale'] = .055
        btn = DirectButton(text=_('show'),
                           pos=(.55, 1, .15),
                           command=eng.open_browser,
                           extraArgs=[self.props.site_url],
                           parent=base.a2dBottomLeft,
                           **btn_args)
        map(self.add_widget, [frm] + texts + [btn])
Esempio n. 15
0
 def create_layout(self, group):
     scale3 = LVector3(self.text_scale[0], 1.0, self.text_scale[1])
     buttonSize = self.font_size * 2
     self.layout = DirectWidgetContainer(
         TabbedFrame(frameSize=(0, self.width, -self.height, 0),
                     tab_frameSize=(0, 7, 0, 2),
                     tab_scale=scale3,
                     tab_text_align=TextNode.ALeft,
                     tab_text_pos=(0.2, 0.6),
                     tabUnselectedColor=settings.tab_background,
                     tabSelectedColor=settings.panel_background,
                     scroll_scrollBarWidth=self.font_size,
                     scroll_verticalScroll_pageSize=self.font_size))
     self.layout.frame.setPos(0, 0, -buttonSize)
     for section in group.parameters:
         sizer = Sizer("vertical")
         frame = DirectFrame(state=DGG.NORMAL,
                             frameColor=settings.panel_background)
         self.add_parameters(frame, sizer, section.parameters)
         sizer.update((self.width, self.height))
         size = sizer.min_size
         frame['frameSize'] = (0, size[0], -size[1], 0)
         self.layout.frame.addPage(frame, section.name)
     title = "Editor - " + group.name
     self.window = Window(title,
                          parent=pixel2d,
                          scale=self.scale,
                          child=self.layout,
                          owner=self)
     self.window.register_scroller(self.layout.frame.viewingArea)
Esempio n. 16
0
    def _create_components(self):
        """ Internal method to init the widgets components """

        self._node.hide()

        # Create the texture where the gui component is rendered inside
        self._storage_tex = Image.create_2d("ExposureDisplay", 140, 20, "RGBA8")
        self._storage_tex.set_clear_color(Vec4(0.2, 0.6, 1.0, 1.0))
        self._storage_tex.clear_image()

        self._bg_frame = DirectFrame(
            parent=self._node, frameColor=(0.1, 0.1, 0.1, 1.0),
            frameSize=(200, 0, -10, -85), pos=(0, 0, 0))

        self._display_img = Sprite(
            image=self._storage_tex, parent=self._node, w=140, h=20, x=20, y=50)

        self._display_txt = Text(
            text="Current Exposure".upper(), parent=self._node, x=160, y=40,
            size=13, color=Vec3(0.8), align="right")

        # Create the shader which generates the visualization texture
        self._cshader_node = ComputeNode("ExposureWidget")
        self._cshader_node.add_dispatch(140 // 10, 20 // 4, 1)

        self._cshader_np = self._node.attach_new_node(self._cshader_node)

        # Defer the further loading
        Globals.base.taskMgr.doMethodLater(1.0, self._late_init, "ExposureLateInit")
Esempio n. 17
0
 def build_page(self):
     self.frm = DirectFrame(frameSize=(-1.5, 1.5, -.9, .9),
                            frameColor=(.95, .95, .7, .85))
     txt = _("What do you want to do?\n\nNB Use 'p' for pausing the game.")
     menu_args = self.menu.gui.menu_args
     self.txt = OnscreenText(text=txt,
                             pos=(0, .64),
                             scale=.08,
                             wordwrap=32,
                             fg=menu_args.text_fg,
                             font=menu_args.font)
     on_back = lambda: self.on_end(True)
     on_end = lambda: self.on_end(False)
     menu_data = [('back to the game', _('back to the game'), on_back),
                  ('back to the main menu', _('back to the main menu'),
                   on_end)]
     btn_args = self.menu.gui.btn_args
     btn_visit = DirectButton(text=menu_data[0][1],
                              pos=(0, 1, 0),
                              command=menu_data[0][2],
                              text_scale=.8,
                              **btn_args)
     btn_dont_visit = DirectButton(text=menu_data[1][1],
                                   pos=(0, 1, -.5),
                                   command=menu_data[1][2],
                                   text_scale=.8,
                                   **btn_args)
     map(self.add_widget, [self.frm, self.txt, btn_visit, btn_dont_visit])
     PageGui.build_page(self, False)
     eng.hide_cursor()
     eng.show_standard_cursor()
     eng.do_later(.01, eng.toggle_pause, [False])
Esempio n. 18
0
class TrickOrTreatTargetEffect(ScavengerHuntEffect):

    def __init__(self, beanAmount):
        ScavengerHuntEffect.__init__(self, beanAmount)

        if beanAmount > 0:
            self.pumpkin = DirectFrame(parent=self.eventImage, relief=None, image=ScavengerHuntEffect.images.find('**/tot_pumpkin_tall'))

    def attemptFailedMsg(self):
        pLabel = DirectLabel(parent=self.npRoot, relief=None, pos=(0.0, 0.0, -0.15), text=TTLocalizer.TrickOrTreatMsg, text_fg=(0.95, 0.5, 0.0, 1.0), text_scale=0.12, text_font=ToontownGlobals.getSignFont())

    def destroy(self):
        if hasattr(self, 'pumpkin') and self.pumpkin:
            self.pumpkin.destroy()

        ScavengerHuntEffect.destroy(self)
Esempio n. 19
0
 def __init__(self,
              enableMask = True, #NOTE THAT IT IS TRUE BY DEFAULT
              autoDestroy = True,
              sortType = 0, #0 for horizontal, 1 for vertical
              margin = 0.2,
              textList = ['OK','Cancel'],
              enablesList = None,
              command = None,
              frameSize = (-0.6,0.6,-0.45,0.45),
              buttonSize = BUTTON_SIZE,
              text = '',
              textPos = (0,0.2),
              startPos = (-0.4,0,-0.2),
              extraArgs = [],
              style = None,
              fadeScreen = 0.5,
              backgroundColor = None,
              **kwargs):
     if backgroundColor:
         bgColor = backgroundColor
     elif fadeScreen is not None:
         bgColor = (0,0,0,fadeScreen)
     else:
         bgColor = None
     
     SogalForm.__init__(self,enableMask = enableMask,backgroundColor=bgColor, **kwargs)
     if enableMask:
         self.reparentTo(aspect2d, sort = 1000)
     if not style:
         self.__style = base.getStyle()
     else:
         self.__style = color_themes.styles[style]
     
     self.__frame = DirectFrame(parent = self,frameSize = frameSize,**self.__style['hardframe'])
     self.__buttonList = []#DirectButton(parent = self, s)
     self.__text = OnscreenText(parent = self,text = text ,pos = textPos, **self.__style['text'])
     self.__command = command
     self.__autoDestroy = autoDestroy
     self._extraArgs = extraArgs
     
     if sortType == 0:
         self.__box = HLayout(margin = margin)
     else: self.__box = VLayout(margin = margin)
     self.__box.reparentTo(self)
     self.__box.setPos(startPos)
     
     for i in range(len(textList)):
         btn = DirectButton(text = textList[i], command = self.buttonCommand(i),frameSize = buttonSize, **self.__style['button'])
         self.__buttonList.append(btn)
         self.__box.append(btn)
         
     if enablesList:
         for i in range(len(enablesList)):
             if i >= len(self.__buttonList):
                 break
             if enablesList[i]:
                 self.__buttonList[i]['state'] = DGG.NORMAL
             else: self.__buttonList[i]['state'] = DGG.DISABLED
             
     self.show()
Esempio n. 20
0
class ChapterBase(DirectObject):
    def __init__(self, backgroundImage, rootParent):
        self.background = DirectFrame(image=backgroundImage,
                                      image_scale=.8,
                                      frameColor=(0, 0, 0, 0),
                                      frameSize=(-.8, .8, -.8, .8),
                                      scale=1,
                                      parent=rootParent)
        tex = self.background.component("image0").getTexture()
        tex.setMagfilter(SamplerState.FT_nearest)
        tex.setMinfilter(SamplerState.FT_nearest)

        self.startPos = (0, 0, 0)

    def destroy(self):
        self.ignoreAll()
        self.background.destroy()
Esempio n. 21
0
    def __init__(self, **kw):
        fade = loader.loadModel('phase_13/models/gui/fade')
        dialog_box = loader.loadModel('phase_3/models/gui/dialog_box_gui')
        optiondefs = (('relief', None, None), ('image', fade, None),
                      ('image_scale', (5, 2, 2), None), ('image_color',
                                                         (0, 0, 0, 0.3), None),
                      ('text', 'Options', None), ('text_font', FONT, None),
                      ('text_scale', 0.08, None), ('text_pos', (0, 0.4), None),
                      ('state', DGG.NORMAL, None), ('geom', dialog_box, None),
                      ('sortOrder', 20, None))

        self.defineoptions(kw, optiondefs)
        DirectFrame.__init__(self, aspect2d)
        self.initialiseoptions(OptionsPage)
        self._optionButtons = []
        self.saveButton = None
        fade.removeNode()
        dialog_box.removeNode()
Esempio n. 22
0
 def showWordAfter(self):
     self.menu.selectDialog.hide()
     props = WindowProperties()
     props.setCursorHidden(True)
     base.win.requestProperties(props)
     self.wordframe = DirectFrame(frameColor=(0, 0, 0, 1),
                                  frameSize=(-2, 2, -2, 2),
                                  pos=(0, 0, 0))
     self.wordImage = OnscreenImage(
         'res/models/SceneJPG/Scene1_Wall_Hall2.png',
         pos=(0, 0, 0),
         scale=(1.4, 1, 1))
     self.wordImage.reparentTo(self.wordframe)
     # self.wordImage.removeNode()
     self.wordframe.show()
     self.player.initTask()
     base.accept("escape", self.wordReturn)
     base.accept("mouse1", self.wordReturn)
Esempio n. 23
0
    def __init__(self, items):
        ''' 
            Initialize using the set of items specified
            Set of items should be passed as RadialItems
        '''
        DirectObject.__init__(self)
        # Initialize variables
        self.isActive = 0
        self.selected = 0

        self.items = items

        # Load the palletized gui model
        gui = loader.loadModel("resources/camera_gui.bam")

        # Create the frame
        self.frame = DirectFrame(geom=gui.find("**/radial_menu_bg"),
                                 parent=hidden,
                                 scale=1.3,
                                 relief=None)

        # Create the selection indicator
        self.selector = OnscreenImage(
            image=gui.find("**/radial_menu_bg_quarter"), parent=self.frame)

        # Create the selected item description box
        self.descriptionBox = OnscreenText(parent=self.frame,
                                           pos=(0, -.6),
                                           style=3,
                                           font=ToontownGlobals.getSignFont(),
                                           scale=0.05,
                                           bg=(0, 0, 0, .4))

        # Load all the and calculate their positions
        self.itemAngle = 360 / len(items)
        self.itemImages = []
        for i in range(len(items)):
            x = .38 * math.cos(i * deg2Rad(self.itemAngle))
            z = .38 * math.sin(i * deg2Rad(self.itemAngle))
            img = OnscreenImage(image=self.items[i].nodepath,
                                scale=0.2,
                                parent=self.frame,
                                pos=(x, 0, z))
            self.itemImages.append(img)
Esempio n. 24
0
    def __init__(self, rootParent=None):

        self.frmMain = DirectFrame(
            frameColor=(0.0, 0.0, 0.0, 0.75),
            frameSize=(-1, 1, -1, 1),
            hpr=LVecBase3f(0, 0, 0),
            pos=LPoint3f(0, 0, 0),
            parent=rootParent,
        )
        self.frmMain.setTransparency(1)

        self.btnQuit = DirectButton(
            hpr=LVecBase3f(0, 0, 0),
            pos=LPoint3f(0, 0, -0.75),
            scale=LVecBase3f(0.1, 0.1, 0.1),
            text='Quit',
            text_align=TextNode.A_center,
            text_scale=(1, 1),
            text_pos=(0, 0),
            text_fg=LVecBase4f(0, 0, 0, 1),
            text_bg=LVecBase4f(0, 0, 0, 0),
            parent=self.frmMain,
            command=base.messenger.send,
            extraArgs=["quitRoom"],
            pressEffect=1,
        )
        self.btnQuit.setTransparency(0)

        self.lblMessage = DirectLabel(
            frameColor=(0.0, 0.0, 0.0, 0.0),
            frameSize=(-2.981, 3.106, -0.325, 0.725),
            hpr=LVecBase3f(0, 0, 0),
            pos=LPoint3f(0, 0, 0),
            scale=LVecBase3f(0.2, 0.2, 0.2),
            text='Player A Won',
            text_align=TextNode.A_center,
            text_scale=(1.0, 1.0),
            text_pos=(0, 0),
            text_fg=LVecBase4f(1, 1, 1, 1),
            text_bg=LVecBase4f(0, 0, 0, 0),
            parent=self.frmMain,
        )
        self.lblMessage.setTransparency(0)
Esempio n. 25
0
    def __init__(self, node, name):
        SocketBase.__init__(self, node, name)

        self.type = INSOCKET

        self.frame = DirectFrame(
            frameColor=(0.25, 0.25, 0.25, 1),
            frameSize=(-1, 0, -self.height, 0),
            parent=node.frame,
        )

        SocketBase.createPlug(self, self.frame)

        self.text = DirectLabel(
            frameColor=(0, 0, 0, 0),
            frameSize=(0, 1, -self.height, 0),
            scale=(1, 1, 1),
            text=self.name,
            text_align=TextNode.A_left,
            text_scale=(0.1, 0.1),
            text_pos=(0.1, -0.02),
            text_fg=(1, 1, 1, 1),
            text_bg=(0, 0, 0, 0),
            parent=self.frame,
        )

        self.spinBox = DirectSpinBox(
            pos=(0.5, 0, 0),
            value=5,
            minValue=-100,
            maxValue=100,
            repeatdelay=0.125,
            buttonOrientation=DGG.HORIZONTAL,
            valueEntry_text_align=TextNode.ACenter,
            borderWidth=(0.1, 0.1),
            parent=self.frame,
            incButtonCallback=self.updateConnectedNodes,
            decButtonCallback=self.updateConnectedNodes,
        )
        self.spinBox.setScale(0.1)

        self.resize(1)
Esempio n. 26
0
 def mostrar_camaras(self):
     #
     if self.reflection_buffer:
         lbl_refl=DirectLabel(text="reflejo", pos=LVector3f(-1.05, -0.4), scale=0.05)
         lbl_refl.reparentTo(self.base.aspect2d)
         frame_refl=DirectFrame(image=self.reflection_buffer.getTexture(0), scale=0.25, pos=LVector3f(-1.05, -0.7))
         frame_refl.reparentTo(self.base.aspect2d)
     #
     if self.refraction_buffer:
         lbl_refr=DirectLabel(text="refraccion", pos=LVector3f(-0.5, -0.4), scale=0.05)
         lbl_refr.reparentTo(self.base.aspect2d)
         frame_refr=DirectFrame(image=self.refraction_buffer.getTexture(0), scale=0.25, pos=LVector3f(-0.5, -0.7))
         frame_refr.reparentTo(self.base.aspect2d)
Esempio n. 27
0
    def __init__(self, title, w=100, h=100, parent=None):
        DebugObject.__init__(self, "UIWindow")

        if parent is None:
            parent = Globals.base.pixel2d

        self.node = parent.attachNewNode("Window-" + title)
        self.parent = parent

        self.bgFrame = DirectFrame(parent=self.node,
                                   frameColor=(0.2, 0.2, 0.2, 0.9),
                                   frameSize=(0, w, -h, 0))  # state=DGG.NORMAL

        self.titleFrame = DirectFrame(parent=self.node,
                                      frameColor=(0.35, 0.56, 0.19, 0.9),
                                      frameSize=(0, w, -40, 0))
        self.titleText = BetterOnscreenText(text=title, x=10, y=25,
                                            parent=self.titleFrame,
                                            color=Vec3(1), size=15)
        self.contentNode = self.node.attachNewNode("Content")
        self.contentNode.setPos(0, 0, -60)
Esempio n. 28
0
File: ui.py Progetto: rdb/hexima
 def __init__(self, parent, frame=None, pos=(0, 0), anchor=None, title=""):
     text_pos = ((frame[1] + frame[0]) * 0.5, frame[3] - 0.1)
     self.path = DirectFrame(frameSize=frame,
                             relief=None,
                             parent=parent.path,
                             text=title,
                             text_scale=0.09,
                             text_align=core.TextNode.A_center,
                             text_fg=UI_COLOR,
                             text_pos=text_pos,
                             text_font=base.regular_font)
     generate_border(self.path, frame)
Esempio n. 29
0
 def createDirectFrame(self, parent=None):
     parent = self.getEditorRootCanvas() if parent is None else parent
     pos = self.editorCenter if parent == self.getEditorRootCanvas() else (0,0,0)
     if self.visEditorInAspect2D:
         element = DirectFrame(
             frameColor=(1,1,1,1),
             frameSize=(-1,1,-1,1),
             parent=parent,
             state = DGG.NORMAL)
     else:
         element = DirectFrame(
             frameColor=(1,1,1,1),
             text_scale=24,
             frameSize=(-150, 150, -150, 150),
             pos=pos,
             borderWidth=(2, 2),
             parent=parent,
             state = DGG.NORMAL)
     elementInfo = ElementInfo(element, "DirectFrame")
     self.setupBind(elementInfo)
     return elementInfo
Esempio n. 30
0
 def open_query(self, owner):
     self.owner = owner
     bg_color = LColor(*self.color)
     bg_color[3] = 0.2
     scale3 = LVector3(self.scale[0], 1.0, self.scale[1])
     self.background = DirectFrame(
         frameColor=bg_color,
         frameSize=(-1 / self.scale[0], 1.0 / self.scale[0],
                    0.15 + self.scale[1] * self.text_size, 0.0),
         parent=base.a2dBottomLeft)
     self.prefix = OnscreenText(
         text=_("Target name:"),
         font=self.font,
         fg=self.color,
         align=TextNode.ALeft,
         parent=base.a2dBottomLeft,
         scale=tuple(self.scale * self.text_size),
         pos=(0, .15),
     )
     bounds = self.prefix.getTightBounds()
     length = bounds[1][0] - bounds[0][
         0] + self.scale[0] * self.text_size / 2
     self.query = DirectEntry(text="",
                              text_fg=self.color,
                              scale=tuple(scale3 * self.text_size),
                              command=self.do_query,
                              parent=base.a2dBottomLeft,
                              frameColor=(0, 0, 0, 0),
                              pos=(length, 0, .15),
                              initialText="",
                              numLines=1,
                              width=200,
                              entryFont=self.font,
                              focus=1,
                              suppressKeys=1)
     self.query.bind("press-escape-", self.escape)
     self.query.bind("press-tab-", self.select)
     self.query.accept(self.query.guiItem.getTypeEvent(), self.completion)
     self.query.accept(self.query.guiItem.getEraseEvent(), self.completion)
     pos = self.prefix.getPos()
     bounds = self.query.getBounds()
     llz = bounds[2] / self.text_size
     self.suggestions = OnscreenText(
         text="",
         font=self.font,
         fg=self.color,
         align=TextNode.ALeft,
         mayChange=True,
         parent=base.a2dBottomLeft,
         scale=tuple(self.scale * self.suggestions_text_size),
         pos=(pos[0], pos[1] + llz),
     )
    def __init__(self, parent):
        DirectFrame.__init__(self, parent)

        self.emblem = OnscreenImage(image=loader.loadTexture(
            'phase_5/maps/quest_available_emblem.png'),
                                    parent=self)
        self.emblem.setTransparency(TransparencyAttrib.MAlpha)
        self.emblem.setBillboardAxis()
        self.emblem.setTwoSided(1)

        glowMdl = loader.loadModel('phase_4/models/minigames/particleGlow.bam')
        self.glow = OnscreenImage(parent=self.emblem,
                                  image=glowMdl,
                                  color=(1.0, 1.0, 0.4, 1.0),
                                  scale=(3.0, 3.0, 3.0),
                                  pos=(0, 0.05, 0))
        self.glow.setBin('gui-popup', 10)

        glowMdl.removeNode()

        self.track = None
        self.state = LOADED
Esempio n. 32
0
class OutSocket(SocketBase):
    def __init__(self, node, name):
        SocketBase.__init__(self, node, name)

        self.type = OUTSOCKET

        self.frame = DirectFrame(
            frameColor=(0.25, 0.25, 0.25, 1),
            frameSize=(-1, 0, -self.height, 0),
            parent=node.frame,
        )

        SocketBase.createPlug(self, self.frame)

        self.text = DirectLabel(
            frameColor=(0, 0, 0, 0),
            frameSize=(-1, 0, -self.height, 0),
            scale=(1, 1, 1),
            text=self.name,
            text_align=TextNode.A_right,
            text_scale=(0.1, 0.1),
            text_pos=(-0.1, -0.02),
            text_fg=(1, 1, 1, 1),
            text_bg=(0, 0, 0, 0),
            parent=self.frame,
        )

        self.resize(1)

    def show(self, z, right):
        self.frame.setZ(z)
        self.frame.setX(right)

    def resize(self, newWidth):
        self.frame["frameSize"] = (-newWidth, 0, -self.height / 2,
                                   self.height / 2)
        self.text["frameSize"] = (-newWidth, 0, -self.height / 2,
                                  self.height / 2)
Esempio n. 33
0
    def __init__(self, parent=None, **kw):
        optiondefs = (
            # Define type of DirectGuiWidget
            ('items', [], self.refresh),
            ('pgFunc', PGItem, None),
            ('numStates', 1, None),
            ('state', DGG.NORMAL, None),
            ('borderWidth', (0, 0), self.setBorderWidth),
            ('itemMargin', (0, 0, 0, 0), self.refresh),
            ('numRows', 4, self.refresh),
            ('numColumns', 4, self.refresh),
            ('autoUpdateFrameSize', True, None),
            ('boxAlign', TextNode.ALeft, self.refresh),
            ('suppressMouse', 0, None),
        )
        # Merge keyword options with default options
        self.defineoptions(kw, optiondefs)

        # Initialize superclasses
        DirectFrame.__init__(self, parent)

        # Call option initialization functions
        self.initialiseoptions(DirectGridSizer)
Esempio n. 34
0
 def __makeToolboxCenteredListItem(self, displayName, index):
     item = DirectFrame(
         text=displayName,
         frameSize=VBase4(-self.parent["frameSize"][1],
                          self.parent["frameSize"][1], -10, 20),
         frameColor=VBase4(0.85, 0.85, 0.85, 1),
         text_align=TextNode.ACenter,
         text_scale=16,
         text_pos=(-10, 0),
         pos=(0, 0, -30 * index + 10),  #self.parent["frameSize"][1]/2-10
         state=DGG.NORMAL,
         #suppressMouse=0
     )
     return item
Esempio n. 35
0
class SocketBase:
    def __init__(self, node, name):
        self.socketID = uuid4()
        self.node = node
        self.name = name
        self.height = 0.2
        self.type = None
        self.value = None
        self.connected = False

    def getValue(self):
        """Returns a string serializable value stored in this node"""
        return self.value

    def setValue(self, value):
        self.value = value

    def createPlug(self, parent):
        self.plug = DirectFrame(
            state=DGG.NORMAL,
            frameColor=(0, 0, 0, 1),
            frameSize=(-0.05, 0.05, -0.05, 0.05),
            parent=parent,
        )
        self.setupBind()

    def setupBind(self):
        self.plug.bind(DGG.B1PRESS, self.startPlug)
        self.plug.bind(DGG.B1RELEASE, self.releasePlug)
        self.plug.bind(DGG.ENTER, self.endPlug)

    def startPlug(self, event):
        base.messenger.send("startPlug", [self])
        base.messenger.send("startLineDrawing", [self.plug.getPos(render2d)])

    def endPlug(self, event):
        taskMgr.remove("delayedPlugRelease")
        base.messenger.send("endPlug", [self])
        base.messenger.send("connectPlugs")

    def releasePlug(self, event):
        base.messenger.send("stopLineDrawing")
        taskMgr.doMethodLater(0.2,
                              base.messenger.send,
                              "delayedPlugRelease",
                              extraArgs=["cancelPlug"])

    def updateConnectedNodes(self, *args):
        base.messenger.send("updateConnectedNodes", [self.node])

    def setConnected(self, connected):
        self.connected = connected
Esempio n. 36
0
    def __init__(self, beanAmount):
        if not ScavengerHuntEffect.images:
            ScavengerHuntEffect.images = loader.loadModel('phase_4/models/props/tot_jar')
        self.npRoot = DirectFrame(parent=aspect2d, relief=None, scale=0.75, pos=(0, 0, 0.6))
        if beanAmount > 0:
            self.npRoot.setColorScale(VBase4(1, 1, 1, 0))
            self.jar = DirectFrame(parent=self.npRoot, relief=None, image=ScavengerHuntEffect.images.find('**/tot_jar'))
            self.jar.hide()
            self.eventImage = NodePath('EventImage')
            self.eventImage.reparentTo(self.npRoot)
            self.countLabel = DirectLabel(parent=self.jar, relief=None, text='+0', text_pos=(0.02, -0.2), text_scale=0.25, text_fg=(0.95, 0.0, 0, 1), text_font=ToontownGlobals.getSignFont())

            def countUp(t, startVal, endVal):
                beanCountStr = startVal + t * (endVal - startVal)
                self.countLabel['text'] = '+' + `(int(beanCountStr))`

            def setCountColor(color):
                self.countLabel['text_fg'] = color

            self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(1), Func(self.jar.show), LerpColorScaleInterval(self.eventImage, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Parallel(LerpScaleInterval(self.npRoot, 1, scale=0.5, startScale=0.75), LerpPosInterval(self.npRoot, 1, pos=VBase3(-0.9, 0, -0.83))), LerpFunc(countUp, duration=2, extraArgs=[0, beanAmount]), Func(setCountColor, VBase4(0.95, 0.95, 0, 1)), Wait(3), Func(self.destroy))
        else:
            self.npRoot.setColorScale(VBase4(1, 1, 1, 0))
            self.attemptFailedMsg()
            self.track = Sequence(LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 1), startColorScale=VBase4(1, 1, 1, 0)), Wait(5), LerpColorScaleInterval(self.npRoot, 1, colorScale=VBase4(1, 1, 1, 0), startColorScale=VBase4(1, 1, 1, 1)), Func(self.destroy))
Esempio n. 37
0
    def load(self):
        StateData.load(self)

        self.topBar = DirectFrame(parent = render2d, 
            frameSize = (2,-2,0.3,-0.3), 
            frameColor=(0, 0, 0, 1), pos=(0,1,1.4))
        self.btmBar = DirectFrame(parent = render2d, 
            frameSize = (2,-2,0.3,-0.3), 
            frameColor=(0,0,0,1), pos=(0,-1,-1.4))
    
        self.ival = ParallelEndTogether(
            LerpPosInterval(self.topBar,
                duration=self.barDur,
                pos=(0,1,1.0),
                startPos=(0,1,1.4),
                blendType='easeOut'
            ),
                                        
            LerpPosInterval(self.btmBar,
                duration=self.barDur,
                pos=(0,-1,-1.0),
                startPos=(0,-1,-1.4),
                blendType='easeOut'
            ),
            
            LerpFunc(
                self.__lerpFov,
                duration = self.barDur,
                blendType = 'easeOut',
                fromData = self.origFov,
                toData = self.fov
                
            )
        )

        self.hide()
Esempio n. 38
0
    def __init__(self, name, parent):
        self.right = 0.5
        self.left = -0.5
        self.name = name
        self.nodeID = uuid4()
        self.inputList = []
        self.outputList = []
        self.selected = False

        self.frame = DirectFrame(state=DGG.NORMAL,
                                 text=name,
                                 text_align=TextNode.A_left,
                                 text_scale=0.1,
                                 text_pos=(self.left, 0.12),
                                 text_fg=(1, 1, 1, 1),
                                 frameColor=(0.25, 0.25, 0.25, 1),
                                 frameSize=(-0.5, 0.5, -.6, 0.2),
                                 parent=parent)

        self.setupBind()
        self.hide()

        self.setPos = self.frame.setPos
        self.getPos = self.frame.getPos
Esempio n. 39
0
    def _create_components(self):
        """ Creates the window components """
        self._node = self._parent.attach_new_node("Window")
        self._node.set_pos(self._pos.x, 1, -self._pos.y)
        border_px = 1
        self._border_frame = DirectFrame(
            pos=(0, 1, 0),
            frameSize=(-border_px, self._width + border_px, border_px, -self._height - border_px),
            frameColor=(0.0, 0.0, 0.0, 1),
            parent=self._node,
            state=DGG.NORMAL,
        )
        # self._border_frame.hide()
        self._background = DirectFrame(
            pos=(0, 1, 0),
            frameSize=(0, self._width, 0, -self._height),
            frameColor=(0.098, 0.098, 0.098, 1),
            parent=self._node,
        )
        self._title_bar = DirectFrame(
            pos=(0, 1, 0),
            frameSize=(0, self._width, 0, -45),
            frameColor=(0.058, 0.058, 0.058, 1),
            parent=self._node,
            state=DGG.NORMAL,
        )
        self._window_title = BetterOnscreenText(
            parent=self._node, x=12, y=29, text=self._title, size=19, color=Vec3(0.7), may_change=True
        )
        self._btn_close = DirectButton(
            relief=DGG.FLAT,
            pressEffect=1,
            pos=(self._width - 22, 1, -22),
            frameColor=(0, 0, 0, 0),
            scale=(20, 1, 20),
            parent=self._node,
            image="Data/GUI/CloseWindow.png",
        )

        # Init bindings
        self._btn_close.set_transparency(TransparencyAttrib.M_alpha)
        self._btn_close.bind(DGG.B1CLICK, self._request_close)
        self._btn_close.bind(DGG.WITHIN, self._on_close_btn_hover)
        self._btn_close.bind(DGG.WITHOUT, self._on_close_btn_out)
        self._title_bar.bind(DGG.B1PRESS, self._start_drag)
        self._title_bar.bind(DGG.B1RELEASE, self._stop_drag)
Esempio n. 40
0
def load(args):
    """Sets up the GUI for the main menu.
    Arguments:
        This takes no arguments.
    """

    global backFrame
    global menuFrame
    global pauseText
    global backButton

    font_digital = loader.loadFont('digital.egg')

    backFrame = DirectFrame()
    backFrame['frameColor'] = (0, 0, 0, .5)
    backFrame['frameSize'] = (2, -2, 2, -2)
    backFrame.setPos(0, 0, 0)

    menuFrame = DirectFrame()
    menuFrame.reparentTo(backFrame)
    menuFrame['frameColor'] = (1, 1, 1, .5)
    menuFrame['frameSize'] = (.5, -.5, .5, -.5)
    menuFrame.setPos(0, 0, 0)

    pauseText = OnscreenText()
    pauseText['text'] = ('PAUSED')
    pauseText['scale'] = (.1)
    pauseText['font'] = (font_digital)
    pauseText['fg'] = (1, 1, 1, 1)
    pauseText.setPos(0, .9)

    backButton = DirectButton()
    backButton.reparentTo(menuFrame)
    backButton['text'] = ('Back')
    backButton['text_scale'] = (.1)
    backButton['text_pos'] = (0, -0.03)
    backButton['frameVisibleScale'] = (2, 0.5, 0)
    backButton['frameColor'] = (1, 1, 1, 0)
    backButton['command'] = (messenger.send)
    backButton['extraArgs'] = ("switch_gui", [gui.menu.pause_options, gui.menu.pause])
    backButton.setPos(0, 0, 0)
Esempio n. 41
0
    def __init__(self, image, carPos, trackDir):
        ShowBase.__init__(self)
        self.image = image
        # add show image function
        #OnscreenImage(image=image, pos=(0, 0, 0))
        bg = DirectFrame(image=image, sortOrder=(-1))
        bg.setPos(0, 20, 0)
        bg.reparentTo(render2d)

        nrDisplayRegions = self.camera.getNumDisplayRegions()
        print(nrDisplayRegions)
        self.carPos = carPos
        self.carModel = None
        self.loadModels(carPos)
        self.trackDir = trackDir
    def render(self):
        """ Inits the loading screen, creating the gui """
        self.node = self.showbase.pixel2dp.attachNewNode("Loading Screen")
        self.node.setBin("fixed", 10)
        self.node.setDepthTest(False)

        self.showbase.setFrameRateMeter(False)

        w, h = base.win.getXSize(), base.win.getYSize()

        scaleX = w / 2560.0
        scaleY = h / 1440.0

        imageScale = max(scaleX, scaleY)
        imageW = 2560 * imageScale
        imageH = 1440 * imageScale

        self.bgFrame = DirectFrame(parent=self.node, frameColor=(0.9, 0.9, 0.9, 1.0), frameSize=(0, w, -h, 0))

        self.font = loader.loadFont("Data/Font/Roboto-Light.ttf")
        self.fontHighRes = loader.loadFont("Data/Font/Roboto-Thin.ttf")
        self.fontHighRes.setPixelsPerUnit(120)

        xOffs = (w - imageW) / 2.0
        yOffs = (h - imageH) / 2.0

        self.bgImage = BetterOnscreenImage(
            image="Data/GUI/LoadingScreen.png", parent=self.node, w=imageW, h=imageH, x=xOffs, y=yOffs
        )

        self.points = []
        self.pointAngles = [10, 25, 40, 51, 80, 103, 130, 152, 170, 198, 210, 231, 250, 274, 290, 310, 328, 352]

        random.seed(491)

        for angle in self.pointAngles:
            scale = 180.0
            point = BetterOnscreenImage(
                image="Data/GUI/LoadingScreenPoint.png",
                parent=self.node,
                w=scale,
                h=scale,
                x=(w - scale) / 2,
                y=(h - scale) / 2,
                nearFilter=False,
            )
            point._node.setR(angle)

            scaleZ = scale * (1.0 + random.random() * 1.2) * (1.0 + 0.6 * abs(math.cos(angle / 180.0 * math.pi)))
            point._node.setScale(scaleZ, scale, scale)
            sFrom, sTo = 0.7, 1.2

            seq = Sequence(
                point._node.scaleInterval(
                    2.0 + random.random(),
                    Vec3(scaleZ * sFrom, scale, scale),
                    startScale=Vec3(scaleZ * sTo, scale, scale),
                    blendType="easeInOut",
                ),
                point._node.scaleInterval(
                    2.0 + random.random(),
                    Vec3(scaleZ * sTo, scale, scale),
                    startScale=Vec3(scaleZ * sFrom, scale, scale),
                    blendType="easeInOut",
                ),
            )
            seq.loop()
            self.points.append(point)

        cr = 212
        ct = 0

        self.circlePart1 = BetterOnscreenImage(
            image="Data/GUI/LoadingCirclePart.png", parent=self.node, w=cr, h=cr, x=(w - cr) / 2, y=(h - cr) / 2 - ct
        )
        self.circlePart2 = BetterOnscreenImage(
            image="Data/GUI/LoadingCirclePart.png", parent=self.node, w=cr, h=cr, x=(w - cr) / 2, y=(h - cr) / 2 - ct
        )
        self.circlePart3 = BetterOnscreenImage(
            image="Data/GUI/LoadingCirclePart.png", parent=self.node, w=cr, h=cr, x=(w - cr) / 2, y=(h - cr) / 2 - ct
        )
        self.circlePart4 = BetterOnscreenImage(
            image="Data/GUI/LoadingCirclePart.png", parent=self.node, w=cr, h=cr, x=(w - cr) / 2, y=(h - cr) / 2 - ct
        )

        self.circleBg = BetterOnscreenImage(
            image="Data/GUI/LoadingCircleBgBlack.png",
            parent=self.node,
            w=180,
            h=180,
            x=(w - 180) / 2,
            y=(h - 180) / 2 - ct,
        )

        self.logoImage = BetterOnscreenImage(
            image="Data/GUI/RPIcon.png", parent=self.node, w=316, h=316, x=(w - 316) / 2, y=(h - 316) / 2 - ct
        )

        self.loadingDescText = BetterOnscreenText(
            text="50%".upper(),
            parent=self.node,
            x=w - 50,
            y=h - 95,
            size=90,
            align="right",
            color=Vec4(0.9, 0.9, 0.9, 0.5),
            mayChange=True,
            font=self.fontHighRes,
        )
        self.loadingText = BetterOnscreenText(
            text="Compiling Shaders".upper(),
            parent=self.node,
            x=w - 50,
            y=h - 65,
            size=18,
            align="right",
            color=Vec4(117 / 255.0, 175 / 255.0, 65 / 255.0, 0.2),
            mayChange=True,
            font=self.font,
        )
        self.versionText = BetterOnscreenText(
            text="Rendering Pipeline 1.0.1".upper(),
            parent=self.node,
            x=50,
            y=80,
            size=30,
            align="left",
            color=Vec4(0.9, 0.9, 0.9, 0.5),
            mayChange=False,
            font=self.font,
        )
        self.linkText = BetterOnscreenText(
            text="github.com/tobspr/renderpipeline".upper(),
            parent=self.node,
            x=50,
            y=105,
            size=18,
            align="left",
            color=Vec4(117 / 255.0, 175 / 255.0, 65 / 255.0, 0.2),
            mayChange=False,
            font=self.font,
        )

        self.loadingBarBG = DirectFrame(
            parent=self.node, frameColor=Vec4(0.2, 0.2, 0.2, 0.8), frameSize=(0, w, -3, 0), pos=(0, 0, -h + 30)
        )
        self.loadingBar = DirectFrame(
            parent=self.node,
            frameColor=Vec4(117 / 255.0, 175 / 255.0, 65 / 255.0, 0.8),
            frameSize=(0, w, -3, 0),
            pos=(0, 0, -h + 30),
        )

        self.circlePart2._node.setR(180)
        self.circlePart3._node.setR(90)
        self.circlePart4._node.setR(-90)
        # self.circlePart1._node.setColorScale(Vec4(103/255.0,167/255.0,53/255.0,1.0))
        self.circlePart1._node.setColorScale(Vec4(0.5, 1.0, 1.0, 0.5))
        self.circlePart2._node.setColorScale(Vec4(1.0, 0.5, 1.0, 0.5))
        self.circlePart3._node.setColorScale(Vec4(1.0, 1.0, 0.5, 0.5))
        self.circlePart4._node.setColorScale(Vec4(0.5, 0.5, 1.0, 0.5))

        self.circlePart1.hide()
        self.circlePart2.hide()
        self.circlePart3.hide()
        self.circlePart4.hide()

        interval1 = self.circlePart1.hprInterval(2.1, Vec3(0, 0, 360))
        interval1.loop()
        interval2 = self.circlePart2.hprInterval(2.3, Vec3(0, 0, -180))
        interval2.loop()
        interval3 = self.circlePart3.hprInterval(2.5, Vec3(0, 0, -270))
        interval3.loop()
        interval4 = self.circlePart4.hprInterval(2.7, Vec3(0, 0, 270))
        interval4.loop()

        # Hide render till we're done
        render.hide()

        self.showbase.graphicsEngine.renderFrame()

        self.setStatus("Initializing", 5)
class PiratesDownloadWatcher(DownloadWatcher.DownloadWatcher):
    positions = [
        (Point3(1, 0, 0.90000000000000002), Point3(1, 0, 0.90000000000000002)),
        (Point3(1, 0, 0.90000000000000002), Point3(1, 0, 0.90000000000000002)),
        (Point3(1, 0, 0.90000000000000002), Point3(1, 0, 0.90000000000000002))]
    
    def __init__(self, phaseNames):
        self.phaseNames = phaseNames
        self.model = loader.loadModel('models/gui/pir_m_gui_gen_loadingBar')
        bar = self.model.findTexture('pir_t_gui_gen_loadingBar')
        self.model.find('**/loading_bar').hide()
        self.topFrame = DirectFrame(parent = base.a2dTopRight, pos = (-0.80000000000000004, 0, -0.10000000000000001), sortOrder = NO_FADE_SORT_INDEX + 1)
        self.text = DirectLabel(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherText', pos = (0, 0, 0), text = '                     ', text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), text_scale = 0.040000000000000001, textMayChange = 1, text_align = TextNode.ARight, text_pos = (0.17000000000000001, 0), sortOrder = 2)
        self.bar = DirectWaitBar(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherBar', pos = (0, 0, 0), frameSize = (-0.40000000000000002, 0.38, -0.044999999999999998, 0.065000000000000002), borderWidth = (0.02, 0.02), range = 100, frameColor = (1, 1, 1, 1), barColor = (0, 0.29999999999999999, 0, 1), barTexture = bar, geom = self.model, geom_scale = 0.089999999999999997, geom_pos = (-0.014, 0, 0.01), text = '0%', text_scale = 0.040000000000000001, text_fg = (1, 1, 1, 1), text_align = TextNode.ALeft, text_pos = (0.19, 0), sortOrder = 1)
        self.bgFrame = DirectFrame(relief = DGG.FLAT, parent = self.topFrame, pos = (0, 0, 0), frameColor = (0.5, 0.27000000000000002, 0.35999999999999999, 0.20000000000000001), frameSize = (-0.44, 0.39000000000000001, -0.035999999999999997, 0.056000000000000001), borderWidth = (0.02, 0.02), scale = 0.90000000000000002, sortOrder = 0)
        self.accept('launcherPercentPhaseComplete', self.update)

    
    def update(self, phase, percent, reqByteRate, actualByteRate):
        phaseName = self.phaseNames[phase]
        self.text['text'] = OTPLocalizer.DownloadWatcherUpdate % phaseName + '  -'
        self.bar['text'] = '%s %%' % percent
        self.bar['value'] = percent

    
    def foreground(self):
        self.topFrame.reparentTo(base.a2dpTopRight)
        self.topFrame.setBin('gui-fixed', 55)
        self.topFrame['sortOrder'] = NO_FADE_SORT_INDEX + 1

    
    def background(self):
        self.topFrame.reparentTo(base.a2dTopRight)
        self.topFrame.setBin('unsorted', 49)
        self.topFrame['sortOrder'] = -1

    
    def cleanup(self):
        self.text.destroy()
        self.bar.destroy()
        self.bgFrame.destroy()
        self.topFrame.destroy()
        self.ignoreAll()
Esempio n. 44
0
    def __init__(self):
        self.step = 0    #shows how many commands line it had run
        self.scrStack = []
        self.commandList = []
        
        self.__currentPtr = None
        if not runtime_data.RuntimeData.command_ptr:
            self.nextPtr = 0
        else: self.nextPtr = runtime_data.RuntimeData.command_ptr
        
        if not runtime_data.RuntimeData.command_stack:
            runtime_data.RuntimeData.command_stack = self.scrStack
        else: self.scrStack = runtime_data.RuntimeData.command_stack
        
        if not runtime_data.RuntimeData.command_list:
            runtime_data.RuntimeData.command_list = self.commandList
        else: self.commandList = runtime_data.RuntimeData.command_list
                
        
        self._frame = DirectFrame(parent = aspect2d)  # @UndefinedVariable pydev在傲娇而已不用管
        self._frame.setTransparency(TransparencyAttrib.MAlpha)

        

        
        self.storyView = StoryView()
        self.audioPlayer = base.audioPlayer  # @UndefinedVariable pydev在傲娇而已不用管
        self.menu = StoryMenuBar()
        self.gameTextBox = GameTextBox()
        self.textHistory = TextHistory()
        
        self.button_auto = self.menu.addButton(text = 'Auto',state = DGG.NORMAL,command = self.autoPlayButton)
        self.button_history = self.menu.addButton(text = 'History',state = DGG.NORMAL,command = self.showTextHistoryButton)
        self.button_skip = self.menu.addButton(text = 'Skip',state = DGG.DISABLED,command = self.startSkippingButton)
        self.button_lastchoice = self.menu.addButton(text = 'Last Choice',state = DGG.DISABLED,command = self.lastChoice)
        self.button_save = self.menu.addButton(text = 'Save',state = DGG.DISABLED, command = self.saveButton)
        self.button_load = self.menu.addButton(text = 'Load',state = DGG.NORMAL,command = self.loadButton)
        self.button_quicksave = self.menu.addButton(text = 'Quick Save',state = DGG.DISABLED,command = self.quickSaveButton)
        self.button_quickload = self.menu.addButton(text = 'Quick Load',state = DGG.DISABLED,command = self.quickLoadButton)
        self.button_config = self.menu.addButton(text = 'Options', state = DGG.NORMAL, command = self._configButton)
        self.button_title = self.menu.addButton(text = 'Title',state = DGG.NORMAL,command = self.returnToTitle)
        
        self._inputReady = True
        self.__arrow_shown = False
        self._choiceReady = True
        self._currentMessage = ''
        self.__currentSelection = None
        self.__finishing = False
        self.__lock = Lock()
        self.forcejump = False
        self.__autoInput = False
        self.__focused = False
        self.intervals = []
        self.__skipping = False
        self.__autoplaying = False
        self.__autoInterval = None
        self.__autoplaystep = None
        
        self.mapScriptSpace()
        SogalForm.__init__(self)
        self.show()
        taskMgr.add(self.loopTask,'story_manager_loop',sort = 2,priority = 1)  # @UndefinedVariable 傲娇的pydev……因为panda3D的"黑魔法"……
      
        taskMgr.doMethodLater(runtime_data.game_settings['jump_span'],self.__jumpCheck,'story_jump_check', sort = 5, priority = 1)  # @UndefinedVariable