def __init__(self, rootParent=None): self.frmMain = DirectFrame( frameColor=(1, 1, 1, 1), frameSize=(-1.777778, 1.77777778, -1.1638, 1.1638), hpr=LVecBase3f(0, 0, 0), image='assets/menu/Background.png', pos=LPoint3f(0, 0, 0), image_scale=LVecBase3f(1.77778, 1, 1.1638), image_pos=LPoint3f(0, 0, 0), parent=rootParent, ) self.frmMain.setTransparency(0) self.frmSinglePlayerCreateGame = DirectFrame( borderWidth=(0.01, 0.01), frameColor=(1, 1, 1, 1), frameSize=(-0.65, 0.65, -0.55, 0.55), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.425, 0, 0), relief=5, parent=self.frmMain, ) self.frmSinglePlayerCreateGame.setTransparency(0) self.lblHeader = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0, 0, 0.425), scale=LVecBase3f(0.1, 0.1, 0.1), text='Singleplayer Game', 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), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.lblHeader.setTransparency(0) self.lblGameType = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.6, 0, 0.225), scale=LVecBase3f(0.1, 0.1, 0.1), text='Game Type', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.lblGameType.setTransparency(0) self.lblNumNPCs = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.6, 0, -0.125), scale=LVecBase3f(0.1, 0.1, 0.1), text='Number of NPCs ', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.lblNumNPCs.setTransparency(0) self.optionNumNPCs = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.2, 0, -0.115), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), item0_text_wordwrap=None, popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.optionNumNPCs.setTransparency(0) self.optionGameType = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.2, 0, 0.22), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), item0_text_wordwrap=None, popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.optionGameType.setTransparency(0) self.btnStart = DirectButton( hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.35, 0, -0.45), scale=LVecBase3f(0.1, 0.1, 0.1), text='Start', 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), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, command=base.messenger.send, extraArgs=["singlePlayerCreateGame_start"], ) self.btnStart.setTransparency(0) self.lblPlayerClass = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.6, 0, 0.05), scale=LVecBase3f(0.1, 0.1, 0.1), text='Player Class', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.lblPlayerClass.setTransparency(0) self.optionPlayerClass = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.2, 0, 0.055), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), item0_text_wordwrap=None, popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.optionPlayerClass.setTransparency(0) self.btnCancel = DirectButton( hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.325, 0, -0.45), scale=LVecBase3f(0.1, 0.1, 0.1), text='Cancel', 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), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, command=base.messenger.send, extraArgs=["singlePlayerCreateGame_back"], ) self.btnCancel.setTransparency(0) self.lblDifficulty = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.6, 0, -0.29), scale=LVecBase3f(0.1, 0.1, 0.1), text='Difficulty', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.lblDifficulty.setTransparency(0) self.optionDifficulty = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.2, 0, -0.29), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), item0_text_wordwrap=None, popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmSinglePlayerCreateGame, ) self.optionDifficulty.setTransparency(0) self.frmPlayerInfo = DirectFrame( borderWidth=(0.01, 0.01), frameColor=(1, 1, 1, 1), frameSize=(-0.5, 0.5, -0.55, 0.55), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.765, 0, 0), relief=3, parent=self.frmMain, ) self.frmPlayerInfo.setTransparency(0) self.lblInfoHeader = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0, 0, 0.45), scale=LVecBase3f(0.1, 0.1, 0.1), text='Info', 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), text_wordwrap=None, parent=self.frmPlayerInfo, ) self.lblInfoHeader.setTransparency(0) self.frmImageHero = DirectFrame( frameColor=(1, 1, 1, 1), frameSize=(-0.15, 0.15, -0.2, 0.2), hpr=LVecBase3f(0, 0, 0), image= '/home/fireclaw/workspace/Ankandora/AnkandoraLight/design/guiGraphics/heroArcher.png', pos=LPoint3f(-0.275, 0, 0.195), image_scale=LVecBase3f(0.15, 1, 0.2), image_pos=LPoint3f(0, 0, 0), parent=self.frmPlayerInfo, ) self.frmImageHero.setTransparency(1) self.lblClassDescription = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.12, 0, 0.31), scale=LVecBase3f(0.1, 0.1, 0.1), text='The archer shoots from afar and gains the first-strike', text_align=TextNode.A_left, text_scale=(0.6, 0.6), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=10.0, parent=self.frmPlayerInfo, ) self.lblClassDescription.setTransparency(0) self.lblHealth = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.28, 0, -0.1), scale=LVecBase3f(0.1, 0.1, 0.1), text='Health', text_align=TextNode.A_center, text_scale=(0.7, 0.7), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmPlayerInfo, ) self.lblHealth.setTransparency(0) self.lblAttack = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.275, 0, -0.285), scale=LVecBase3f(0.1, 0.1, 0.1), text='Attack', text_align=TextNode.A_center, text_scale=(0.7, 0.7), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmPlayerInfo, ) self.lblAttack.setTransparency(0) self.lblHealthValue = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.275, 0, -0.17), scale=LVecBase3f(0.1, 0.1, 0.1), text='7', text_align=TextNode.A_center, text_scale=(0.6, 0.6), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmPlayerInfo, ) self.lblHealthValue.setTransparency(0) self.lblAttackValue = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.275, 0, -0.36), scale=LVecBase3f(0.1, 0.1, 0.1), text='4', text_align=TextNode.A_center, text_scale=(0.6, 0.6), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=self.frmPlayerInfo, ) self.lblAttackValue.setTransparency(0)
def __init__(self, rootParent=None): self.btnBox1 = DirectButton( frameColor=(0.8, 0.8, 0.8, 0.0), frameSize=(-1.0, 1.0, -1.0, 1.0), hpr=LVecBase3f(0, 0, 0), image='chapter2/box1.png', pos=LPoint3f(-0.25, 0, -0.35), relief=1, scale=LVecBase3f(0.05, 0.08, 0.05), text='', image_scale=LVecBase3f(1, 1, 1), image_pos=LPoint3f(0, 0, 0), text_align=TextNode.A_center, text_scale=(1.0, 1.0), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), text_wordwrap=None, parent=rootParent, command=base.messenger.send, extraArgs=["box1"], pressEffect=0, ) self.btnBox1.setTransparency(1) self.btnBox2 = DirectButton( frameColor=(0.8, 0.8, 0.8, 0.0), frameSize=(-1.0, 1.0, -1.0, 1.0), hpr=LVecBase3f(0, 0, 0), image='chapter2/box2.png', pos=LPoint3f(0.4, 0, 0.16), relief=1, scale=LVecBase3f(0.05, 0.08, 0.05), text='', image_scale=LVecBase3f(1, 1, 1), image_pos=LPoint3f(0, 0, 0), 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), text_wordwrap=None, parent=rootParent, command=base.messenger.send, extraArgs=["box2"], pressEffect=0, ) self.btnBox2.setTransparency(1) self.btnBox3 = DirectButton( frameColor=(0.8, 0.8, 0.8, 0.0), frameSize=(-1.0, 1.0, -1.0, 1.0), hpr=LVecBase3f(0, 0, 0), image='chapter2/box3.png', pos=LPoint3f(0.305, 0, -0.435), relief=1, scale=LVecBase3f(0.08, 0.1, 0.08), text='', image_scale=LVecBase3f(1, 1, 1), image_pos=LPoint3f(0, 0, 0), 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), text_wordwrap=None, parent=rootParent, command=base.messenger.send, extraArgs=["box3"], pressEffect=0, ) self.btnBox3.setTransparency(1) self.overlay = DirectFrame( frameColor=(1.0, 1.0, 1.0, 0.0), frameSize=(-0.8, 0.8, -0.8, 0.8), hpr=LVecBase3f(0, 0, 0), image='chapter2/overlay.png', pos=LPoint3f(0, 0, 0), image_scale=LVecBase3f(0.8, 1, 0.8), image_pos=LPoint3f(0, 0, 0), parent=rootParent, ) self.overlay.setTransparency(1)
def __init__(self, command, fileBrowser=False, defaultPath="~", defaultFilename="unnamed.txt", fileExtensions=[], tooltip=None, iconDir=None, parent=None, theme=None): """ A simple file and folder browser command: The command that will be called on closing the browser fileBrowser: If set to True the browser will show files, otherwise it will only show folders defaultPath: The initial path the browser will be set to show defaultFilename: The filename that will be set by default, only usefull if fileBrowser is True fileExtensions: A list of extensions. Only files with those extensions will be shown. Only usefull if fileBrowser is True tooltip: An instance of the Tooltip class to display tooltips for certain parts of the editor iconDir: A directory path that contains replacement images. It must contain all required images which are: File.png Folder.png FolderNew.png FolderShowHidden.png FolderUp.png Reload.png parent: Another DirectGUI element which has pixel2d as root parent. The browser frame is placed centered so a frame for example should have equal sizes in horizontal and vertical directions e.g. frameSize=(-250,250,-200,200) """ self.theme = theme if theme is not None else LightTheme() self.tt = tooltip self.command = command self.showFiles = fileBrowser self.fileExtensions = fileExtensions self.showHidden = False self.parent = parent self.imageOpts = LoaderOptions() self.imageOpts.set_auto_texture_scale(ATS_none) if self.theme.icon_dir is not None: self.iconDir = self.theme.icon_dir elif iconDir is None: fn = Filename.fromOsSpecific(os.path.dirname(__file__)) fn.makeTrueCase() self.iconDir = str(fn) + "/icons" else: self.iconDir = iconDir self.selectedViewType = "Symbol" self.currentPath = os.path.expanduser(defaultPath) if not os.path.exists(self.currentPath): self.currentPath = os.path.expanduser("~") self.previousPath = self.currentPath if self.parent is None: self.parent = base.pixel2d self.screenWidthPx = base.getSize()[0] self.screenHeightPx = base.getSize()[1] self.position = LPoint3f(base.getSize()[0] / 2, 0, -base.getSize()[1] / 2) else: self.screenWidthPx = self.parent.getWidth() self.screenHeightPx = self.parent.getHeight() self.position = LPoint3f(0) self.screenWidthPxHalf = self.screenWidthPx * 0.5 self.screenHeightPxHalf = self.screenHeightPx * 0.5 self.mainFrame = DirectFrame( relief=1, frameSize=(-self.screenWidthPxHalf, self.screenWidthPxHalf, -self.screenHeightPxHalf, self.screenHeightPxHalf), frameColor=self.theme.main_background, pos=self.position, parent=self.parent, state=DGG.NORMAL, ) self.pathRightMargin = 155 # NOTE: Add 28 for each button to the right + 15px margin self.pathEntryWidth = self.screenWidthPx - self.pathRightMargin - 28 # The path entry on top of the window self.pathEntry = DirectEntry( text_fg=self.theme.default_text_color, parent=self.mainFrame, relief=DGG.SUNKEN, frameColor=self.theme.entry_background, pad=(0.2, 0.2), pos=LPoint3f(-self.screenWidthPxHalf + 15, 0, self.screenHeightPxHalf - 25), scale=12, width=self.pathEntryWidth / 12, overflow=True, command=self.entryAccept, initialText=self.currentPath, focusInCommand=base.messenger.send, focusInExtraArgs=["unregisterKeyboardEvents"], focusOutCommand=base.messenger.send, focusOutExtraArgs=["reregisterKeyboardEvents"], ) # ---------------- # CONTROL BUTTONS # ---------------- x = self.screenWidthPxHalf - self.pathRightMargin + 18 # RELOAD self.btnReload = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.icon_button_background, frameSize=(-14, 14, -10, 18), pos=LPoint3f(x, 0, self.screenHeightPxHalf - 25), command=self.folderReload, image=loader.load_texture(f"{self.iconDir}/Reload.png", loaderOptions=self.imageOpts), image_scale=14, image_pos=(0, 0, 4), ) self.btnReload.setTransparency(TransparencyAttrib.M_multisample) if self.tt is not None: self.btnReload.bind(DGG.ENTER, self.tt.show, ["Reload Folder"]) self.btnReload.bind(DGG.EXIT, self.tt.hide) # MOVE UP ONE FOLDER x += 28 self.btnFolderUp = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.icon_button_background, frameSize=(-14, 14, -10, 18), pos=LPoint3f(x, 0, self.screenHeightPxHalf - 25), command=self.folderUp, image=loader.load_texture(f"{self.iconDir}/FolderUp.png", loaderOptions=self.imageOpts), image_scale=14, image_pos=(0, 0, 4), ) self.btnFolderUp.setTransparency(TransparencyAttrib.M_multisample) if self.tt is not None: self.btnFolderUp.bind(DGG.ENTER, self.tt.show, ["Move up one level"]) self.btnFolderUp.bind(DGG.EXIT, self.tt.hide) # CREATE NEW FOLDER x += 28 self.btnFolderNew = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.icon_button_background, frameSize=(-14, 14, -10, 18), pos=LPoint3f(x, 0, self.screenHeightPxHalf - 25), command=self.folderNew, image=loader.load_texture(f"{self.iconDir}/FolderNew.png", loaderOptions=self.imageOpts), image_scale=14, image_pos=(0, 0, 4), ) self.btnFolderNew.setTransparency(TransparencyAttrib.M_multisample) if self.tt is not None: self.btnFolderNew.bind(DGG.ENTER, self.tt.show, ["Create new folder"]) self.btnFolderNew.bind(DGG.EXIT, self.tt.hide) # SHOW HIDDEN FOLDERS x += 28 self.btnFolderShowHidden = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.icon_button_background, frameSize=(-14, 14, -10, 18), pos=LPoint3f(x, 0, self.screenHeightPxHalf - 25), command=self.folderShowHidden, image=loader.load_texture(f"{self.iconDir}/FolderShowHidden.png", loaderOptions=self.imageOpts), image_scale=14, image_pos=(0, 0, 4), ) self.btnFolderShowHidden.setTransparency( TransparencyAttrib.M_multisample) if self.tt is not None: self.btnFolderShowHidden.bind( DGG.ENTER, self.tt.show, ["Show/Hide hidden files and folders"]) self.btnFolderShowHidden.bind(DGG.EXIT, self.tt.hide) # TOGGLE VIEW TYPE x += 28 self.btnViewType = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.icon_button_background, frameSize=(-14, 14, -10, 18), pos=LPoint3f(x, 0, self.screenHeightPxHalf - 25), command=self.toggleViewType, image=loader.load_texture(f"{self.iconDir}/ViewTypeSymbol.png", loaderOptions=self.imageOpts), image_scale=14, image_pos=(0, 0, 4), ) self.btnViewType.setTransparency(TransparencyAttrib.M_multisample) if self.tt is not None: self.btnViewType.bind( DGG.ENTER, self.tt.show, ["Toggle view between Symbols and Detail list"]) self.btnViewType.bind(DGG.EXIT, self.tt.hide) # -------------- # CONTENT FRAME # -------------- color = self.theme.scrollbar_controlls_color self.container = DirectScrolledFrame( relief=DGG.RIDGE, borderWidth=(2, 2), frameColor=self.theme.main_background, frameSize=(-self.screenWidthPxHalf + 10, self.screenWidthPxHalf - 10, -self.screenHeightPxHalf + 50, self.screenHeightPxHalf - 50), canvasSize=(-self.screenWidthPxHalf + 31, self.screenWidthPxHalf - 10, -self.screenHeightPxHalf + 50, self.screenHeightPxHalf - 50), pos=LPoint3f(0, 0, 0), parent=self.mainFrame, scrollBarWidth=20, verticalScroll_scrollSize=20, verticalScroll_thumb_relief=DGG.FLAT, verticalScroll_incButton_relief=DGG.FLAT, verticalScroll_decButton_relief=DGG.FLAT, verticalScroll_thumb_frameColor=color, verticalScroll_incButton_frameColor=color, verticalScroll_decButton_frameColor=color, verticalScroll_frameColor=self.theme.scroll_background, horizontalScroll_thumb_relief=DGG.FLAT, horizontalScroll_incButton_relief=DGG.FLAT, horizontalScroll_decButton_relief=DGG.FLAT, horizontalScroll_thumb_frameColor=color, horizontalScroll_incButton_frameColor=color, horizontalScroll_decButton_frameColor=color, horizontalScroll_frameColor=self.theme.scroll_background, state=DGG.NORMAL, ) self.container.bind(DGG.MWDOWN, self.scroll, [0.01]) self.container.bind(DGG.MWUP, self.scroll, [-0.01]) # ACCEPT BUTTON self.btnOk = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.text_button_background, frameSize=(-45, 45, -6, 14), pos=LPoint3f(self.screenWidthPxHalf - 160, 0, -self.screenHeightPxHalf + 25), text="ok", text_scale=12, text_fg=self.theme.default_text_color, command=command, extraArgs=[1], ) # CANCEL BUTTON self.btnCancel = DirectButton( parent=self.mainFrame, relief=1, frameColor=self.theme.text_button_background, frameSize=(-45, 45, -6, 14), pos=LPoint3f(self.screenWidthPxHalf - 55, 0, -self.screenHeightPxHalf + 25), text="Cancel", text_scale=12, text_fg=self.theme.default_text_color, command=command, extraArgs=[0]) # SELECTED FILE ENTRY FIELD if self.showFiles: self.txtFileName = DirectEntry( text_fg=self.theme.default_text_color, parent=self.mainFrame, relief=DGG.SUNKEN, frameColor=self.theme.entry_background, pad=(0.2, 0.2), pos=LPoint3f(-self.screenWidthPxHalf + 25, 0, -self.screenHeightPxHalf + 25), scale=12, width=200 / 12, overflow=True, command=self.filenameAccept, initialText=defaultFilename, focusInCommand=base.messenger.send, focusInExtraArgs=["unregisterKeyboardEvents"], focusOutCommand=base.messenger.send, focusOutExtraArgs=["reregisterKeyboardEvents"], ) # ------------------ # CREATE NEW FOLDER # ------------------ # FRAME FOR CREATING NEW FOLDER self.newFolderFrame = DirectFrame( parent=self.mainFrame, relief=1, frameSize=(-self.screenWidthPxHalf + 10, self.screenWidthPxHalf - 10, -20, 20), pos=LPoint3f(0, 0, self.screenHeightPxHalf - 55), frameColor=self.theme.popup_frame_background, ) # LABEL FOR NEW FOLDER NAME ENTRY self.txtNewFolderName = DirectLabel( parent=self.newFolderFrame, text="New Folder Name", text_scale=12, text_fg=self.theme.default_text_color, frameColor=(0, 0, 0, 0), text_align=TextNode.ALeft, pos=(-self.screenWidthPxHalf + 15, 0, -3), ) # ENTRY FOR THE NEW FOLDER NAME self.folderName = DirectEntry( text_fg=self.theme.default_text_color, parent=self.newFolderFrame, relief=DGG.SUNKEN, frameColor=self.theme.entry_background, pad=(0.2, 0.2), pos=LPoint3f( -self.screenWidthPxHalf + 25 + self.txtNewFolderName.getWidth(), 0, -4), scale=12, width=((self.screenWidthPxHalf - 25) * 2 - self.txtNewFolderName.getWidth() - 100) / 12, overflow=True, command=self.entryAccept, initialText="New Folder", focusInCommand=base.messenger.send, focusInExtraArgs=["unregisterKeyboardEvents"], focusOutCommand=base.messenger.send, focusOutExtraArgs=["reregisterKeyboardEvents"], ) # ACCEPT BUTTON FOR THE CREATE NEW FOLDER self.btnCreate = DirectButton( parent=self.newFolderFrame, relief=1, frameColor=self.theme.text_button_background, frameSize=(-45, 45, -6, 14), pos=LPoint3f(self.screenWidthPxHalf - 65, 0, -4), text="Create", text_scale=12, text_fg=self.theme.default_text_color, command=self.folderCreate, extraArgs=[0]) # Hide the create new folder frame by default self.newFolderFrame.hide() # --------------- # UPDATE CONTENT # --------------- # Initial loading of the files and folders of the current path self.folderReload() # handle window resizing self.prevScreenSize = base.getSize() if self.parent is base.pixel2d: self.accept("window-event", self.windowEventHandler)
def __init__(self, cr): try: self.LocalToon_initialized return except: self.LocalToon_initialized = 1 DistributedToon.__init__(self, cr) self.gagStartKey = config.GetString('gag-start-key') self.gagThrowKey = config.GetString('gag-throw-key') self.avatarChoice = cr.localAvChoice self.smartCamera = SmartCamera() self.chatInput = ChatInput() self.moneyGui = MoneyGui() self.laffMeter = LaffOMeter() self.positionExaminer = PositionExaminer() self.friendRequestManager = FriendRequestManager() self.friendsList = FriendsList() self.panel = ToonPanel() self.firstTimeGenerating = True friendsgui = loader.loadModel( 'phase_3.5/models/gui/friendslist_gui.bam') self.friendButton = DirectButton( geom=(friendsgui.find('**/FriendsBox_Closed'), friendsgui.find('**/FriendsBox_Rollover'), friendsgui.find('**/FriendsBox_Rollover')), text=('', 'Friends', 'Friends', ''), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=0.065, text_pos=(0, -0.2), relief=None, parent=base.a2dTopRight, pos=(-0.18, 0.0, -0.17), command=self.friendsButtonClicked, scale=0.75) friendsgui.removeNode() del friendsgui self.hideFriendButton() self.runSfx = base.loadSfx( 'phase_3.5/audio/sfx/AV_footstep_runloop.ogg') self.runSfx.setLoop(True) self.walkSfx = base.loadSfx( 'phase_3.5/audio/sfx/AV_footstep_walkloop.ogg') self.walkSfx.setLoop(True) self.controlManager = ControlManager.ControlManager(True, False) self.offset = 3.2375 self.firstPersonCamPos = None self.movementKeymap = { 'forward': 0, 'backward': 0, 'left': 0, 'right': 0, 'jump': 0 } self.avatarMovementEnabled = False self.isMoving_forward = False self.isMoving_side = False self.isMoving_back = False self.isMoving_jump = False self.gagThrowBtn = None self.myBattle = None self.gagsTimedOut = False self.needsToSwitchToGag = None self.gagsEnabled = False self.pickerTrav = None self.pickerRay = None self.pickerRayNode = None self.pickerHandler = None self.rolledOverTag = None self.inTutorial = False self.hasDoneJump = False self.lastState = None self.lastAction = None self.jumpHardLandIval = None return
def load(self): """ We're now loading the assets from phase 3.5. """ btnGui = loader.loadModel( 'phase_3.5/models/gui/tt_m_gui_ign_newsBtnGui') bookModel = loader.loadModel( 'phase_3.5/models/gui/tt_m_gui_ign_shtickerBook') self.openNewNewsUp = btnGui.find('**/tt_t_gui_ign_new') self.openNewNewsUpBlink = btnGui.find('**/tt_t_gui_ign_newBlink') self.openNewNewsHover = btnGui.find('**/tt_t_gui_ign_newHover') self.openOldNewsUp = btnGui.find('**/tt_t_gui_ign_oldNews') self.openOldNewsHover = btnGui.find('**/tt_t_gui_ign_oldHover') self.closeNewsUp = bookModel.find('**/tt_t_gui_sbk_newsPage1') self.closeNewsHover = bookModel.find('**/tt_t_gui_sbk_newsPage2') btnGui.removeNode() bookModel.removeNode() oldScale = 0.5 newScale = 0.9 shtickerBookScale = 0.305 newPos = VBase3(0.914, 0, 0.862) shtickerBookPos = VBase3(1.175, 0, -0.83) textScale = 0.06 self.gotoNewsButton = DirectButton( relief=None, image=(self.openOldNewsUp, self.openOldNewsHover, self.openOldNewsHover), text=('', TTLocalizer.EventsPageNewsTabName, TTLocalizer.EventsPageNewsTabName ), # TODO replace this with a symbol text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=newPos, scale=newScale, command=self.__handleGotoNewsButton, ) self.newIssueButton = DirectButton( relief=None, image=(self.openNewNewsUp, self.openNewNewsHover, self.openNewNewsHover), text=('', TTLocalizer.EventsPageNewsTabName, TTLocalizer.EventsPageNewsTabName ), # TODO replace this with a symbol text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=newPos, scale=newScale, command=self.__handleGotoNewsButton, ) self.gotoPrevPageButton = DirectButton( relief=None, image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover), text=('', TTLocalizer.lClose, TTLocalizer.lClose ), #"goto prev page", # TODO replace this with a synmbol text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=newPos, scale=newScale, command=self.__handleGotoPrevPageButton, ) self.goto3dWorldButton = DirectButton( relief=None, image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover), text=('', TTLocalizer.lClose, TTLocalizer.lClose ), # "goto 3d world", # TODO replace this with a symbol text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=newPos, scale=newScale, command=self.__handleGoto3dWorldButton, ) self.newIssueButton.hide() self.gotoNewsButton.hide() self.gotoPrevPageButton.hide() self.goto3dWorldButton.hide() self.accept('newIssueOut', self.handleNewIssueOut) bounce1Pos = VBase3(newPos.getX(), newPos.getY(), newPos.getZ() + 0.022) # (0.914, 0, 0.902) bounce2Pos = VBase3(newPos.getX(), newPos.getY(), newPos.getZ() + 0.015) # (0.914, 0, 0.895) bounceIval = Sequence( LerpPosInterval(self.newIssueButton, 0.1, bounce1Pos, blendType='easeOut'), LerpPosInterval(self.newIssueButton, 0.1, newPos, blendType='easeIn'), LerpPosInterval(self.newIssueButton, 0.07, bounce2Pos, blendType='easeOut'), LerpPosInterval(self.newIssueButton, 0.07, newPos, blendType='easeIn')) self.__blinkIval = Sequence( Func(self.__showOpenEyes), Wait(2), bounceIval, Wait(0.5), Func(self.__showClosedEyes), Wait(0.1), Func(self.__showOpenEyes), Wait(0.1), Func(self.__showClosedEyes), Wait(0.1), ) # Start it looping, but pause it, so we can resume/pause it to # start/stop the flashing. self.__blinkIval.loop() self.__blinkIval.pause() self.buttonsLoaded = True
def load(self): btnGui = loader.loadModel( 'phase_3.5/models/gui/tt_m_gui_ign_newsBtnGui') bookModel = loader.loadModel( 'phase_3.5/models/gui/tt_m_gui_ign_shtickerBook') self.openNewNewsUp = btnGui.find('**/tt_t_gui_ign_new') self.openNewNewsUpBlink = btnGui.find('**/tt_t_gui_ign_newBlink') self.openNewNewsHover = btnGui.find('**/tt_t_gui_ign_newHover') self.openOldNewsUp = btnGui.find('**/tt_t_gui_ign_oldNews') self.openOldNewsHover = btnGui.find('**/tt_t_gui_ign_oldHover') self.closeNewsUp = bookModel.find('**/tt_t_gui_sbk_newsPage1') self.closeNewsHover = bookModel.find('**/tt_t_gui_sbk_newsPage2') btnGui.removeNode() bookModel.removeNode() oldScale = 0.5 newScale = 0.9 shtickerBookScale = 0.305 newPos = VBase3(0.914, 0, 0.862) shtickerBookPos = VBase3(1.175, 0, -0.83) textScale = 0.06 self.newIssueButton = DirectButton( relief=None, sortOrder=DGG.BACKGROUND_SORT_INDEX - 1, image=(self.openNewNewsUp, self.openNewNewsHover, self.openNewNewsHover), text=('', TTLocalizer.EventsPageNewsTabName, TTLocalizer.EventsPageNewsTabName), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=newPos, scale=newScale, command=self.__handleGotoNewsButton) self.gotoPrevPageButton = DirectButton( relief=None, image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=shtickerBookPos, scale=shtickerBookScale, command=self.__handleGotoPrevPageButton) self.goto3dWorldButton = DirectButton( relief=None, image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover), text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1), text_scale=textScale, text_font=ToontownGlobals.getInterfaceFont(), pos=shtickerBookPos, scale=shtickerBookScale, command=self.__handleGoto3dWorldButton) self.hideNewIssueButton() self.gotoPrevPageButton.hide() self.goto3dWorldButton.hide() self.accept('newIssueOut', self.handleNewIssueOut) bounce1Pos = VBase3(newPos.getX(), newPos.getY(), newPos.getZ() + 0.022) bounce2Pos = VBase3(newPos.getX(), newPos.getY(), newPos.getZ() + 0.015) bounceIval = Sequence( LerpPosInterval(self.newIssueButton, 0.1, bounce1Pos, blendType='easeOut'), LerpPosInterval(self.newIssueButton, 0.1, newPos, blendType='easeIn'), LerpPosInterval(self.newIssueButton, 0.07, bounce2Pos, blendType='easeOut'), LerpPosInterval(self.newIssueButton, 0.07, newPos, blendType='easeIn')) self.__blinkIval = Sequence(Func(self.__showOpenEyes), Wait(2), bounceIval, Wait(0.5), Func(self.__showClosedEyes), Wait(0.1), Func(self.__showOpenEyes), Wait(0.1), Func(self.__showClosedEyes), Wait(0.1)) self.__blinkIval.loop() self.__blinkIval.pause() self.buttonsLoaded = True return
def __init__(self, base, handler): """ Set up trigger, get movement directions and create event handling. """ super().__init__() # Save handler instance to update debug mode self.handler = handler # Trigger to tell where the camera is supposed to go self.forward_trig = 0 self.right_trig = 0 self.up_trig = 0 self.heading_trig = 0 self.pitch_trig = 0 # Store the movement needed to go in each direction (updated in task) self.forward = 0 self.right = 0 self.up = 0 # Event handling for key down events self.accept('w', self.set_forward_trig, [1]) self.accept('s', self.set_forward_trig, [-1]) self.accept('a', self.set_right_trig, [-1]) self.accept('d', self.set_right_trig, [1]) self.accept('shift', self.set_up_trig, [1]) self.accept('control', self.set_up_trig, [-1]) self.accept('q', self.set_heading_trig, [1]) self.accept('e', self.set_heading_trig, [-1]) self.accept('r', self.set_pitch_trig, [1]) self.accept('f', self.set_pitch_trig, [-1]) self.accept('f1', self.debug) # Event handling for key up events self.accept('w-up', self.set_forward_trig, [0]) self.accept('s-up', self.set_forward_trig, [0]) self.accept('a-up', self.set_right_trig, [0]) self.accept('d-up', self.set_right_trig, [0]) self.accept('shift-up', self.set_up_trig, [0]) self.accept('control-up', self.set_up_trig, [0]) self.accept('q-up', self.set_heading_trig, [0]) self.accept('e-up', self.set_heading_trig, [0]) self.accept('r-up', self.set_pitch_trig, [0]) self.accept('f-up', self.set_pitch_trig, [0]) # Start task to move camera in desired direction base.taskMgr.add(self.cam_move_task, "CamMoveTask", extraArgs=[base], appendTask=True) # Create button to reset camera position and orientation frame = DirectFrame(frameColor=(.1, .1, .1, .7), frameSize=(-.22, .22, -.05, .08), pos=(-1.1, 0, -0.94)) button = DirectButton(text="Reset Camera", frameSize=(-4, 4, -.5, 1), scale=.05, command=reset_camera, extraArgs=[base]) button.reparentTo(frame)
def __init__(self, rootParent=None): self.frmCreateRoom = DirectFrame( borderWidth=(0.01, 0.01), frameColor=(1, 1, 1, 1), frameSize=(-0.65, 0.65, -0.55, 0.55), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0, 0, 0), relief=5, parent=rootParent, ) self.frmCreateRoom.setTransparency(0) self.btnOk = DirectButton( hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.425, 0, -0.45), scale=LVecBase3f(0.1, 0.1, 0.1), text='OK', 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.frmCreateRoom, command=base.messenger.send, extraArgs=["createRoom_Ok"], ) self.btnOk.setTransparency(0) self.btnCancel = DirectButton( hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.4, 0, -0.45), scale=LVecBase3f(0.1, 0.1, 0.1), text='Cancel', 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.frmCreateRoom, command=base.messenger.send, extraArgs=["createRoom_Cancel"], ) self.btnCancel.setTransparency(0) self.pg1640 = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0, 0, 0.425), scale=LVecBase3f(0.1, 0.1, 0.1), text='Create New Room', 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.frmCreateRoom, ) self.pg1640.setTransparency(0) self.pg2148 = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.05, 0, 0.24), scale=LVecBase3f(0.1, 0.1, 0.1), text='Room Name', text_align=TextNode.A_right, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.pg2148.setTransparency(0) self.pg2173 = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.05, 0, 0.065), scale=LVecBase3f(0.1, 0.1, 0.1), text='# of Players', text_align=TextNode.A_right, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.pg2173.setTransparency(0) self.pg2201 = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.05, 0, -0.115), scale=LVecBase3f(0.1, 0.1, 0.1), text='Game Type', text_align=TextNode.A_right, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.pg2201.setTransparency(0) self.entryRoomName = DirectEntry( hpr=LVecBase3f(0, 0, 0), overflow=1, pos=LPoint3f(0.08, 0, 0.25), scale=LVecBase3f(0.05, 0.1, 0.05), width=8.0, text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.entryRoomName.setTransparency(0) self.optionNumPlayers = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.175, 0, 0.06), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.optionNumPlayers.setTransparency(0) self.optionGameType = DirectOptionMenu( items=['item1'], frameSize=(0.07500000298023224, 3.012500149011612, -0.11250001192092896, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.175, 0, -0.125), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.optionGameType.setTransparency(0) self.pg629 = DirectLabel( frameColor=(0.8, 0.8, 0.8, 0.0), frameSize=(-1.15, 1.25, -0.113, 0.725), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.055, 0, -0.3), scale=LVecBase3f(0.1, 0.1, 0.1), text='Difficulty', text_align=TextNode.A_right, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.pg629.setTransparency(0) self.optionDifficulty = DirectOptionMenu( items=['item1'], frameSize=(0.1, 3.013, -0.113, 0.75), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(0.175, 0, -0.305), scale=LVecBase3f(0.1, 0.1, 0.1), text='item1', cancelframe_frameSize=(-1, 1, -1, 1), cancelframe_hpr=LVecBase3f(0, 0, 0), cancelframe_pos=LPoint3f(0, 0, 0), cancelframe_relief=None, item_frameSize=(0.07500000298023224, 2.4125001430511475, -0.11250001192092896, 0.75), item_hpr=LVecBase3f(0, 0, 0), item_pos=LPoint3f(-0.075, 0, -0.75), item_text='item1', item0_text_align=TextNode.A_left, item0_text_scale=(1, 1), item0_text_pos=(0, 0), item0_text_fg=LVecBase4f(0, 0, 0, 1), item0_text_bg=LVecBase4f(0, 0, 0, 0), popupMarker_frameSize=(-0.5, 0.5, -0.2, 0.2), popupMarker_hpr=LVecBase3f(0, 0, 0), popupMarker_pos=LPoint3f(2.7125, 0, 0.31875), popupMarker_relief=2, popupMarker_scale=LVecBase3f(0.4, 0.4, 0.4), popupMenu_frameSize=(0, 2.3375001400709152, -0.862500011920929, 0), popupMenu_hpr=LVecBase3f(0, 0, 0), popupMenu_pos=LPoint3f(0, 0, 0), popupMenu_relief='raised', text_align=TextNode.A_left, text_scale=(1, 1), text_pos=(0, 0), text_fg=LVecBase4f(0, 0, 0, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=self.frmCreateRoom, ) self.optionDifficulty.setTransparency(0)
def __init__(self, rootParent=None): self.frmMain = DirectFrame( frameColor=(1.0, 1.0, 1.0, 0.0), frameSize=(-0.436, 0.45, -0.5, 0.5), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/InventoryPlate.png', pos=LPoint3f(-0.4, 0, 0.52), image_scale=LVecBase3f(0.436, 1, 0.5), image_pos=LPoint3f(0, 0, 0), parent=rootParent, ) self.frmMain.setTransparency(1) self.frmWeapon = DirectFrame( frameColor=(1.0, 0.0, 1.0, 0.0), frameSize=(-0.09, 0.09, -0.242, 0.242), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/thief/weapon1.png', pos=LPoint3f(-0.165, 0, 0.15), image_scale=LVecBase3f(0.09, 0, 0.242), image_pos=LPoint3f(0, 0, 0), parent=self.frmMain, ) self.frmWeapon.setTransparency(1) self.frmArmor = DirectFrame( frameColor=(1.0, 0.0, 1.0, 0.0), frameSize=(-0.09, 0.09, -0.242, 0.242), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/thief/weapon1.png', pos=LPoint3f(0.18, 0, 0.15), image_scale=LVecBase3f(0.09, 0, 0.242), image_pos=LPoint3f(0, 0, 0), parent=self.frmMain, ) self.frmArmor.setTransparency(1) self.frmPotion1 = DirectFrame( frameColor=(0.0, 1.0, 1.0, 0.0), frameSize=(-0.1, 0.1, -0.1, 0.1), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/potions/Potion1.png', pos=LPoint3f(-0.23, 0, -0.315), image_scale=LVecBase3f(0.09, 0.09, 0.09), image_pos=LPoint3f(0, 0, 0), parent=self.frmMain, ) self.frmPotion1.setTransparency(1) self.frmPotion2 = DirectFrame( frameColor=(0.0, 1.0, 1.0, 0.0), frameSize=(-0.1, 0.1, -0.1, 0.1), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/potions/Potion2.png', pos=LPoint3f(0, 0, -0.325), image_scale=LVecBase3f(0.09, 0.09, 0.09), image_pos=LPoint3f(0, 0, 0), parent=self.frmMain, ) self.frmPotion2.setTransparency(1) self.frmPotion3 = DirectFrame( frameColor=(0.0, 1.0, 1.0, 0.0), frameSize=(-0.1, 0.1, -0.1, 0.1), hpr=LVecBase3f(0, 0, 0), image='./assets/inventory/potions/Potion3.png', pos=LPoint3f(0.25, 0, -0.315), image_scale=LVecBase3f(0.09, 0.1, 0.09), image_pos=LPoint3f(0, 0, 0), parent=self.frmMain, ) self.frmPotion3.setTransparency(1) self.btnToggleInventory = DirectButton( frameColor=(0.15, 0.15, 0.15, 1.0), frameSize=(-0.4, 0.4, -0.02, 0.05), hpr=LVecBase3f(0, 0, 0), pos=LPoint3f(-0.4, 0, 0.02), relief=1, scale=LVecBase3f(1, 1, 1), text='Toggle Inventory', text_align=TextNode.A_center, text_scale=(0.05, 0.05), text_pos=(0, 0), text_fg=LVecBase4f(0.8, 0.8, 0.8, 1), text_bg=LVecBase4f(0, 0, 0, 0), parent=rootParent, command=base.messenger.send, extraArgs=["toggleInventory"], pressEffect=1, ) self.btnToggleInventory.setTransparency(0)
def bld_page(self): menu_args = self.menu_args self.pagewidgets = [] def add_lab(txt, txt_tr, pos_z): lab = DirectLabel(text='', pos=(-.1, 1, pos_z), text_align=TextNode.ARight, **menu_args.label_args) PageGui.transl_text(lab, txt, txt_tr) self.pagewidgets += [lab] return lab add_lab('Language', _('Language'), .7) self._lang_opt = DirectOptionMenu(text='', items=eng.languages, pos=(.49, 1, .7), initialitem=self.props.lang, command=self.__change_lang, **menu_args.option_args) add_lab('Volume', _('Volume'), .5) self._vol_slider = DirectSlider(pos=(.52, 0, .53), scale=.49, value=self.props.volume, frameColor=menu_args.btn_color, thumb_frameColor=menu_args.text_fg, command=self.__on_volume) add_lab('Fullscreen', _('Fullscreen'), .3) self._fullscreen_cb = DirectCheckButton( pos=(.12, 1, .32), text='', indicatorValue=self.props.fullscreen, indicator_frameColor=menu_args.text_fg, command=lambda val: eng.toggle_fullscreen(), **menu_args.checkbtn_args) add_lab('Resolution', _('Resolution'), .1) res2vec = lambda res: LVector2i(*[int(val) for val in res.split('x')]) self._res_opt = DirectOptionMenu( text='', items=[ 'x'.join([str(el_res) for el_res in res]) for res in eng.resolutions ], pos=(.49, 1, .1), initialitem='x'.join(str(res) for res in eng.closest_res), command=lambda res: eng.set_resolution(res2vec(res)), **menu_args.option_args) add_lab('Antialiasing', _('Antialiasing'), -.1) aa_next_lab = DirectLabel(text='', pos=(.2, 1, -.1), text_align=TextNode.ALeft, **menu_args.label_args) PageGui.transl_text(aa_next_lab, '(from the next execution)', _('(from the next execution)')) self._aa_cb = DirectCheckButton(pos=(.12, 1, -.07), text='', indicatorValue=self.props.aa, indicator_frameColor=menu_args.text_fg, **menu_args.checkbtn_args) add_lab('Shaders', _('Shaders'), -.3) self._shaders_cb = DirectCheckButton( pos=(.12, 1, -.27), text='', indicatorValue=self.props.shaders, indicator_frameColor=menu_args.text_fg, **menu_args.checkbtn_args) # bld_in = lambda: self.menu.logic.push_page( # InputPage(self.menu, self.props.joystick, self.props.keys)) # it doesn't work if we go forward and back between options and input: # we should update keys input_btn = DirectButton(text='', pos=(0, 1, -.5), command=self.on_input_btn, **menu_args.btn_args) PageGui.transl_text(input_btn, 'Configure input', _('Configure input')) self.pagewidgets += [ self._lang_opt, self._vol_slider, self._fullscreen_cb, self._res_opt, self._aa_cb, aa_next_lab, input_btn, self._shaders_cb ] map(self.add_widget, self.pagewidgets) idx = LangMgr().lang_codes.index(self.props.lang) self.__change_lang(eng.languages[idx]) ThanksPageGui.bld_page(self)
def __makeGui(self): if self.madeGui: return guiModel = 'phase_4/models/gui/cannon_game_gui.bam' cannonGui = loader.loadModel(guiModel) self.aimPad = DirectFrame(image=cannonGui.find('**/CannonFire_PAD'), relief=None, pos=(0.7, 0, -0.553333), scale=0.8) cannonGui.removeNode() self.fireButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Fire_Btn_UP'), (guiModel, '**/Fire_Btn_DN'), (guiModel, '**/Fire_Btn_RLVR')), relief=None, pos=(0.0115741, 0, 0.00505051), scale=1.0, command=self.__firePressed) self.upButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.0115741, 0, 0.221717)) self.downButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.0136112, 0, -0.210101), image_hpr=(0, 0, 180)) self.leftButton = DirectButton(parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(-0.199352, 0, -0.000505269), image_hpr=(0, 0, -90)) self.rightButton = DirectButton( parent=self.aimPad, image=((guiModel, '**/Cannon_Arrow_UP'), (guiModel, '**/Cannon_Arrow_DN'), (guiModel, '**/Cannon_Arrow_RLVR')), relief=None, pos=(0.219167, 0, -0.00101024), image_hpr=(0, 0, 90)) guiClose = loader.loadModel( 'phase_3.5/models/gui/avatar_panel_gui.bam') cannonBallText = '%d/%d' % (self.cannonBallsLeft, GameGlobals.CannonAmmo) self.cannonBallLabel = DirectLabel(parent=self.aimPad, text=cannonBallText, text_fg=VBase4(1, 1, 1, 1), text_align=TextNode.ACenter, relief=None, pos=(0.475, 0.0, -0.35), scale=0.25) self.cannonBallLabel.hide() self.reloadingLabel = DirectLabel(base.a2dBottomLeft, relief=None, text='Reloading...', text_scale=0.06, text_align=TextNode.ALeft, text_font=GameGlobals.getSignFont(), text_fg=(0.8, 0.8, 0.8, 1), text_shadow=(0, 0, 0, 1), pos=(0.2, 0, 0.2)) self.reloadingLabel.hide() # temp commenting this out because python 2.7 gay #if self.cannonBallsLeft < 5: # if self.flashingLabel: # self.flashingLabel.stop() # flashingTrack = Sequence() # for i in range(10): # flashingTrack.append(LerpColorScaleInterval(self.cannonBallLabel, 0.5, VBase4(1, 0, 0, 1))) # flashingTrack.append(LerpColorScaleInterval(self.cannonBallLabel, 0.5, VBase4(1, 1, 1, 1))) # # self.flashingLabel = flashingTrack # self.flashingLabel.start() self.aimPad.setColor(1, 1, 1, 0.9) def bindButton(button, upHandler, downHandler): button.bind(DGG.B1PRESS, lambda x, handler=upHandler: handler()) button.bind(DGG.B1RELEASE, lambda x, handler=downHandler: handler()) bindButton(self.upButton, self.__upPressed, self.__upReleased) bindButton(self.downButton, self.__downPressed, self.__downReleased) bindButton(self.leftButton, self.__leftPressed, self.__leftReleased) bindButton(self.rightButton, self.__rightPressed, self.__rightReleased) self.__enableAimInterface() self.madeGui = 1