def makeMoreDetailsPanel(self):
     self.actionFSM.request('off')
     self.removeMoreDetailsPanel()
     self.removeActionPanel()
     self.makeActionPanel()
     zoneId = self.avatarInfo[5]
     shardId = self.avatarInfo[6]
     isOnline = self.avatarInfo[7]
     shardName = 'Unknown District'
     hoodName = ZoneUtil.getHoodId(zoneId, 1)
     for district in base.cr.activeDistricts.values():
         if district.doId == shardId:
             shardName = district.getDistrictName()
             break
     if not isOnline:
         hoodName = 'Offline'
         shardName = 'Offline'
     self.locationText = OnscreenText('Location: {0}'.format(hoodName),
                                      parent=self.actionFrame,
                                      pos=(-0.3, 0.05, 0),
                                      align=TextNode.ALeft,
                                      scale=0.04)
     self.shardText = OnscreenText('District: {0}'.format(shardName),
                                   parent=self.actionFrame,
                                   pos=(-0.3, 0.0, 0),
                                   align=TextNode.ALeft,
                                   scale=0.04)
     self.detailsExitBtn = DirectButton(geom=CIGlobals.getCancelBtnGeom(),
                                        parent=self.actionFrame,
                                        relief=None,
                                        scale=0.8,
                                        pos=(-0.3, 0.0, -0.175),
                                        command=self.removeMoreDetailsPanel)
Esempio n. 2
0
    def startTraverseAnimationControls(self, animName):
        if not self.__traverseGUI:
            if not self.getNumFrames(animName) is None:
                frame = self.getCurrentFrame(animName)

                if frame is None:
                    frame = 0
                    self.pose(animName, 0)

                self.accept('h',
                            self.__traverseAnimation,
                            extraArgs=[animName, -1])
                self.accept('j',
                            self.__traverseAnimation,
                            extraArgs=[animName, 1])

                self.__traverseGUI = OnscreenText(
                    text=
                    'Current Frame: {0}\n\'H\' Decrease Frame, \'J\' Increase Frame'
                    .format(str(frame)),
                    pos=(0, -0.75),
                    font=CIGlobals.getToonFont(),
                    fg=(1, 1, 1, 1),
                    shadow=(0, 0, 0, 1))
            else:
                self.notify.info(
                    'Tried to traverse unknown animation: {0}'.format(
                        animName))
Esempio n. 3
0
    def start(self, avatar):
        self.avatar = avatar
        self.cleanupLocationSeeker()
        self.buildButton()
        self.button.reparentTo(self.avatar.find('**/def_joint_left_hold'))

        track = Sequence(
            ActorInterval(self.avatar,
                          self.buttonAnim,
                          startFrame=0,
                          endFrame=self.chooseLocFrame,
                          playRate=self.playRate))

        if self.avatar == base.localAvatar:
            self.locationSeeker = LocationSeeker(self.avatar, self.minDistance,
                                                 self.maxDistance)
            self.locationSeeker.setShadowType(self.isCircle, self.shadowScale)
            self.avatar.acceptOnce(
                self.locationSeeker.getLocationSelectedName(),
                base.localAvatar.releaseGag)
            track.append(Func(self.locationSeeker.startSeeking))

            self.helpInfo = OnscreenText(
                text='Move the shadow with your mouse\nClick to release',
                pos=(0, -0.75),
                font=CIGlobals.getToonFont(),
                fg=(1, 1, 1, 1),
                shadow=(0, 0, 0, 1))

        track.start()
Esempio n. 4
0
 def enterPlay(self):
     DistributedMinigame.enterPlay(self)
     base.localAvatar.attachCamera()
     base.localAvatar.startSmartCamera()
     base.localAvatar.enableAvatarControls()
     self.brLabel = OnscreenText(
         text="",
         parent=base.a2dTopRight,
         fg=(1, 1, 1, 1),
         shadow=(0, 0, 0, 1),
         pos=(-0.1, -0.1, 0),
         align=TextNode.ARight,
     )
     self.bdLabel = OnscreenText(
         text="",
         parent=base.a2dTopLeft,
         fg=(1, 1, 1, 1),
         shadow=(0, 0, 0, 1),
         pos=(0.1, -0.1, 0),
         align=TextNode.ALeft,
     )
     self.bsLabel = OnscreenText(
         text="",
         parent=base.a2dTopLeft,
         fg=(1, 1, 1, 1),
         shadow=(0, 0, 0, 1),
         pos=(0.1, -0.2, 0),
         align=TextNode.ALeft,
     )
     self.accept("enterMGDeliveryGagShop", self.__maybeDropOffBarrel)
    def __init__(self, version='n/a'):
        DirectObject.__init__(self)

        self.backgroundNodePath = render2d.attachNewNode('background', 0)
        self.backgroundModel = loader.loadModel(
            'phase_3/models/gui/loading-background.bam')
        self.backgroundModel.reparentTo(self.backgroundNodePath)
        self.backgroundNodePath.find('**/fg').removeNode()
        self.backgroundNodePath.setScale(1, 1, 1)

        self.logo = OnscreenImage(
            parent=base.a2dTopCenter, image='phase_3/maps/toontown-logo.png',
            scale=(1.0, 1, 0.5), pos=(0, 0, -0.85))
        self.logo.setTransparency(TransparencyAttrib.MAlpha)

        self.label = OnscreenText(
            TTLocalizer.ClickToStartLabel, parent=base.a2dBottomCenter,
            font=ToontownGlobals.getMinnieFont(), fg=Vec4(1, 1, 1, 1),
            scale=0.1, align=TextNode.ACenter)
        self.label.setZ(0.35)

        self.versionLabel = OnscreenText(
            '\x01white_shadow\x01%s\x02' % version, parent=base.a2dBottomRight,
            font=ToontownGlobals.getMinnieFont(), fg=Vec4(0, 0, 0, 1),
            scale=0.06, align=TextNode.ARight)
        self.versionLabel.setPos(-0.025, 0.025)

        self.setColorScale(Vec4(0, 0, 0, 0))

        self.fadeTrack = None
        self.logoPosTrack = None
        self.logoScaleTrack = None
        self.labelPosTrack = None
        self.labelColorScaleTrack = None
Esempio n. 6
0
class CILoadingScreen:

    def __init__(self):
        self.transitions = Transitions(loader)

    def createMenu(self):
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        self.version_lbl = OnscreenText(text='ver-' + game.version, scale=0.06, pos=(-1.32,
                                                                                     -0.97,
                                                                                     -0.97), align=TextNode.ALeft, fg=(0.9,
                                                                                                                       0.9,
                                                                                                                       0.9,
                                                                                                                       7))

    def beginLoadGame(self):
        phasesToScan = [
         'models', 'phase_3/models', 'phase_3.5/models', 'phase_4/models']
        self.models = FileUtility.findAllModelFilesInVFS(phasesToScan)
        for model in self.models:
            loader.loadModel(model)
            loader.progressScreen.tick()

        doneInitLoad()
        self.destroy()

    def loadModelDone(self, array):
        self.modelsLoaded += 1
        if self.modelsLoaded == len(self.models):
            doneInitLoad()
            self.destroy()

    def destroy(self):
        self.version_lbl.destroy()
 def enterKickSection(self):
     geom = CIGlobals.getDefaultBtnGeom()
     self.infoLbl = OnscreenText(text="Kick or Ban?", pos=(0, 0.45))
     self.kickBtn = DirectButton(geom=geom,
                                 text_scale=0.04,
                                 relief=None,
                                 scale=1.0,
                                 text="Kick",
                                 pos=(0, 0, 0.1),
                                 text_pos=(0, -0.01),
                                 command=self.book.finishedResume,
                                 extraArgs=[KickBanDialog, [0]])
     self.banBtn = DirectButton(geom=geom,
                                text_scale=0.04,
                                relief=None,
                                scale=1.0,
                                text="Ban",
                                pos=(0, 0, 0.0),
                                text_pos=(0, -0.01),
                                command=self.book.finishedResume,
                                extraArgs=[KickBanDialog, [1]])
     self.cancelBtn = DirectButton(geom=geom,
                                   text_scale=0.04,
                                   relief=None,
                                   scale=1.0,
                                   text="Cancel",
                                   pos=(-0.45, 0.15, -0.45),
                                   text_pos=(0, -0.01),
                                   command=self.fsm.request,
                                   extraArgs=['basePage'])
Esempio n. 8
0
class Game_setup(Frame):
	sgn_start='Game_setup.sgn_start'

	def __init__(self,*args,**kwargs):
		kwargs['layout']=layout.HLayout
		Frame.__init__(self,*args,**kwargs)
		res=loader.loadModel('data/gui/game_setup.egg')
		self.resources = {	'start_btn':res.find('**/game_setup.start_btn')}
		#default config =P
		self.config=dict(default.game_conf)

	def open(self):
		[Spacer(parent=self) for _ in range(2)]
		self.right_frame=Frame( layout=layout.VLayout,
								parent=self,
								pref_w=180)
		Spacer(parent=self.right_frame)
		self.start_btn=Button(	pref_h=70,
								p3dobject=DirectButton(geom=(self.resources['start_btn']),
														borderWidth=(0,0),
														command=messenger.send, extraArgs=[Game_setup.sgn_start]),
								parent=self.right_frame)
		[Spacer(parent=self.right_frame) for _ in range(5)]
		Spacer(parent=self)

		self.message=OnscreenText(text='game setup',style=1,fg=(1,1,1,1),pos=(.87,-.95),scale=.07)

	def close(self):
		del self.right_frame
		self.start_btn.p3dobject.destroy()
		del self.start_btn
		self.message.destroy()
		del self.message
Esempio n. 9
0
 def __init__(self):
     NodePath.__init__(self, 'wave-gui')
     self.reparentTo(base.a2dBottomCenter)
     self.setBin('fixed', 60)
     self.setTransparency(True, 1)
     self.setAlphaScale(0.75, 1)
     self.setZ(0.1)
     self.frame = DirectFrame(image='materials/ui/wave_ui_base.png',
                              parent=self,
                              relief=None,
                              image_scale=(.373, 1, .094))
     self.waveText = OnscreenText(text="Wave 4",
                                  pos=(0, 0.0175, 0),
                                  scale=0.06,
                                  parent=self.frame)
     self.progress = DirectWaitBar(scale=(.324, 1, .3),
                                   relief=None,
                                   barColor=(1, 0.75, 0, 1),
                                   parent=self.frame,
                                   pos=(0, 0, -0.0293))
     self.progress.setBin('fixed', 61)
     self.progress['range'] = 50
     self.progress['value'] = 35
     self.progressText = OnscreenText(text=str(self.progress['value']) +
                                      " / " + str(self.progress['range']),
                                      scale=0.04,
                                      parent=self.frame,
                                      pos=(0, -0.04, 0))
     self.progressText.setBin('fixed', 62)
     self.hide()
 def enterFrozen(self):
     self.loadIceCube()
     base.playSfx(self.iceFormSfx)
     base.cr.playGame.getPlace().fsm.request('stop', [0])
     base.localAvatar.stop()
     base.playSfx(choice(self.frozenSfxArray))
     self.iccsIval = LerpColorScaleInterval(
         self.iceCube,
         duration=0.5,
         colorScale=VBase4(0.76, 0.76, 1.0, 1.0),
         startColorScale=self.iceCube.getColorScale(),
         blendType='easeInOut')
     self.iccsIval.start()
     props = WindowProperties()
     props.setCursorHidden(True)
     base.win.requestProperties(props)
     self.frame = DirectFrame(pos=(0, 0, 0.7))
     self.powerBar = DirectWaitBar(frameColor=(1, 1, 1, 1),
                                   range=100,
                                   value=0,
                                   scale=(0.4, 0.5, 0.25),
                                   parent=self.frame,
                                   barColor=(0.55, 0.7, 1.0, 1.0))
     self.label = OnscreenText(text="SHAKE MOUSE",
                               shadow=(0, 0, 0, 1),
                               fg=(0.55, 0.7, 1.0, 1.0),
                               pos=(0, -0.1, 0),
                               parent=self.frame)
     taskMgr.add(self.__watchMouseMovement, 'BRWater-watchMouseMovement')
     taskMgr.add(self.__lowerPowerBar, 'BRWater-lowerPowerBar')
     mw = base.mouseWatcherNode
     if mw.hasMouse():
         self.lastMouseX = mw.getMouseX()
 def enterSysMsgSection(self):
     geom = CIGlobals.getDefaultBtnGeom()
     self.infoLbl = OnscreenText(
         text="Inform all online players about something.", pos=(0, 0.45))
     self.msgEntry = DirectEntry(
         initialText="System Message...",
         scale=0.055,
         width=15,
         numLines=4,
         command=self.sendSystemMessageCommand,
         focusInCommand=base.localAvatar.chatInput.disableKeyboardShortcuts,
         focusOutCommand=base.localAvatar.chatInput.enableKeyboardShortcuts,
         pos=(-0.4, 0, 0))
     self.sendBtn = DirectButton(
         geom=geom,
         text_scale=0.04,
         relief=None,
         scale=1.0,
         text="Send",
         pos=(0, 0, -0.35),
         text_pos=(0, -0.01),
         command=self.sendSystemMessageCommand,
     )
     self.cancelBtn = DirectButton(geom=geom,
                                   text_scale=0.04,
                                   relief=None,
                                   scale=1.0,
                                   text="Cancel",
                                   pos=(-0.45, 0.15, -0.55),
                                   text_pos=(0, -0.01),
                                   command=self.fsm.request,
                                   extraArgs=['basePage'])
Esempio n. 12
0
 def SetupTimer(self):
     self.btn = aspect2d.attachNewNode("btn")
     self.btn.setTransparency(1)
     self.timesec = OnscreenText(text="", pos=(1.3, -0.71), fg=(1, 1, 1, 1), mayChange=1, scale=0.05)
     self.timemin = OnscreenText(text="", pos=(1.1, -0.71), fg=(1, 1, 1, 1), mayChange=1, scale=0.05)
     self.pausebtn = DirectButton(
         text="Pause (%d)" % (self.pindex),
         parent=self.btn,
         text_fg=(0, 0.2, 0, 1),
         text_pos=(0.05, -0.15),
         text_scale=(0.48, 0.53),
         image=(MYDIRIMG + "btnof.png", MYDIRIMG + "btnon.png", MYDIRIMG + "btnon.png", None),
         frameColor=(0, 0, 0, 0),
         pos=(-1.0, 0, -0.81),
         image_scale=(1.0, 0, 0.7),
         scale=(0.15, 0, 0.10),
         command=self.Pause,
     )
     self.infobtn = DirectButton(
         text="Info",
         parent=self.btn,
         text_fg=(0, 0.2, 0, 1),
         text_pos=(0.05, -0.15),
         text_scale=0.6,
         image=(MYDIRIMG + "btnof.png", MYDIRIMG + "btnon.png", MYDIRIMG + "btnon.png", None),
         frameColor=(0, 0, 0, 0),
         pos=(-1.0, 0, -0.68),
         image_scale=(1.0, 0, 0.7),
         scale=(0.15, 0, 0.10),
         command=self.Pause,
     )
     taskMgr.doMethodLater(1, self.Timer, "tickTask")
Esempio n. 13
0
    def createMenu(self):
        """
		self.menuBg = loader.loadModel("phase_3/models/gui/loading-background.bam")
		self.menuBg.find('**/fg').removeNode()
		
		#self.trolleyTex = loader.loadTexture("phase_3.5/maps/trolley.jpg", "phase_3.5/maps/trolley_a.rgb")
		#self.trolley = OnscreenImage(image=self.trolleyTex, scale=(0.5, 0, 0.6))
		#self.trolley.setTransparency(True)
		
		#self.logo = loader.loadTexture("phase_3/maps/toontown_online_logo.tif")
		#self.logoImg = OnscreenImage(image=self.logo, scale=(0.6, 0, 0.225), pos=(0, 0, 0.5))
		#self.logoImg.setTransparency(True)
		
		self.logo = loader.loadTexture("phase_3/maps/CogInvasion_Logo.png")
		self.logoImg = OnscreenImage(image = self.logo, scale = (1.0, 0, 0.6))
		self.logoImg.setTransparency(True)
		self.logoImg.reparentTo(hidden)
		
		self.bg_img = OnscreenImage(image=self.menuBg, parent=render2d)
		"""
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        self.version_lbl = OnscreenText(text="ver-" + game.version,
                                        scale=0.06,
                                        pos=(-1.32, -0.97, -0.97),
                                        align=TextNode.ALeft,
                                        fg=(0.9, 0.9, 0.9, 7))
Esempio n. 14
0
 def load(self):
     StateData.load(self)
     self.loadingLabel = OnscreenText(text='Loading...',
                                      font=CIGlobals.getToonFont(),
                                      pos=(0, 0.1, 0),
                                      scale=0.08,
                                      parent=aspect2d)
Esempio n. 15
0
    def __init__(self, gsg, trackId = None, name = None, color = None, trackBarScale = None):
        DirectFrame.__init__(self)
        self.gsg = gsg
        self.trackId = trackId
        if trackId is not None:
            self.trackName = GagGlobals.TrackNameById[trackId]
            color = GagGlobals.TrackColorByName[self.trackName]
        else:
            if name:
                self.trackName = name
            if not color:
                color = (1, 1, 1, 1)
                
        self.trackColor = color
            
        self['image'] = 'phase_14/maps/track_bar.png'
        self['image_scale'] = (1.119, 0, 0.152)
        if trackBarScale:
            self['image_scale'][0] *= trackBarScale[0]
            self['image_scale'][2] *= trackBarScale[1]
        self['relief'] = None
        
        self['image_color'] = (color[0], color[1], color[2], 1)

        self.trackText = OnscreenText(text = self.trackName.upper(), fg = (0, 0, 0, 0.65), shadow = (0, 0, 0, 0),
                                      pos = (-0.825, -0.022), scale = 0.12 * (3.0/4.0), align = TextNode.ACenter, parent = self)
        self.gagBtns = []

        self.currentGag = 0
 def __init__(self, cr):
     try:
         self.DistributedCogBattle_initialized
         return
     except:
         self.DistributedCogBattle_initialized = 1
     DistributedObject.__init__(self, cr)
     self.hoodIndex = None
     self.totalCogs = None
     self.cogsRemaining = None
     self.cogProgressBar = None
     self.DNCSigns = []
     self.introMessageSeq = None
     self.victorySeq = None
     self.turretManager = None
     self.isGettingBeans = False
     self.getBeansLabel = OnscreenText(
         text="Hurry and pick up all of the jellybeans!",
         fg=(1, 1, 1, 1),
         shadow=(0, 0, 0, 1),
         pos=(0, 0.7),
         font=CIGlobals.getMinnieFont())
     self.getBeansLabel.hide()
     self.timer = Timer()
     self.timer.setZeroCommand(self.getBeansTimeUp)
     # Give toons 30 seconds to get the beans at the end.
     self.timer.setInitialTime(60)
     self.endMusic = base.loadMusic(
         'phase_7/audio/bgm/encntr_toon_winning_indoor.mid')
     self.balloonSound = base.loadSfx(
         'phase_3/audio/sfx/GUI_balloon_popup.ogg')
class CILoadingScreen:
		
	def createMenu(self):
		"""
		self.menuBg = loader.loadModel("phase_3/models/gui/loading-background.bam")
		self.menuBg.find('**/fg').removeNode()
		
		#self.trolleyTex = loader.loadTexture("phase_3.5/maps/trolley.jpg", "phase_3.5/maps/trolley_a.rgb")
		#self.trolley = OnscreenImage(image=self.trolleyTex, scale=(0.5, 0, 0.6))
		#self.trolley.setTransparency(True)
		
		#self.logo = loader.loadTexture("phase_3/maps/toontown_online_logo.tif")
		#self.logoImg = OnscreenImage(image=self.logo, scale=(0.6, 0, 0.225), pos=(0, 0, 0.5))
		#self.logoImg.setTransparency(True)
		
		self.logo = loader.loadTexture("phase_3/maps/CogInvasion_Logo.png")
		self.logoImg = OnscreenImage(image = self.logo, scale = (1.0, 0, 0.6))
		self.logoImg.setTransparency(True)
		self.logoImg.reparentTo(hidden)
		
		self.bg_img = OnscreenImage(image=self.menuBg, parent=render2d)
		"""
		base.transitions.refreshGraphicsEngine()
		self.version_lbl = OnscreenText(text=metadata.getBuildInformation(), scale=0.06,
                                        pos=(-1.32, -0.97, -0.97), align=TextNode.ALeft, fg = loader.progressScreen.Color)
		
	def beginLoadGame(self):
		# We'll pre-load some models so we don't get any lag
		# when they are actually loaded into the game.
		phasesToScan = ["models", "phase_3/models", "phase_3.5/models", "phase_4/models",
			#"phase_5/models", "phase_5.5/models", "phase_6/models", "phase_7/models",
			#"phase_8/models", "phase_9/models", "phase_10/models", "phase_11/models",
			#"phase_12/models", "phase_13/models"]
			]
		self.models = FileUtility.findAllModelFilesInVFS(phasesToScan)
		# self.models = []
		for model in self.models:
			loader.loadModel(model)
			loader.progressScreen.tick()
		doneInitLoad()
		self.destroy()
		
	def loadModelDone(self, array):
		self.modelsLoaded += 1
		if self.modelsLoaded == len(self.models):
			doneInitLoad()
			self.destroy()
				
	def destroy(self):
		self.version_lbl.destroy()
		#self.bg_img.destroy()
		#self.menuBg.removeNode()
		#self.trolley.destroy()
		#self.logoImg.destroy()
		#del self.menuBg
		#del self.bg_img
		#del self.trolley
		#del self.logoImg
		return
Esempio n. 18
0
 def __init__(self, point_cloud_size=17776):
     Navigator3D.__init__(self)
     self._point_cloud = None
     self._point_cloud_coloring = None
     self._cuboids = []
     self.points_vb = PointCloudVertexBuffer(point_cloud_size)
     self._user_text = OnscreenText('', style=1, fg=(1, 1, 1, 1), scale=.04)
     self._user_text.setPos(-0.9, 0.9)
Esempio n. 19
0
 def enter(self):
     if not self.isEntered:
         if self.wantHeader:
             # Create the header at the top of the page.
             self.header = OnscreenText(text=self.title,
                                        pos=(0, 0.62, 0),
                                        scale=0.12)
     StateData.enter(self)
Esempio n. 20
0
class TitleScreen(State):
	def __init__(self):
		State.__init__(self)

		options = ['New Game', 'Exit']
		self.optState = ['NewGame', 'Exit']

		self.menu = Menu()
		self.menu.addOptions(options)

	def register(self, render, camera, keys):
		State.register(self, render, camera, keys)

		cm = CardMaker('CardMaker-Title')
		tex = loadTexture('titlescreen.png')

		cm.setFrame(-1, 1, -1, 1)

		self.bg = self.node.attachNewNode(cm.generate())
		self.bg.setPos(0, 0, 0)
		self.bg.setTexture(tex)

		menuActions = {'up': (Menu.previousOpt, self.menu),
						'down': (Menu.nextOpt, self.menu),
						'action': (self.selectOption, None)
						}

		self.menu.registerKeys(keys, menuActions)

		self.title = OnscreenText(text="", mayChange = True , style=2,
							 fg=(1,1,1,1), pos=(0, 0.75), scale = 0.2) # is this used??
		self.text = {}

		id=0
		for opt in self.menu.options:
			self.text[opt] = OnscreenText(text=opt, mayChange = True , style=2, fg=(1,1,1,1), pos=(0, -0.3 - 0.15*id), scale = .1)
			id+=1

		self.title.reparentTo(self.node)
		for opt in self.text.keys():
			self.text[opt].reparentTo(self.node)


		State.register(self, render, camera, keys)


	def iterate(self):
		State.iterate(self)
		self.camera.look()

		for option in self.text.keys():
			self.text[option].setScale(0.1)
		self.text[self.menu.options[self.menu.selected]].setScale(0.12)

		return self.menu.iterate()

	def selectOption(self, opt):
		return self.optState[self.menu.selected]
    def __init__(self):
        self.defaultLogoScale = 1
        self.defaultLogoZ = 0.65
        self.bgm = loader.loadModel(
            "phase_3/models/gui/progress-background.bam")
        self.bgm.find('**/logo').stash()
        self.barShadow = OnscreenImage(image=self.bgm.find("**/bar_shadow"),
                                       parent=hidden)
        self.bgm.find("**/bar_shadow").removeNode()
        self.bg = self.bgm.find('**/bg')
        self.defaultBgTexture = self.bg.findTexture('*')

        self.logoNode, self.logoImg = CIGlobals.getLogoImage(
            hidden, self.defaultLogoScale, (0, 0, self.defaultLogoZ))

        self.bg_img = OnscreenImage(image=self.bg, parent=hidden)
        self.bg_img.setSx(1.35)
        self.bg_img.hide()
        self.progress_bar = DirectWaitBar(value=0,
                                          pos=(0, 0, -0.85),
                                          parent=hidden,
                                          text_pos=(0, 0, 0.2))
        self.progress_bar.setSx(1.064)
        self.progress_bar.setSz(0.38)
        toontipgui = loader.loadModel(
            'phase_3.5/models/gui/stickerbook_gui.bam')
        poster = toontipgui.find('**/questCard')
        self.toontipFrame = DirectFrame(image=poster,
                                        image_scale=(1.4, 1, 1),
                                        parent=hidden,
                                        relief=None,
                                        pos=(0, 0, -0.1),
                                        scale=0.85)
        self.toontipLbl = OnscreenText(text="",
                                       parent=self.toontipFrame,
                                       fg=(89.0 / 255, 95.0 / 255, 98.0 / 255,
                                           1),
                                       font=CIGlobals.getToonFont(),
                                       wordwrap=13,
                                       pos=(-0.59, 0.25),
                                       align=TextNode.ALeft,
                                       scale=0.08)
        self.loading_lbl = DirectLabel(text="",
                                       relief=None,
                                       scale=0.08,
                                       pos=(-1.0725, 0, -0.79),
                                       text_align=TextNode.ALeft,
                                       sortOrder=100,
                                       text_fg=(1, 1, 1, 1),
                                       text_font=CIGlobals.getMinnieLogoFont(),
                                       parent=hidden,
                                       text_shadow=(0, 0, 0, 0))

        # This is useful when the user has chosen to hide aspect2d before the loading screen.
        # However, we want to show the loading screen all the time, so we need to restore the
        # previous state after the loading screen ends.
        self.mustRestoreHiddenAspect2d = False
Esempio n. 22
0
class WaveGUI(NodePath):
    def __init__(self):
        NodePath.__init__(self, 'wave-gui')
        self.reparentTo(base.a2dBottomCenter)
        self.setBin('fixed', 60)
        self.setTransparency(True, 1)
        self.setAlphaScale(0.75, 1)
        self.setZ(0.1)
        self.frame = DirectFrame(image='materials/ui/wave_ui_base.png',
                                 parent=self,
                                 relief=None,
                                 image_scale=(.373, 1, .094))
        self.waveText = OnscreenText(text="Wave 4",
                                     pos=(0, 0.0175, 0),
                                     scale=0.06,
                                     parent=self.frame)
        self.progress = DirectWaitBar(scale=(.324, 1, .3),
                                      relief=None,
                                      barColor=(1, 0.75, 0, 1),
                                      parent=self.frame,
                                      pos=(0, 0, -0.0293))
        self.progress.setBin('fixed', 61)
        self.progress['range'] = 50
        self.progress['value'] = 35
        self.progressText = OnscreenText(text=str(self.progress['value']) +
                                         " / " + str(self.progress['range']),
                                         scale=0.04,
                                         parent=self.frame,
                                         pos=(0, -0.04, 0))
        self.progressText.setBin('fixed', 62)
        self.hide()

    def doHide(self):
        Sequence(
            LerpColorScaleInterval(self,
                                   1.0, (1, 1, 1, 0), (1, 1, 1, 0.75),
                                   override=1), Func(self.hide)).start()

    def doShow(self):
        Sequence(
            Func(self.show),
            LerpColorScaleInterval(self,
                                   1.0, (1, 1, 1, 0.75), (1, 1, 1, 0),
                                   override=1)).start()

    def incProgress(self):
        self.adjustProgress(self.progress['value'] + 1)

    def adjustForWave(self, waveNum, suits):
        self.waveText['text'] = "Wave {0}".format(waveNum)
        self.progress['range'] = suits
        self.adjustProgress(0)

    def adjustProgress(self, progress):
        self.progress['value'] = progress
        self.progressText['text'] = str(self.progress['value']) + " / " + str(
            self.progress['range'])
    def __init__(self, page, widgetname, slrange, slcommand, pos = (0, 0, 0)):
        DirectFrame.__init__(self, parent = page.book, pos = pos)

        self.page = page

        self.text = OnscreenText(text = widgetname + ":", pos = (-0.7, 0, 0), align = TextNode.ALeft, parent = self)
        self.slider = DirectSlider(range=slrange, pageSize=0.1, command=slcommand, scale=0.3,
                                        orientation=DGG.HORIZONTAL, pos=(0.35, 0, 0.025), parent = self)
        self.valText = OnscreenText(text = "", pos = (0.7, -0.005, -0.005), align = TextNode.ALeft, parent = self)
Esempio n. 24
0
 def createMenu(self):
     base.graphicsEngine.renderFrame()
     base.graphicsEngine.renderFrame()
     self.version_lbl = OnscreenText(text='ver-' + game.version, scale=0.06, pos=(-1.32,
                                                                                  -0.97,
                                                                                  -0.97), align=TextNode.ALeft, fg=(0.9,
                                                                                                                    0.9,
                                                                                                                    0.9,
                                                                                                                    7))
class DMenuDisclaimer(DirectObject):
    notify = directNotify.newCategory('DisclaimerScreen')

    def __init__(self):
        DirectObject.__init__(self)
        base.setBackgroundColor(0, 0, 0)
        disclaimerText = "Project Altis is a not-for-profit fanmade parody made under Fair Use. Project Altis is not affiliated with The Walt Disney Company and/or the Disney Interactive Media Group (collectively referred to as \"Disney\") by clicking I agree you hereby agree that you acknowledge this fact."
        self.disclaimer = OnscreenText(text=disclaimerText,
                                       font=ToontownGlobals.getMinnieFont(),
                                       style=3,
                                       wordwrap=30,
                                       scale=.08,
                                       pos=(0, .3, 0))
        gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui.bam')
        yesUp = gui.find('**/tt_t_gui_mat_okUp')
        yesDown = gui.find('**/tt_t_gui_mat_okDown')
        noUp = gui.find('**/tt_t_gui_mat_closeUp')
        noDown = gui.find('**/tt_t_gui_mat_closeDown')

        self.accept = DirectButton(parent=aspect2d,
                                   relief=None,
                                   image=(yesUp, yesDown, yesUp),
                                   image_scale=(0.6, 0.6, 0.6),
                                   image1_scale=(0.7, 0.7, 0.7),
                                   image2_scale=(0.7, 0.7, 0.7),
                                   text=('', 'I Agree', 'I Agree'),
                                   text_pos=(0, -0.175),
                                   text_style=3,
                                   text_scale=0.08,
                                   pos=(.4, 0, -.5),
                                   command=self.accept)

        self.deny = DirectButton(parent=aspect2d,
                                 relief=None,
                                 image=(noUp, noDown, noUp),
                                 image_scale=(0.6, 0.6, 0.6),
                                 image1_scale=(0.7, 0.7, 0.7),
                                 image2_scale=(0.7, 0.7, 0.7),
                                 text=('', 'I Disagree', 'I Disagree'),
                                 text_pos=(0, -0.175),
                                 text_style=3,
                                 text_scale=0.08,
                                 pos=(-.4, 0, -.5),
                                 command=self.deny)

    def accept(self):
        self.disclaimer['text'] = 'Loading...'
        self.accept.destroy()
        self.deny.destroy()
        base.graphicsEngine.renderFrame()
        messenger.send("AgreeToGame")
        base.cr.hasAccepted = True
        self.disclaimer.removeNode()

    def deny(self):
        base.exitFunc()
Esempio n. 26
0
 def __init__(self, index):
     DirectFrame.__init__(self, scale=0.5)
     stickergui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui.bam')
     self['image'] = stickergui.find('**/paper_note')
     self.setPos(self.spots[index])
     self.headingText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.HeadingTextPos, scale=self.HeadingTextScale)
     self.taskInfoText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.TaskInfoTextPos, scale=self.NonHeadingTextScale)
     self.progressText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.ProgressTextPos, scale=self.ProgressTextScale)
     self.rewardText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.RewardTextPos, scale=self.RewardTextScale)
     self.hide()
Esempio n. 27
0
class Pause(State):
	def __init__(self):
		State.__init__(self)
		
		# Options in the Pause Menu
		options = ['Continue', 'Main Menu', 'Exit']
		# Here we have the States in the FSM represented by the options
		self.optState = ['InGame', 'Title', 'Exit']
		
		self.menu = Menu()
		self.menu.addOptions(options)
		
	def register(self, render, camera, keys):
		State.register(self, render, camera, keys)
		
		cm = CardMaker('CardMaker-Pause')
		cm.setFrame(0.5, -0.5, 0.5, -0.5)
		cm.setColor(0,0,0, 0.1)
		
		self.bg = self.node.attachNewNode(cm.generate())
		self.bg.setPos(0, 0, 0)
		
		menuActions = {'up': (Menu.previousOpt, self.menu),
						'down': (Menu.nextOpt, self.menu), 
						'action': (self.selectOption, None),
						'cancel': (self.selectOption, 0) }
		self.menu.registerKeys(keys, menuActions)
	
		self.title = OnscreenText(text="Game Paused", mayChange = True , style=1, fg=(1,1,1,1), pos=(0,0.35), scale = .1)
		self.text = {}
		
		id=0
		for opt in self.menu.options:
			self.text[opt] = OnscreenText(text=opt, mayChange = True , style=1, fg=(1,1,1,1), pos=(0,0.1 - 0.1*id), scale = .06)
			id+=1
		
		self.title.reparentTo(self.node)
		for opt in self.text.keys():
			self.text[opt].reparentTo(self.node)
		
	def iterate(self):
		State.iterate(self)
		self.camera.look()
		
		for option in self.text.keys():
			self.text[option].setScale(0.06)
		self.text[self.menu.options[self.menu.selected]].setScale(0.08)
		
		return self.menu.iterate()
		
	def selectOption(self, param):
		if param==None:
			return self.optState[self.menu.selected]
		else:
			return self.optState[param]
 def enterAnnounceGameOver(self):
     whistle = base.loadSfx("phase_4/audio/sfx/AA_sound_whistle.ogg")
     base.playSfx(whistle)
     self.gameOverLbl = OnscreenText(text = 'Game Over!', fg = (1, 1, 1, 1), font = CIGlobals.getMinnieFont(), scale = 0.1)
     self.gameOverScaleIval = LerpScaleInterval(
         self.gameOverLbl,
         duration = 1.0,
         scale = 0.1,
         startScale = 0.0,
         blendType = 'easeOut'
     )
    def __init__(self, book, parentFSM):
        self.book = book
        self.parentFSM = parentFSM
        StateData.__init__(self, 'namePageDone')
        self.fsm = ClassicFSM('NamePage', [
            State('off', self.enterOff, self.exitOff),
            State('basePage', self.enterBasePage, self.exitBasePage)
        ], 'off', 'off')
        self.fsm.enterInitialState()
        self.parentFSM.getStateNamed('namePage').addChild(self.fsm)
        self.nameServ = base.cr.nameServicesManager
        self.baseRequestIndex = 0
        self.requestsPerCluster = 5

        # GUI elements
        self.requestsContainer = {}
        self.loadingLabel = None
        self.selectedName = None
        self.nameButtons = []
        self.avId2NameData = {}

        geom = CIGlobals.getDefaultBtnGeom()
        self.acceptBtn = DirectButton(
            geom=geom,
            text_scale=0.04,
            relief=None,
            scale=0.5,
            text="Accept",
            pos=(0.5, posY, 0),
            text_pos=(0, -0.01),
            command=self.acceptName,
        )
        self.acceptBtn.hide()
        self.declineBtn = DirectButton(
            geom=geom,
            text_scale=0.04,
            relief=None,
            scale=0.5,
            text="Decline",
            pos=(0.75, posY, 0),
            text_pos=(0, -0.01),
            command=self.declineName,
        )
        self.declineBtn.hide()
        self.avIdLbl = OnscreenText(text="",
                                    scale=0.08,
                                    pos=(0.3, 0, 0.5),
                                    align=TextNode.ACenter)
        self.avIdLbl.hide()
        self.accIdLbl = OnscreenText(text="",
                                     scale=0.08,
                                     pos=(0.3, 0, 0.3),
                                     align=TextNode.ACenter)
        self.accIdLbl.hide()
Esempio n. 30
0
 def __init__(self):
     self.defaultLogoScale = 1
     self.defaultLogoZ = 0.65
     self.bgm = loader.loadModel(
         "phase_3/models/gui/progress-background.bam")
     self.bgm.find('**/logo').stash()
     self.bg = self.bgm.find('**/bg')
     self.logo = loader.loadTexture("phase_3/maps/CogInvasion_Logo.png")
     self.logoNode = hidden.attachNewNode('logoNode')
     self.logoNode.setScale(self.defaultLogoScale)
     self.logoNode.setPos(0, self.defaultLogoZ, 0)
     self.logoImg = OnscreenImage(image=self.logo,
                                  scale=(0.685, 0, 0.325),
                                  parent=self.logoNode)
     self.logoImg.setTransparency(True)
     self.bg_img = OnscreenImage(image=self.bg, parent=hidden)
     self.bg_img.setSx(1.35)
     self.bg_img.hide()
     self.progress_bar = DirectWaitBar(value=0,
                                       pos=(0, 0, -0.85),
                                       parent=hidden,
                                       text_pos=(0, 0, 0.2))
     self.progress_bar.setSx(1.064)
     self.progress_bar.setSz(0.38)
     toontipgui = loader.loadModel(
         'phase_3.5/models/gui/stickerbook_gui.bam')
     poster = toontipgui.find('**/questCard')
     self.toontipFrame = DirectFrame(image=poster,
                                     image_scale=(1.4, 1, 1),
                                     parent=hidden,
                                     relief=None,
                                     pos=(0, 0, -0.1),
                                     scale=0.85)
     self.toontipLbl = OnscreenText(text="",
                                    parent=self.toontipFrame,
                                    fg=(89.0 / 255, 95.0 / 255, 98.0 / 255,
                                        1),
                                    font=CIGlobals.getToonFont(),
                                    wordwrap=14.5,
                                    pos=(-0.59, 0.25),
                                    align=TextNode.ALeft,
                                    scale=0.08)
     self.loading_lbl = DirectLabel(text="",
                                    relief=None,
                                    scale=0.08,
                                    pos=(-1.0725, 0, -0.79),
                                    text_align=TextNode.ALeft,
                                    sortOrder=100,
                                    text_fg=(89.0 / 255, 95.0 / 255,
                                             98.0 / 255, 1.0),
                                    text_font=CIGlobals.getMinnieFont(),
                                    parent=hidden,
                                    text_shadow=(0, 0, 0, 1))
Esempio n. 31
0
 def load(self):
     font = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     self.finalScoreContainer = DirectFrame()
     self.finalScoreBg = OnscreenImage(image=box, color=(1, 1, 0.75, 1), scale=(1.9, 1.4, 1.4), parent=self.finalScoreContainer)
     self.finalScoreTitle = OnscreenText(text='Waiting for final scores...', pos=(0, 0.5, 0), font=font, scale=0.12, parent=self.finalScoreContainer)
     self.finalScoreNameLbl = OnscreenText(text='', scale=0.095, pos=(-0.85, 0.3, 0), font=font, align=TextNode.ALeft, parent=self.finalScoreContainer)
     self.finalScorePointLbl = OnscreenText(text='', scale=0.095, pos=(0.85, 0.3, 0), font=font, align=TextNode.ARight, parent=self.finalScoreContainer)
     self.finalScoreContainer.hide()
     self.finalScoreContainer.setBin('gui-popup', 60)
     del font
     del box
 def makeActionPanel(self):
     self.actionFrame = DirectFrame(image=DGG.getDefaultDialogGeom(),
                                    image_scale=(0.7, 0.5, 0.45),
                                    image_color=(1, 1, 0.75, 1),
                                    relief=None)
     self.actionFrame.reparentTo(base.a2dTopRight)
     self.actionFrame.setPos(-0.815, 0, -0.31)
     self.actionFrameText = OnscreenText(text="",
                                         parent=self.actionFrame,
                                         scale=0.05,
                                         wordwrap=12,
                                         pos=(0, 0.1))
 def __init__(self, cr):
     try:
         self.DistributedMinigame_initialized
         return
     except:
         self.DistributedMinigame_initialized = 1
     DistributedObject.DistributedObject.__init__(self, cr)
     Timer.Timer.__init__(self)
     self.headPanels = HeadPanels()
     self.finalScoreUI = FinalScoreGUI()
     self.fsm = ClassicFSM('DistributedMinigame', [
         State('start', self.enterStart, self.exitStart, ['waitForOthers']),
         State('waitForOthers', self.enterWaitForOthers,
               self.exitWaitForOthers, ['play']),
         State('play', self.enterPlay, self.exitPlay, ['gameOver']),
         State('gameOver', self.enterGameOver, self.exitGameOver, ['off']),
         State('off', self.enterOff, self.exitOff)
     ], 'off', 'off')
     self.fsm.enterInitialState()
     self.cr = cr
     self.localAv = base.localAvatar
     self.localAvId = self.localAv.doId
     self.musicPath = "phase_4/audio/bgm/trolley_song.ogg"
     self.winSfx = base.loadSfx("phase_4/audio/sfx/MG_win.ogg")
     self.loseSfx = base.loadSfx("phase_4/audio/sfx/MG_lose.ogg")
     self.prizeHigh = base.loadSfx("phase_6/audio/sfx/KART_Applause_1.ogg")
     self.prizeLow = base.loadSfx("phase_6/audio/sfx/KART_Applause_4.ogg")
     self.music = None
     self.description = ""
     self.descDialog = None
     self.winnerPrize = 0
     self.loserPrize = 0
     self.round = 0
     self.numPlayers = 0
     self.winnerMsg = "Winner!\nYou have earned: %s Jellybeans"
     self.loserMsg = "Loser!\nYou have earned: %s Jellybeans"
     self.allWinnerMsgs = [
         "Nice try!\nYou have earned: %s", "Good job!\nYou have earned: %s",
         "Way to go!\nYou have earned: %s", "Awesome!\nYou have earned: %s"
     ]
     self.timer = None
     self.timeLbl = None
     self.alertText = None
     self.alertPulse = None
     self.popupSound = None
     self.gameOverLbl = OnscreenText(text="TIME'S\nUP!",
                                     scale=0.25,
                                     font=CIGlobals.getMickeyFont(),
                                     fg=(1, 0, 0, 1))
     self.gameOverLbl.setBin('gui-popup', 60)
     self.gameOverLbl.hide()
     return
Esempio n. 34
0
 def _update_location_text(self):
     pos = base.camera.getPos()
     hpr = base.camera.getHpr()
     if 'title' not in dir(self):
         self.title = OnscreenText(text="".format(tuple(pos), tuple(hpr)),
                                   style=1,
                                   fg=(1, 1, 1, 1),
                                   pos=(-0.1, 0.1),
                                   scale=.05,
                                   parent=base.a2dBottomRight,
                                   align=TextNode.ARight)
     self.title.setText(
         "Position: ({:.2f}, {:.2f}, {:.2f})\n Rotation: ({:.2f}, {:.2f}, {:.2f})"
         .format(pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]))
Esempio n. 35
0
    def generateMenu(self):

        for i in self.info_texts:
            item = OnscreenText(
                text=i,
                style=1,
                fg=(1, 1, 1, 1),
                font=self.font,
                pos=(0, ((len(self.info_texts) + len(self.item_texts) -
                          self.info_texts.index(i)) * 0.1) + self.offset),
                align=TextNode.ACenter,
                drawOrder=1,
                parent=render2d,
                scale=0.1 * self.scale_factor)
            item.hide()
            self.info_table.append(item)

        for j in self.item_texts:
            item = OnscreenText(
                text=j,
                style=1,
                fg=(1, 1, 1, 1),
                font=self.font,
                pos=(0, (
                    (len(self.item_texts) - self.item_texts.index(j)) * 0.1) +
                     self.offset),
                align=TextNode.ACenter,
                drawOrder=1,
                parent=render2d,
                scale=0.06 * self.scale_factor)
            item.hide()
            self.menu_items.append(item)
        self.selectionDown()
 def __init__(self, index):
     DirectFrame.__init__(self, scale=0.5)
     stickergui = loader.loadModel(
         'phase_3.5/models/gui/stickerbook_gui.bam')
     self['image'] = stickergui.find('**/paper_note')
     self.setPos(self.spots[index])
     self.headingText = OnscreenText(parent=self,
                                     text='',
                                     font=CIGlobals.getToonFont(),
                                     pos=self.HeadingTextPos,
                                     scale=self.HeadingTextScale)
     self.taskInfoText = OnscreenText(parent=self,
                                      text='',
                                      font=CIGlobals.getToonFont(),
                                      pos=self.TaskInfoTextPos,
                                      scale=self.NonHeadingTextScale)
     self.progressText = OnscreenText(parent=self,
                                      text='',
                                      font=CIGlobals.getToonFont(),
                                      pos=self.ProgressTextPos,
                                      scale=self.ProgressTextScale)
     self.rewardText = OnscreenText(parent=self,
                                    text='',
                                    font=CIGlobals.getToonFont(),
                                    pos=self.RewardTextPos,
                                    scale=self.RewardTextScale)
     self.hide()
 def enterShowWinner(self, winnerId):
     self.firstPerson.reallyEnd()
     avatar = self.getRemoteAvatar(winnerId)
     avatar.avatar.loop('neutral')
     avatar.detachCamera()
     self.thisPlayerWinsLbl = OnscreenText(text = "{0} Wins!".format(avatar.avatar.getName()), fg = (1, 1, 1, 1),
         font = CIGlobals.getMinnieFont(), pos = (0, 0.8), scale = 0.1)
     if winnerId == base.localAvatar.doId:
         self.thisPlayerWinsLbl.setText("You Win!")
     base.camera.reparentTo(avatar.avatar)
     base.camera.setPos(0, 7, 3)
     base.camera.setH(180)
     base.transitions.fadeIn()
     Sequence(Wait(0.5), Func(avatar.doWinDance)).start()
    def __init__(self):
        DirectObject.__init__(self)

        base.setBackgroundColor(0, 0, 0)

        self.textParent = base.credits2d.attachNewNode('textParent')
        self.textParent.setBin("gui-popup", 61)
        self.textParent.setDepthWrite(False)
        self.textParent.setTransparency(True)

        self.logoImage = OnscreenImage('phase_3/maps/CogInvasion_Logo.png',
                                       parent=self.textParent,
                                       scale=(0.685, 1.0, 0.325))
        self.logoImage.setTransparency(1)

        text = self.buildCreditsText()
        self.creditsText = OnscreenText(parent=self.textParent,
                                        font=CIGlobals.getToonFont(),
                                        fg=(1, 1, 1, 1),
                                        scale=0.065,
                                        pos=(0, -0.5, 0),
                                        text=text,
                                        shadow=(0, 0, 0, 1))

        self.posInterval = None

        self.backgroundImg = OnscreenImage('phase_3/maps/credits_fade.png',
                                           parent=render2d)
        self.backgroundImg.setTransparency(True)
        self.backgroundImg.setColor(0, 0, 0, 1.0)
        self.backgroundImg.setBin("gui-popup", 62)
        self.backgroundImg.setDepthWrite(False)

        self.exitText = OnscreenText(parent=base.credits2d,
                                     font=CIGlobals.getToonFont(),
                                     fg=(1.0, 0, 0, 1.0),
                                     shadow=(0, 0, 0, 1),
                                     scale=0.085,
                                     pos=(0, -0.96, 0),
                                     text='Press any key to exit')
        self.exitText.hide()
        self.exitText.setBin("gui-popup", 63)
        self.exitText.setDepthWrite(False)
        self.exitText.setTransparency(True)

        self.creditsAudioMgr = AudioManager.createAudioManager()
        self.creditsAudioMgr.setVolume(0.65)
        self.bgm = self.creditsAudioMgr.getSound(
            'phase_4/audio/bgm/new_years_fireworks_music.ogg')
Esempio n. 39
0
	def register(self, render, camera, keys):
		State.register(self, render, camera, keys)

		cm = CardMaker('CardMaker-Title')
		tex = loadTexture('titlescreen.png')

		cm.setFrame(-1, 1, -1, 1)

		self.bg = self.node.attachNewNode(cm.generate())
		self.bg.setPos(0, 0, 0)
		self.bg.setTexture(tex)

		menuActions = {'up': (Menu.previousOpt, self.menu),
						'down': (Menu.nextOpt, self.menu),
						'action': (self.selectOption, None)
						}

		self.menu.registerKeys(keys, menuActions)

		self.title = OnscreenText(text="", mayChange = True , style=2,
							 fg=(1,1,1,1), pos=(0, 0.75), scale = 0.2) # is this used??
		self.text = {}

		id=0
		for opt in self.menu.options:
			self.text[opt] = OnscreenText(text=opt, mayChange = True , style=2, fg=(1,1,1,1), pos=(0, -0.3 - 0.15*id), scale = .1)
			id+=1

		self.title.reparentTo(self.node)
		for opt in self.text.keys():
			self.text[opt].reparentTo(self.node)


		State.register(self, render, camera, keys)
Esempio n. 40
0
	def register(self, render, camera, keys):
		State.register(self, render, camera, keys)
		
		cm = CardMaker('CardMaker-Pause')
		cm.setFrame(0.5, -0.5, 0.5, -0.5)
		cm.setColor(0,0,0, 0.1)
		
		self.bg = self.node.attachNewNode(cm.generate())
		self.bg.setPos(0, 0, 0)
		
		menuActions = {'up': (Menu.previousOpt, self.menu),
						'down': (Menu.nextOpt, self.menu), 
						'action': (self.selectOption, None),
						'cancel': (self.selectOption, 0) }
		self.menu.registerKeys(keys, menuActions)
	
		self.title = OnscreenText(text="Game Paused", mayChange = True , style=1, fg=(1,1,1,1), pos=(0,0.35), scale = .1)
		self.text = {}
		
		id=0
		for opt in self.menu.options:
			self.text[opt] = OnscreenText(text=opt, mayChange = True , style=1, fg=(1,1,1,1), pos=(0,0.1 - 0.1*id), scale = .06)
			id+=1
		
		self.title.reparentTo(self.node)
		for opt in self.text.keys():
			self.text[opt].reparentTo(self.node)
Esempio n. 41
0
 def __init__(self):
     DirectFrame.__init__(self, parent=base.a2dTopRight, pos=(-0.25, 0.0, -0.46))
     gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
     self['image'] = gui.find('**/FriendsBox_Open')
     self.headingText = OnscreenText(text='', parent=self, pos=(0.01, 0.2), fg=(0.1, 0.1, 0.4, 1.0), scale=0.04)
     self.frameForNames = DirectScrolledList(frameSize=(0.0, 0.35, 0, 0.35), incButton_geom=(gui.find('**/FndsLst_ScrollUp'),
      gui.find('**/FndsLst_ScrollDN'),
      gui.find('**/FndsLst_ScrollUp_Rllvr'),
      gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_hpr=(0, 0, 180), incButton_pos=(0.17, 0, -0.04), decButton_geom=(gui.find('**/FndsLst_ScrollUp'),
      gui.find('**/FndsLst_ScrollDN'),
      gui.find('**/FndsLst_ScrollUp_Rllvr'),
      gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_pos=(0.17, 0, 0.395), pos=(-0.1625, 0.0, -0.27), parent=self, numItemsVisible=9, forceHeight=0.04, itemFrame_frameSize=(-0.15, 0.15, 0, -0.35), itemFrame_pos=(0, 0, 0.3275), itemFrame_relief=None, relief=None)
     self.fwdBtn = DirectButton(geom=(gui.find('**/Horiz_Arrow_UP'),
      gui.find('**/Horiz_Arrow_DN'),
      gui.find('**/Horiz_Arrow_Rllvr'),
      gui.find('**/Horiz_Arrow_UP')), relief=None, parent=self, pos=(0.17, 0.0, -0.38), command=self.doState)
     self.backBtn = DirectButton(geom=(gui.find('**/Horiz_Arrow_UP'),
      gui.find('**/Horiz_Arrow_DN'),
      gui.find('**/Horiz_Arrow_Rllvr'),
      gui.find('**/Horiz_Arrow_UP')), relief=None, parent=self, pos=(-0.15, 0.0, -0.38), hpr=(180, 0, 0), command=self.doState)
     self.closeBtn = DirectButton(geom=CIGlobals.getCancelBtnGeom(), relief=None, parent=self, command=self.exitClicked)
     self.closeBtn.setPos(0.015, 0.0, -0.375)
     gui.removeNode()
     del gui
     self.hide()
     self.friends = {}
     self.onlineFriends = {}
     self.fsm = ClassicFSM.ClassicFSM('FriendsList', [State.State('off', self.enterOff, self.exitOff), State.State('onlineFriendsList', self.enterOnlineFriendsList, self.exitOnlineFriendsList), State.State('allFriendsList', self.enterAllFriendsList, self.exitAllFriendsList)], 'off', 'off')
     self.fsm.enterInitialState()
     self.accept('gotFriendsList', self.handleFriendsList)
     return
Esempio n. 42
0
 def enterPanel(self):
     self.nameText = OnscreenText(text=self.avatarInfo[1], parent=self, pos=(0, 0.2), scale=0.035, wordwrap=8)
     self.nameText.setBin('gui-popup', 60)
     dna = ToonDNA.ToonDNA()
     dna.setDNAStrand(self.avatarInfo[2])
     self.head = ToonHead.ToonHead(base.cr)
     self.head.generateHead(dna.gender, dna.animal, dna.head, 1)
     self.head.setHeadColor(dna.headcolor)
     self.head.reparentTo(self)
     self.head.setDepthWrite(1)
     self.head.setDepthTest(1)
     self.head.setH(180)
     self.head.setScale(self.animal2HeadData[dna.animal][0])
     self.head.setZ(self.animal2HeadData[dna.animal][1])
     self.laffMeter = LaffOMeter()
     r, g, b, _ = dna.headcolor
     self.laffMeter.generate(r, g, b, dna.animal, self.avatarInfo[3], self.avatarInfo[4])
     self.laffMeter.reparentTo(self)
     self.laffMeter.setBin('gui-popup', 60)
     self.laffMeter.setScale(0.045)
     self.laffMeter.setPos(0, 0, -0.1)
     self.friendButton = DirectButton(geom=CIGlobals.getDefaultBtnGeom(), text='Add Friend', scale=0.58, relief=None, text_scale=0.058, geom_scale=(1.25, 0, 0.9), text_pos=(0, -0.0125), parent=self, pos=(0, 0, -0.12), command=self.doAction, extraArgs=['waitOnAvatarFriendListResponse'])
     self.friendButton.setPos(0, 0.0, -0.225)
     self.maybeUpdateFriendButton()
     self.teleportButton = DirectButton(geom=CIGlobals.getDefaultBtnGeom(), text='Teleport', scale=0.58, relief=None, text_scale=0.058, geom_scale=(1.25, 0, 0.9), text_pos=(0, -0.0125), parent=self, pos=(0, 0, -0.12), command=self.doAction, extraArgs=['waitOnAvatarTeleportResponse'])
     self.teleportButton.setPos(0, 0, -0.275)
     self.exitButton = DirectButton(geom=CIGlobals.getCancelBtnGeom(), parent=self, relief=None, scale=0.6, pos=(-0.127, 0.0, -0.3425), command=self.exitClicked)
     return
Esempio n. 43
0
    def load(self):
        base.cr.renderFrame()
        base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4.0 / 3.0))
        self.__setupStageToon()
        self.world = loader.loadModel('phase_9/models/cogHQ/SellbotHQExterior.bam')
        self.world.reparentTo(base.render)
        self.world.setPos(0, 227.09, -25.36)
        self.sky = loader.loadModel('phase_9/models/cogHQ/cog_sky.bam')
        self.sky.setScale(1)
        self.sky.reparentTo(base.render)
        self.sky.find('**/InnerGroup').removeNode()
        self.fog = Fog('charSelectFog')
        self.fog.setColor(0.2, 0.2, 0.2)
        self.fog.setExpDensity(0.003)
        base.render.setFog(self.fog)
        self.title = DirectLabel(text=self.TITLE, text_font=CIGlobals.getMickeyFont(), text_fg=(1, 0.9, 0.1, 1), relief=None, text_scale=0.13, pos=(0, 0, 0.82))
        self.charNameLabel = OnscreenText(text='', font=CIGlobals.getMickeyFont(), pos=(-0.25, 0.5, 0), fg=(1, 0.9, 0.1, 1.0))
        self.charNameLabel.hide()
        self.playOrCreateButton = DirectButton(text='', pos=(0.8125, 0, -0.735), command=self.__action, geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01))
        self.playOrCreateButton.hide()
        self.deleteButton = DirectButton(text='Delete', pos=(0.8125, 0, -0.835), command=self.__action, extraArgs=['delete'], geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01))
        self.deleteButton.hide()
        self.quitButton = DirectButton(text='Quit', pos=(-1.1, 0, -0.925), command=self.__action, extraArgs=['quit'], text_scale=0.06, geom=CIGlobals.getDefaultBtnGeom(), relief=None, text_pos=(0, -0.01))
        textRolloverColor = Vec4(1, 1, 0, 1)
        textDownColor = Vec4(0.5, 0.9, 1, 1)
        textDisabledColor = Vec4(0.4, 0.8, 0.4, 1)
        for slot in range(6):
            if self.avChooser.hasToonInSlot(slot):
                choice = self.avChooser.getAvChoiceBySlot(slot)
                text = choice.name
            else:
                text = self.NO_TOON
            btn = DirectButton(relief=None, text=text, text_scale=0.06, text_align=TextNode.ALeft, text1_bg=textDownColor, text2_bg=textRolloverColor, text3_fg=textDisabledColor, textMayChange=0, command=self.__handleCharButton, extraArgs=[slot], text_pos=(0, 0, 0.0))
            btn.setPythonTag('slot', slot)
            self.charButtons.append(btn)
            btn['state'] = DGG.NORMAL

        gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
        listXorigin = -0.02
        listFrameSizeX = 0.625
        listZorigin = -0.96
        listFrameSizeZ = 1.04
        arrowButtonScale = 1.3
        itemFrameXorigin = -0.237
        itemFrameZorigin = 0.365
        buttonXstart = itemFrameXorigin + 0.293
        self.charList = DirectScrolledList(relief=None, pos=(0.75, 0, 0.08), incButton_image=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_scale=(arrowButtonScale, arrowButtonScale, -arrowButtonScale), incButton_pos=(buttonXstart, 0, itemFrameZorigin - 0.999), incButton_image3_color=Vec4(1, 1, 1, 0.2), decButton_image=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_scale=(arrowButtonScale, arrowButtonScale, arrowButtonScale), decButton_pos=(buttonXstart, 0, itemFrameZorigin + 0.125), decButton_image3_color=Vec4(1, 1, 1, 0.2), itemFrame_pos=(itemFrameXorigin, 0, itemFrameZorigin), itemFrame_scale=1.0, itemFrame_relief=DGG.SUNKEN, itemFrame_frameSize=(listXorigin,
         listXorigin + listFrameSizeX,
         listZorigin,
         listZorigin + listFrameSizeZ), itemFrame_frameColor=(0.85, 0.95, 1, 1), itemFrame_borderWidth=(0.01, 0.01), numItemsVisible=15, forceHeight=0.075, items=self.charButtons)
        base.camera.setPos(75.12, 63.22, -23)
        base.camera.setHpr(26.57, 9.62, 0)
        return
    def __init__(self, mesh, pm_filebuf):

        scene_members = getSceneMembers(mesh)
        
        base = ShowBase()
        
        if len(scene_members) > 1:
            print('There is more than one geometry in the scene, so I think this is not a progressive base mesh.')
            sys.exit(1)
        
        rotateNode = GeomNode("rotater")
        rotatePath = render.attachNewNode(rotateNode)
        matrix = numpy.identity(4)
        if mesh.assetInfo.upaxis == collada.asset.UP_AXIS.X_UP:
            r = collada.scene.RotateTransform(0,1,0,90)
            matrix = r.matrix
        elif mesh.assetInfo.upaxis == collada.asset.UP_AXIS.Y_UP:
            r = collada.scene.RotateTransform(1,0,0,90)
            matrix = r.matrix
        rotatePath.setMat(Mat4(*matrix.T.flatten().tolist()))
        
        geom, renderstate, mat4 = scene_members[0]
        node = GeomNode("primitive")
        node.addGeom(geom)
        if renderstate is not None:
            node.setGeomState(0, renderstate)
        self.geomPath = rotatePath.attachNewNode(node)
        self.geomPath.setMat(mat4)
            
        wrappedNode = ensureCameraAt(self.geomPath, base.camera)
        base.disableMouse()
        attachLights(render)
        render.setShaderAuto()
        render.setTransparency(TransparencyAttrib.MDual, 1)
    
        base.render.analyze()
        KeyboardMovement()
        MouseDrag(wrappedNode)
        MouseScaleZoom(wrappedNode)
        ButtonUtils(wrappedNode)
        MouseCamera()
        
        print('Loading pm into memory... ', end=' ')
        sys.stdout.flush()
        self.pm_refinements = readPDAE(pm_filebuf)
        self.pm_index = 0
        print('Done')

        self.slider = DirectSlider(range=(0,len(self.pm_refinements)),
                                   value=0, pageSize=len(self.pm_refinements)/20,
                                   command=self.sliderMoved, pos=(0, 0, -.9), scale=1)
        for key, val in uiArgs.items():
            self.slider.thumb[key] = val
        
        self.triText = OnscreenText(text="", pos=(-1,0.85), scale = 0.15,
                                    fg=(1, 0.5, 0.5, 1), align=TextNode.ALeft, mayChange=1)
        
        base.run()
Esempio n. 45
0
 def enterCountdown(self):
     base.localAvatar.chatInput.disableKeyboardShortcuts()
     base.localAvatar.disableChatInput()
     base.setBackgroundColor(CIGlobals.DefaultBackgroundColor)
     base.render.show()
     self.playMinigameMusic()
     self.countdownLbl = OnscreenText(text='', fg=(1, 1, 1, 1), font=CIGlobals.getMinnieFont(), scale=0.1)
     self.countdownTrack = Sequence(Func(self.countdownLbl.setText, '5'), Wait(1.0), Func(self.countdownLbl.setText, '4'), Wait(1.0), Func(self.countdownLbl.setText, '3'), Wait(1.0), Func(self.countdownLbl.setText, '2'), Wait(1.0), Func(self.countdownLbl.setText, '1'), Wait(1.0), Func(self.fsm.request, 'play'))
     self.countdownTrack.start()
     self.firstPerson.start()
     self.firstPerson.disableMouse()
Esempio n. 46
0
    def load(self):
        self.unload()
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        self.loadingText = OnscreenText(text='Loading ' + self.getNameOfCurrentLevel() + '...', font=CIGlobals.getMinnieFont(), fg=(1, 1, 1, 1))
        self.loadingText.setBin('gui-popup', 0)
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        if self.levelName == 'momada':
            self.__momadaLoad()
        elif self.levelName in ('cbhq',):
            modelPath = self.LevelData[self.levelName]['model']
            self.levelGeom = loader.loadModel(modelPath)
            self.levelGeom.flattenMedium()
            self.levelGeom.reparentTo(render)
            if self.LevelData[self.levelName]['sky'] != None:
                self.skyModel = loader.loadModel(self.SkyData['cog'] + '/cog_sky.bam')
                self.skyUtil = SkyUtil()
                self.skyUtil.startSky(self.skyModel)
                self.skyModel.reparentTo(render)
        else:
            dnaFiles = self.LevelData[self.levelName]['dna']
            skyType = self.LevelData[self.levelName]['sky']
            skyPhase = self.SkyData[skyType]
            loader.loadDNAFile(self.dnaStore, 'phase_4/dna/storage.dna')
            for index in range(len(dnaFiles)):
                if index == len(dnaFiles) - 1:
                    node = loader.loadDNAFile(self.dnaStore, dnaFiles[index])
                    if node.getNumParents() == 1:
                        self.levelGeom = NodePath(node.getParent(0))
                        self.levelGeom.reparentTo(hidden)
                    else:
                        self.levelGeom = hidden.attachNewNode(node)
                    self.levelGeom.flattenMedium()
                    gsg = base.win.getGsg()
                    if gsg:
                        self.levelGeom.prepareScene(gsg)
                    self.levelGeom.reparentTo(render)
                else:
                    loader.loadDNAFile(self.dnaStore, dnaFiles[index])

            self.skyModel = loader.loadModel(skyPhase + '/' + skyType + '_sky.bam')
            self.skyUtil = SkyUtil()
            self.skyUtil.startSky(self.skyModel)
            self.skyModel.reparentTo(camera)
            ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
            self.skyModel.node().setEffect(ce)
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        return
Esempio n. 47
0
 def enterShowWinner(self, winnerId):
     self.firstPerson.reallyEnd()
     avatar = self.getRemoteAvatar(winnerId)
     avatar.avatar.loop('neutral')
     avatar.detachCamera()
     self.thisPlayerWinsLbl = OnscreenText(text='{0} Wins!'.format(avatar.avatar.getName()), fg=(1, 1, 1, 1), font=CIGlobals.getMinnieFont(), pos=(0, 0.8), scale=0.1)
     if winnerId == base.localAvatar.doId:
         self.thisPlayerWinsLbl.setText('You Win!')
     base.camera.reparentTo(avatar.avatar)
     base.camera.setPos(0, 7, 3)
     base.camera.setH(180)
     base.transitions.fadeIn()
     Sequence(Wait(0.5), Func(avatar.doWinDance)).start()
    def __init__(self):
        DirectObject.__init__(self)
        FSM.__init__(self, self.__class__.__name__)

        self.label = OnscreenText(
            '', parent=hidden, font=ToontownGlobals.getMinnieFont(),
            fg=Vec4(1, 1, 1, 1), scale=0.06, align=TextNode.ACenter,
            wordwrap=35)
        self.label.setColorScale(Vec4(0, 0, 0, 0))

        gui = loader.loadModel('phase_3/models/gui/tt_m_gui_mat_mainGui.bam')
        shuffleUp = gui.find('**/tt_t_gui_mat_shuffleUp')
        shuffleDown = gui.find('**/tt_t_gui_mat_shuffleDown')
        okUp = gui.find('**/tt_t_gui_mat_okUp')
        okDown = gui.find('**/tt_t_gui_mat_okDown')
        closeUp = gui.find('**/tt_t_gui_mat_closeUp')
        closeDown = gui.find('**/tt_t_gui_mat_closeDown')
        gui.removeNode()
        del gui

        self.exitButton = DirectButton(
            parent=hidden, relief=None,
            image=(shuffleUp, shuffleDown, shuffleUp),
            image_scale=(0.6, 0.6, 0.6), image1_scale=(0.63, 0.6, 0.6),
            image2_scale=(0.63, 0.6, 0.6),
            text=(TTLocalizer.IntroExitButton, TTLocalizer.IntroExitButton,
                  TTLocalizer.IntroExitButton, ''),
            text_font=ToontownGlobals.getInterfaceFont(),
            text_scale=TTLocalizer.SBshuffleBtn, text_pos=(0, -0.02),
            text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1))

        self.yesButton = DirectButton(
            parent=hidden, relief=None, image=(okUp, okDown, okUp, okDown),
            image_scale=(0.6, 0.6, 0.6), image1_scale=(0.7, 0.7, 0.7),
            image2_scale=(0.7, 0.7, 0.7),
            text=('', TTLocalizer.IntroYesButton, TTLocalizer.IntroYesButton),
            text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08,
            text_align=TextNode.ACenter, text_pos=(0, -0.175),
            text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1))
        self.noButton = DirectButton(
            parent=hidden, relief=None,
            image=(closeUp, closeDown, closeUp, closeDown),
            image_scale=(0.6, 0.6, 0.6), image1_scale=(0.7, 0.7, 0.7),
            image2_scale=(0.7, 0.7, 0.7),
            text=('', TTLocalizer.IntroNoButton, TTLocalizer.IntroNoButton),
            text_font=ToontownGlobals.getInterfaceFont(), text_scale=0.08,
            text_align=TextNode.ACenter, text_pos=(0, -0.175),
            text_fg=(1, 1, 1, 1), text_shadow=(0, 0, 0, 1))

        self.disclaimerTrack = None
        self.presentsTrack = None
Esempio n. 49
0
	def open(self):
		[Spacer(parent=self) for _ in range(2)]
		self.right_frame=Frame( layout=layout.VLayout,
								parent=self,
								pref_w=180)
		Spacer(parent=self.right_frame)
		self.start_btn=Button(	pref_h=70,
								p3dobject=DirectButton(geom=(self.resources['start_btn']),
														borderWidth=(0,0),
														command=messenger.send, extraArgs=[Game_setup.sgn_start]),
								parent=self.right_frame)
		[Spacer(parent=self.right_frame) for _ in range(5)]
		Spacer(parent=self)

		self.message=OnscreenText(text='game setup',style=1,fg=(1,1,1,1),pos=(.87,-.95),scale=.07)
Esempio n. 50
0
 def enterFrozen(self):
     self.loadIceCube()
     base.cr.playGame.getPlace().fsm.request('stop', [0])
     base.localAvatar.stop()
     base.playSfx(choice(self.frozenSfxArray))
     self.iccsIval = LerpColorScaleInterval(self.iceCube, duration=0.5, colorScale=VBase4(0.76, 0.76, 1.0, 1.0), startColorScale=self.iceCube.getColorScale(), blendType='easeInOut')
     self.iccsIval.start()
     props = WindowProperties()
     props.setCursorHidden(True)
     base.win.requestProperties(props)
     self.frame = DirectFrame(pos=(0, 0, 0.7))
     self.powerBar = DirectWaitBar(frameColor=(1, 1, 1, 1), range=100, value=0, scale=(0.4, 0.5, 0.25), parent=self.frame, barColor=(0.55, 0.7, 1.0, 1.0))
     self.label = OnscreenText(text='SHAKE MOUSE', shadow=(0, 0, 0, 1), fg=(0.55, 0.7, 1.0, 1.0), pos=(0, -0.1, 0), parent=self.frame)
     taskMgr.add(self.__watchMouseMovement, 'BRWater-watchMouseMovement')
     taskMgr.add(self.__lowerPowerBar, 'BRWater-lowerPowerBar')
     mw = base.mouseWatcherNode
     if mw.hasMouse():
         self.lastMouseX = mw.getMouseX()
Esempio n. 51
0
class QuestNote(DirectFrame):
    notify = directNotify.newCategory('QuestNote')
    spots = [(-0.45, 0, 0.3),
     (0.45, 0, 0.3),
     (0.45, 0, -0.25),
     (-0.45, 0, -0.25)]
    RewardTextPos = (0, -0.4)
    RewardTextScale = 0.06
    ProgressTextScale = 0.07
    ProgressTextPos = (0, -0.19)
    TaskInfoTextPos = (0, 0.05)
    NonHeadingTextScale = 0.08
    HeadingTextPos = (0, 0.23)
    HeadingTextScale = 0.1

    def __init__(self, index):
        DirectFrame.__init__(self, scale=0.5)
        stickergui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui.bam')
        self['image'] = stickergui.find('**/paper_note')
        self.setPos(self.spots[index])
        self.headingText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.HeadingTextPos, scale=self.HeadingTextScale)
        self.taskInfoText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.TaskInfoTextPos, scale=self.NonHeadingTextScale)
        self.progressText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.ProgressTextPos, scale=self.ProgressTextScale)
        self.rewardText = OnscreenText(parent=self, text='', font=CIGlobals.getToonFont(), pos=self.RewardTextPos, scale=self.RewardTextScale)
        self.hide()

    def setHeading(self, text):
        self.headingText.setText(text)

    def setTaskInfo(self, text):
        self.taskInfoText.setText(text)

    def setProgress(self, text):
        self.progressText.setText(text)

    def setReward(self, text):
        self.rewardText.setText(text)

    def setCompleted(self, value):
        if value:
            self.setProgress('Completed')
            self.progressText['fg'] = (0, 0.6, 0, 1)
Esempio n. 52
0
   def open(self):
      #left spacer
      Spacer(parent=self)

      self.middle_frame=Frame(layout=layout.VLayout,
                        parent=self,
                         pref_w=180)
      n=5
      [Spacer(parent=self.middle_frame) for _ in range(n)]
      self.quit_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['quit_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_quit]),
                        parent=self.middle_frame)
      Spacer(parent=self.middle_frame)
      self.options_btn=Button(pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['options_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_options]),
                        parent=self.middle_frame)
      self.load_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['load_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_load]),
                        parent=self.middle_frame)
      self.play_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['play_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_play]),
                        parent=self.middle_frame)
      [Spacer(parent=self.middle_frame) for _ in range(n)]
      
      #right spacer
      Spacer(parent=self)
      
      self.message=OnscreenText(text='main menu',style=1,fg=(1,1,1,1),pos=(.87,-.95),scale=.07)
Esempio n. 53
0
class FriendsList(DirectFrame):
    notify = DirectNotifyGlobal.directNotify.newCategory('FriendsList')

    def __init__(self):
        DirectFrame.__init__(self, parent=base.a2dTopRight, pos=(-0.25, 0.0, -0.46))
        gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
        self['image'] = gui.find('**/FriendsBox_Open')
        self.headingText = OnscreenText(text='', parent=self, pos=(0.01, 0.2), fg=(0.1, 0.1, 0.4, 1.0), scale=0.04)
        self.frameForNames = DirectScrolledList(frameSize=(0.0, 0.35, 0, 0.35), incButton_geom=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_hpr=(0, 0, 180), incButton_pos=(0.17, 0, -0.04), decButton_geom=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_pos=(0.17, 0, 0.395), pos=(-0.1625, 0.0, -0.27), parent=self, numItemsVisible=9, forceHeight=0.04, itemFrame_frameSize=(-0.15, 0.15, 0, -0.35), itemFrame_pos=(0, 0, 0.3275), itemFrame_relief=None, relief=None)
        self.fwdBtn = DirectButton(geom=(gui.find('**/Horiz_Arrow_UP'),
         gui.find('**/Horiz_Arrow_DN'),
         gui.find('**/Horiz_Arrow_Rllvr'),
         gui.find('**/Horiz_Arrow_UP')), relief=None, parent=self, pos=(0.17, 0.0, -0.38), command=self.doState)
        self.backBtn = DirectButton(geom=(gui.find('**/Horiz_Arrow_UP'),
         gui.find('**/Horiz_Arrow_DN'),
         gui.find('**/Horiz_Arrow_Rllvr'),
         gui.find('**/Horiz_Arrow_UP')), relief=None, parent=self, pos=(-0.15, 0.0, -0.38), hpr=(180, 0, 0), command=self.doState)
        self.closeBtn = DirectButton(geom=CIGlobals.getCancelBtnGeom(), relief=None, parent=self, command=self.exitClicked)
        self.closeBtn.setPos(0.015, 0.0, -0.375)
        gui.removeNode()
        del gui
        self.hide()
        self.friends = {}
        self.onlineFriends = {}
        self.fsm = ClassicFSM.ClassicFSM('FriendsList', [State.State('off', self.enterOff, self.exitOff), State.State('onlineFriendsList', self.enterOnlineFriendsList, self.exitOnlineFriendsList), State.State('allFriendsList', self.enterAllFriendsList, self.exitAllFriendsList)], 'off', 'off')
        self.fsm.enterInitialState()
        self.accept('gotFriendsList', self.handleFriendsList)
        return

    def destroy(self):
        self.ignore('gotFriendsList')
        self.fsm.requestFinalState()
        del self.fsm
        self.headingText.destroy()
        del self.headingText
        self.frameForNames.destroy()
        del self.frameForNames
        self.fwdBtn.destroy()
        del self.fwdBtn
        self.backBtn.destroy()
        del self.backBtn
        self.closeBtn.destroy()
        del self.closeBtn
        del self.friends
        del self.onlineFriends
        DirectFrame.destroy(self)

    def doState(self, state):
        self.fsm.request(state)

    def exitClicked(self):
        self.fsm.request('off')
        base.localAvatar.showFriendButton()

    def setButtons(self, fwd = None, back = None):
        if fwd:
            self.fwdBtn['extraArgs'] = [fwd]
            self.fwdBtn['state'] = DGG.NORMAL
        else:
            self.fwdBtn['extraArgs'] = []
            self.fwdBtn['state'] = DGG.DISABLED
        if back:
            self.backBtn['extraArgs'] = [back]
            self.backBtn['state'] = DGG.NORMAL
        else:
            self.backBtn['extraArgs'] = []
            self.backBtn['state'] = DGG.DISABLED

    def handleFriendsList(self, friendIdArray, nameArray, flags):
        self.friends = {}
        self.onlineFriends = {}
        for i in xrange(len(friendIdArray)):
            avatarId = friendIdArray[i]
            name = nameArray[i]
            self.friends[avatarId] = name
            if flags[i] == 1:
                self.onlineFriends[avatarId] = name

    def enterOff(self):
        self.hide()

    def exitOff(self):
        self.show()

    def addFriend(self, name, avatarId):
        self.frameForNames.addItem(DirectButton(text=name, extraArgs=[avatarId], command=self.friendClicked, scale=0.035, relief=None, text1_bg=textDownColor, text2_bg=textRolloverColor, text_align=TextNode.ALeft))
        return

    def friendClicked(self, avatarId):
        self.fsm.request('off')
        base.localAvatar.panel.makePanel(avatarId)

    def resetAll(self):
        self.headingText.setText('')
        self.frameForNames.removeAndDestroyAllItems()
        self.setButtons(None, None)
        return

    def sortListItems(self):
        self.frameForNames['items'].sort(key=lambda x: x['text'])
        self.frameForNames.refresh()

    def enterAllFriendsList(self):
        self.headingText.setText('All\nFriends')
        for friendId, name in self.friends.items():
            self.addFriend(name, friendId)

        self.sortListItems()
        self.setButtons(None, 'onlineFriendsList')
        return

    def exitAllFriendsList(self):
        self.resetAll()

    def enterOnlineFriendsList(self):
        self.headingText.setText('Online\nFriends')
        for friendId, name in self.onlineFriends.items():
            self.addFriend(name, friendId)

        self.sortListItems()
        self.setButtons('allFriendsList', None)
        return

    def exitOnlineFriendsList(self):
        self.resetAll()
Esempio n. 54
0
class Main_menu(Frame):
   sgn_play='Main_menu.sgn_play'
   sgn_load='Main_menu.sgn_load'
   sgn_options='Main_menu.sgn_options'
   sgn_quit='Main_menu.sgn_quit'

   def __init__(self,*args,**kwargs):
      kwargs['layout']=layout.HLayout
      Frame.__init__(self,*args,**kwargs)
      res=loader.loadModel('data/gui/main_menu.egg')
      self.resources = {   'play_btn':res.find('**/main_menu.play_btn'),
                     'load_btn':res.find('**/main_menu.load_btn'),
                     'options_btn':res.find('**/main_menu.options_btn'),
                     'quit_btn':res.find('**/main_menu.quit_btn')
                     }

   def open(self):
      #left spacer
      Spacer(parent=self)

      self.middle_frame=Frame(layout=layout.VLayout,
                        parent=self,
                         pref_w=180)
      n=5
      [Spacer(parent=self.middle_frame) for _ in range(n)]
      self.quit_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['quit_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_quit]),
                        parent=self.middle_frame)
      Spacer(parent=self.middle_frame)
      self.options_btn=Button(pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['options_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_options]),
                        parent=self.middle_frame)
      self.load_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['load_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_load]),
                        parent=self.middle_frame)
      self.play_btn=Button(   pref_h=70,
                        p3dobject=DirectButton(geom=(self.resources['play_btn']),
                                          borderWidth=(0,0),
                                          command=messenger.send, extraArgs=[Main_menu.sgn_play]),
                        parent=self.middle_frame)
      [Spacer(parent=self.middle_frame) for _ in range(n)]
      
      #right spacer
      Spacer(parent=self)
      
      self.message=OnscreenText(text='main menu',style=1,fg=(1,1,1,1),pos=(.87,-.95),scale=.07)

   def close(self):
      self.play_btn.p3dobject.destroy()
      del self.play_btn
      self.load_btn.p3dobject.destroy()
      del self.load_btn
      self.options_btn.p3dobject.destroy()
      del self.options_btn
      self.quit_btn.p3dobject.destroy()
      del self.quit_btn
      del self.middle_frame
      self.message.destroy()
      del self.message
Esempio n. 55
0
class CharSelection:
    notify = directNotify.newCategory('CharSelection')
    STAGE_TOON_POS = (66.4, 74.47, -25)
    STAGE_TOON_HPR = (227.73, 0, 0)
    NO_TOON = 'Empty Slot'
    PLAY = 'Play'
    CREATE = 'Create'
    TITLE = 'Pick  A  Toon  To  Play'

    def __init__(self, avChooser):
        self.avChooser = avChooser
        self.choice = None
        self.charList = None
        self.charNameLabel = None
        self.charButtons = []
        self.playOrCreateButton = None
        self.deleteButton = None
        self.quitButton = None
        self.world = None
        self.sky = None
        self.fog = None
        self.title = None
        self.stageToon = None
        self.selectionFSM = ClassicFSM.ClassicFSM('CharSelection', [State.State('off', self.enterOff, self.exitOff), State.State('character', self.enterCharSelected, self.exitCharSelected), State.State('empty', self.enterEmptySelected, self.exitEmptySelected)], 'off', 'off')
        self.selectionFSM.enterInitialState()
        return

    def __setupStageToon(self):
        self.stageToon = Toon(base.cr)
        self.stageToon.setPos(self.STAGE_TOON_POS)
        self.stageToon.setHpr(self.STAGE_TOON_HPR)

    def cleanupStageToon(self):
        if self.stageToon != None:
            self.stageToon.disable()
            self.stageToon.delete()
            self.stageToon = None
        return

    def enterOff(self):
        pass

    def exitOff(self):
        pass

    def enterCharSelected(self, slot):
        self.choice = self.avChooser.getAvChoiceBySlot(slot)
        dna = self.choice.dna
        name = self.choice.name
        self.stageToon.setName(name)
        self.stageToon.setDNAStrand(dna)
        self.stageToon.nameTag.setColorLocal()
        self.stageToon.animFSM.request('neutral')
        self.stageToon.reparentTo(base.render)
        self.charNameLabel.setText(name)
        self.playOrCreateButton['text'] = self.PLAY
        self.playOrCreateButton['extraArgs'] = ['play']
        self.playOrCreateButton.show()
        self.deleteButton.show()

    def exitCharSelected(self):
        self.stageToon.animFSM.requestFinalState()
        self.stageToon.deleteCurrentToon()
        self.stageToon.reparentTo(base.hidden)
        self.playOrCreateButton.hide()
        self.deleteButton.hide()
        self.choice = None
        return

    def enterEmptySelected(self):
        self.charNameLabel.setText(self.NO_TOON)
        self.playOrCreateButton['text'] = self.CREATE
        self.playOrCreateButton['extraArgs'] = ['create']
        self.playOrCreateButton.show()

    def exitEmptySelected(self):
        self.playOrCreateButton.hide()

    def __action(self, action):
        for btn in self.charButtons:
            if btn['state'] == DGG.DISABLED:
                self.slot = btn.getPythonTag('slot')
                break

        func = None
        arg = None
        if action == 'delete':
            func = self.deleteToon
            arg = self.choice.avId
        elif action == 'play':
            func = self.playGame
            arg = self.choice.slot
        elif action == 'create':
            func = self.enterMAT
        elif action == 'quit':
            func = sys.exit
        base.transitions.fadeOut(0.3)
        if arg != None:
            Sequence(Wait(0.31), Func(func, arg)).start()
        else:
            Sequence(Wait(0.31), Func(func)).start()
        return

    def playGame(self, slot):
        messenger.send('avChooseDone', [self.avChooser.getAvChoiceBySlot(slot)])

    def enterMAT(self):
        messenger.send('enterMakeAToon', [self.slot])

    def deleteToon(self, avId):
        self.avChooser.avChooseFSM.request('waitForToonDelResponse', [avId])

    def __handleCharButton(self, slot):
        for btn in self.charButtons:
            if btn.getPythonTag('slot') == slot:
                btn['state'] = DGG.DISABLED
            else:
                btn['state'] = DGG.NORMAL

        if self.avChooser.hasToonInSlot(slot):
            self.selectionFSM.request('character', [slot])
        else:
            self.selectionFSM.request('empty')

    def load(self):
        base.cr.renderFrame()
        base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4.0 / 3.0))
        self.__setupStageToon()
        self.world = loader.loadModel('phase_9/models/cogHQ/SellbotHQExterior.bam')
        self.world.reparentTo(base.render)
        self.world.setPos(0, 227.09, -25.36)
        self.sky = loader.loadModel('phase_9/models/cogHQ/cog_sky.bam')
        self.sky.setScale(1)
        self.sky.reparentTo(base.render)
        self.sky.find('**/InnerGroup').removeNode()
        self.fog = Fog('charSelectFog')
        self.fog.setColor(0.2, 0.2, 0.2)
        self.fog.setExpDensity(0.003)
        base.render.setFog(self.fog)
        self.title = DirectLabel(text=self.TITLE, text_font=CIGlobals.getMickeyFont(), text_fg=(1, 0.9, 0.1, 1), relief=None, text_scale=0.13, pos=(0, 0, 0.82))
        self.charNameLabel = OnscreenText(text='', font=CIGlobals.getMickeyFont(), pos=(-0.25, 0.5, 0), fg=(1, 0.9, 0.1, 1.0))
        self.charNameLabel.hide()
        self.playOrCreateButton = DirectButton(text='', pos=(0.8125, 0, -0.735), command=self.__action, geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01))
        self.playOrCreateButton.hide()
        self.deleteButton = DirectButton(text='Delete', pos=(0.8125, 0, -0.835), command=self.__action, extraArgs=['delete'], geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01))
        self.deleteButton.hide()
        self.quitButton = DirectButton(text='Quit', pos=(-1.1, 0, -0.925), command=self.__action, extraArgs=['quit'], text_scale=0.06, geom=CIGlobals.getDefaultBtnGeom(), relief=None, text_pos=(0, -0.01))
        textRolloverColor = Vec4(1, 1, 0, 1)
        textDownColor = Vec4(0.5, 0.9, 1, 1)
        textDisabledColor = Vec4(0.4, 0.8, 0.4, 1)
        for slot in range(6):
            if self.avChooser.hasToonInSlot(slot):
                choice = self.avChooser.getAvChoiceBySlot(slot)
                text = choice.name
            else:
                text = self.NO_TOON
            btn = DirectButton(relief=None, text=text, text_scale=0.06, text_align=TextNode.ALeft, text1_bg=textDownColor, text2_bg=textRolloverColor, text3_fg=textDisabledColor, textMayChange=0, command=self.__handleCharButton, extraArgs=[slot], text_pos=(0, 0, 0.0))
            btn.setPythonTag('slot', slot)
            self.charButtons.append(btn)
            btn['state'] = DGG.NORMAL

        gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
        listXorigin = -0.02
        listFrameSizeX = 0.625
        listZorigin = -0.96
        listFrameSizeZ = 1.04
        arrowButtonScale = 1.3
        itemFrameXorigin = -0.237
        itemFrameZorigin = 0.365
        buttonXstart = itemFrameXorigin + 0.293
        self.charList = DirectScrolledList(relief=None, pos=(0.75, 0, 0.08), incButton_image=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_scale=(arrowButtonScale, arrowButtonScale, -arrowButtonScale), incButton_pos=(buttonXstart, 0, itemFrameZorigin - 0.999), incButton_image3_color=Vec4(1, 1, 1, 0.2), decButton_image=(gui.find('**/FndsLst_ScrollUp'),
         gui.find('**/FndsLst_ScrollDN'),
         gui.find('**/FndsLst_ScrollUp_Rllvr'),
         gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_scale=(arrowButtonScale, arrowButtonScale, arrowButtonScale), decButton_pos=(buttonXstart, 0, itemFrameZorigin + 0.125), decButton_image3_color=Vec4(1, 1, 1, 0.2), itemFrame_pos=(itemFrameXorigin, 0, itemFrameZorigin), itemFrame_scale=1.0, itemFrame_relief=DGG.SUNKEN, itemFrame_frameSize=(listXorigin,
         listXorigin + listFrameSizeX,
         listZorigin,
         listZorigin + listFrameSizeZ), itemFrame_frameColor=(0.85, 0.95, 1, 1), itemFrame_borderWidth=(0.01, 0.01), numItemsVisible=15, forceHeight=0.075, items=self.charButtons)
        base.camera.setPos(75.12, 63.22, -23)
        base.camera.setHpr(26.57, 9.62, 0)
        return

    def unload(self):
        self.selectionFSM.requestFinalState()
        self.cleanupStageToon()
        self.choice = None
        if self.charButtons:
            for btn in self.charButtons:
                btn.destroy()

            self.charButtons = None
        if self.charList:
            self.charList.destroy()
            self.charList = None
        if self.charNameLabel:
            self.charNameLabel.destroy()
            self.charNameLabel = None
        if self.playOrCreateButton:
            self.playOrCreateButton.destroy()
            self.playOrCreateButton = None
        if self.deleteButton:
            self.deleteButton.destroy()
            self.deleteButton = None
        if self.quitButton:
            self.quitButton.destroy()
            self.quitButton = None
        if self.sky:
            self.sky.removeNode()
            self.sky = None
        if self.world:
            self.world.removeNode()
            self.world = None
        if self.title:
            self.title.destroy()
            self.title = None
        base.render.clearFog()
        self.fog = None
        base.camera.setPos(0, 0, 0)
        base.camera.setHpr(0, 0, 0)
        base.transitions.noTransitions()
        del self.selectionFSM
        return
class ClickToStart(DirectObject):
    notify = directNotify.newCategory('ClickToStart')

    def __init__(self, version='n/a'):
        DirectObject.__init__(self)

        self.backgroundNodePath = render2d.attachNewNode('background', 0)
        self.backgroundModel = loader.loadModel(
            'phase_3/models/gui/loading-background.bam')
        self.backgroundModel.reparentTo(self.backgroundNodePath)
        self.backgroundNodePath.find('**/fg').removeNode()
        self.backgroundNodePath.setScale(1, 1, 1)

        self.logo = OnscreenImage(
            parent=base.a2dTopCenter, image='phase_3/maps/toontown-logo.png',
            scale=(1.0, 1, 0.5), pos=(0, 0, -0.85))
        self.logo.setTransparency(TransparencyAttrib.MAlpha)

        self.label = OnscreenText(
            TTLocalizer.ClickToStartLabel, parent=base.a2dBottomCenter,
            font=ToontownGlobals.getMinnieFont(), fg=Vec4(1, 1, 1, 1),
            scale=0.1, align=TextNode.ACenter)
        self.label.setZ(0.35)

        self.versionLabel = OnscreenText(
            '\x01white_shadow\x01%s\x02' % version, parent=base.a2dBottomRight,
            font=ToontownGlobals.getMinnieFont(), fg=Vec4(0, 0, 0, 1),
            scale=0.06, align=TextNode.ARight)
        self.versionLabel.setPos(-0.025, 0.025)

        self.setColorScale(Vec4(0, 0, 0, 0))

        self.fadeTrack = None
        self.logoPosTrack = None
        self.logoScaleTrack = None
        self.labelPosTrack = None
        self.labelColorScaleTrack = None

    def delete(self):
        if self.labelColorScaleTrack is not None:
            self.labelColorScaleTrack.finish()
            self.labelColorScaleTrack = None

        if self.labelPosTrack is not None:
            self.labelPosTrack.finish()
            self.labelPosTrack = None

        if self.logoScaleTrack is not None:
            self.logoScaleTrack.finish()
            self.logoScaleTrack = None

        if self.logoPosTrack is not None:
            self.logoPosTrack.finish()
            self.logoPosTrack = None

        if self.fadeTrack is not None:
            self.fadeTrack.finish()
            self.fadeTrack = None

        if self.versionLabel is not None:
            self.versionLabel.destroy()
            self.versionLabel = None

        if self.label is not None:
            self.label.destroy()
            self.label = None

        if self.logo is not None:
            self.logo.destroy()
            self.logo = None

        if self.backgroundNodePath is not None:
            self.backgroundNodePath.removeNode()
            self.backgroundNodePath = None

        if self.backgroundModel is not None:
            self.backgroundModel.removeNode()
            self.backgroundModel = None

    def start(self):
        base.transitions.fadeOut(t=0)

        self.setColorScale(Vec4(1, 1, 1, 1))

        if self.fadeTrack is not None:
            self.fadeTrack.finish()
            self.fadeTrack = None

        self.fadeTrack = base.transitions.getFadeInIval(t=2)
        self.fadeTrack.start()

        if self.logoScaleTrack is not None:
            self.logoScaleTrack.finish()
            self.logoScaleTrack = None

        self.logoScaleTrack = Sequence(
            LerpScaleInterval(self.logo, 2, Vec3(1.1, 1, 0.55), Vec3(1, 1, 0.5),
                              blendType='easeInOut'),
            LerpScaleInterval(self.logo, 2, Vec3(1, 1, 0.5), Vec3(1.1, 1, 0.55),
                              blendType='easeInOut')
        )

        if self.logoPosTrack is not None:
            self.logoPosTrack.finish()
            self.logoPosTrack = None

        self.logoPosTrack = Sequence(
            LerpPosInterval(self.logo, 2, Point3(0, 0, -0.85),
                            Point3(0, 0, -0.7), blendType='easeOut'),
            Func(self.logoScaleTrack.loop)
        )
        self.logoPosTrack.start()

        if self.labelColorScaleTrack is not None:
            self.labelColorScaleTrack.finish()
            self.labelColorScaleTrack = None

        self.labelColorScaleTrack = Sequence(
            LerpColorScaleInterval(self.label, 1, Vec4(1, 1, 1, 0.6),
                                   Vec4(1, 1, 1, 1)),
            LerpColorScaleInterval(self.label, 1, Vec4(1, 1, 1, 1),
                                   Vec4(1, 1, 1, 0.6))
        )

        if self.labelPosTrack is not None:
            self.labelPosTrack.finish()
            self.labelPosTrack = None

        self.labelPosTrack = Sequence(
            LerpPosInterval(self.label, 2, Point3(0, 0, 0.35),
                            Point3(0, 0, 0.15), blendType='easeOut'),
            Func(self.labelColorScaleTrack.loop)
        )
        self.labelPosTrack.start()

        self.acceptOnce('mouse1', self.begin)

    def stop(self):
        self.ignore('mouse1')

        if self.labelPosTrack is not None:
            self.labelPosTrack.finish()
            self.labelPosTrack = None

        if self.labelColorScaleTrack is not None:
            self.labelColorScaleTrack.finish()
            self.labelColorScaleTrack = None

        if self.logoPosTrack is not None:
            self.logoPosTrack.finish()
            self.logoPosTrack = None

        if self.logoScaleTrack is not None:
            self.logoScaleTrack.finish()
            self.logoScaleTrack = None

        if self.fadeTrack is not None:
            self.fadeTrack.finish()
            self.fadeTrack = None

        self.setColorScale(Vec4(0, 0, 0, 0))

    def begin(self):
        base.cr.introDone = True

        if self.fadeTrack is not None:
            self.fadeTrack.finish()
            self.fadeTrack = None

        self.fadeTrack = base.transitions.getFadeOutIval(t=2)

        Sequence(
            Func(self.fadeTrack.start),
            Wait(2),
            Func(self.delete),
            Func(base.cr.introduction.delete),
            Func(base.cr.loginFSM.request, 'chooseAvatar', [base.cr.avList]),
            Func(base.transitions.fadeIn, 2)
        ).start()

    def setColorScale(self, *args, **kwargs):
        self.backgroundNodePath.setColorScale(*args, **kwargs)
        self.logo.setColorScale(*args, **kwargs)
        self.label.setColorScale(*args, **kwargs)
        self.versionLabel.setColorScale(*args, **kwargs)
Esempio n. 57
0
class GunGameLevelLoader:
    notify = directNotify.newCategory('GunGameLevelLoader')
    LevelData = {'momada': {'name': CIGlobals.ToonBattleOriginalLevel,
                'camera': (Point3(0.0, -25.8, 7.59), Vec3(0.0, 0.0, 0.0)),
                'models': ['phase_11/models/lawbotHQ/LB_Zone03a.bam',
                           'phase_11/models/lawbotHQ/LB_Zone04a.bam',
                           'phase_11/models/lawbotHQ/LB_Zone7av2.bam',
                           'phase_11/models/lawbotHQ/LB_Zone08a.bam',
                           'phase_11/models/lawbotHQ/LB_Zone13a.bam',
                           'phase_10/models/cashbotHQ/ZONE17a.bam',
                           'phase_10/models/cashbotHQ/ZONE18a.bam',
                           'phase_11/models/lawbotHQ/LB_Zone22a.bam'],
                'parents': [render,
                            'EXIT',
                            'EXIT',
                            'EXIT',
                            'ENTRANCE',
                            'ENTRANCE',
                            'ENTRANCE',
                            'EXIT'],
                'model_positions': [Point3(0.0, 0.0, 0.0),
                                    Point3(-1.02, 59.73, 0.0),
                                    Point3(0.0, 74.77, 0.0),
                                    Point3(0.0, 89.37, -13.5),
                                    Point3(16.33, -136.53, 0.0),
                                    Point3(-1.01, -104.4, 0.0),
                                    Point3(0.65, -23.86, 0.0),
                                    Point3(-55.66, -29.01, 0.0)],
                'model_orientations': [Vec3(0.0, 0.0, 0.0),
                                       Vec3(0.0, 0.0, 0.0),
                                       Vec3(90.0, 0.0, 0.0),
                                       Vec3(180.0, 0.0, 0.0),
                                       Vec3(97.0, 0.0, 0.0),
                                       Vec3(359.95, 0.0, 0.0),
                                       Vec3(90.0, 0.0, 0.0),
                                       Vec3(270.0, 0.0, 0.0)],
                'spawn_points': [(Point3(0, 0, 0), Vec3(0, 0, 0)),
                                 (Point3(-20, 50, 0), Vec3(0, 0, 0)),
                                 (Point3(20, 50, 0), Vec3(0, 0, 0)),
                                 (Point3(0, 120, 0), Vec3(0, 0, 0)),
                                 (Point3(0, 100, 0), Vec3(180, 0, 0)),
                                 (Point3(-90, 0, 0), Vec3(0, 0, 0)),
                                 (Point3(-170, 0, 0), Vec3(0, 0, 0)),
                                 (Point3(-90, 50, 0), Vec3(0, 0, 0)),
                                 (Point3(-170, 50, 0), Vec3(0, 0, 0)),
                                 (Point3(35, 250, 0), Vec3(-90, 0, 0)),
                                 (Point3(0, 285, 0), Vec3(180, 0, 0)),
                                 (Point3(-185, 250, 0), Vec3(90, 0, 0))]},
     'dg': {'name': CIGlobals.DaisyGardens,
            'camera': (Point3(-33.13, -3.2, 48.62), Vec3(326.31, 332.68, 0.0)),
            'dna': ['phase_8/dna/storage_DG.dna', 'phase_8/dna/storage_DG_sz.dna', 'phase_8/dna/daisys_garden_sz.dna'],
            'sky': 'TT',
            'spawn_points': hoodMgr.dropPoints[CIGlobals.DaisyGardens]},
     'mml': {'name': CIGlobals.MinniesMelodyland,
             'camera': (Point3(-54.42, -91.05, 34.89), Vec3(315.29, 336.8, 0.0)),
             'dna': ['phase_6/dna/storage_MM.dna', 'phase_6/dna/storage_MM_sz.dna', 'phase_6/dna/minnies_melody_land_sz.dna'],
             'sky': 'MM',
             'spawn_points': hoodMgr.dropPoints[CIGlobals.MinniesMelodyland]},
     'oz': {'name': CIGlobals.OutdoorZone,
            'camera': (Point3(-54.42, -91.05, 34.89), Vec3(315.29, 336.8, 0.0)),
            'dna': ['phase_6/dna/storage_OZ.dna', 'phase_6/dna/storage_OZ_sz.dna', 'phase_6/dna/outdoor_zone_sz.dna'],
            'sky': 'TT',
            'spawn_points': hoodMgr.dropPoints[CIGlobals.OutdoorZone]},
     'cbhq': {'name': CIGlobals.CashbotHQ,
              'camera': (Point3(302.64, 5.0, 15.2), Vec3(135.0, 341.57, 0.0)),
              'model': 'phase_10/models/cogHQ/CashBotShippingStation.bam',
              'sky': None,
              'spawn_points': hoodMgr.dropPoints[CIGlobals.CashbotHQ]}}
    SkyData = {'TT': 'phase_3.5/models/props',
     'MM': 'phase_6/models/props',
     'cog': 'phase_9/models/cogHQ',
     'MovingSkies': ['TT']}

    def __init__(self):
        self.levelName = None
        self.dnaStore = DNAStorage()
        self.loadingText = None
        self.levelGeom = None
        self.skyUtil = None
        self.skyModel = None
        self.momadaAreas = []
        self.momadaAreaName2areaModel = {}
        return

    def setLevel(self, level):
        self.levelName = level

    def getLevel(self):
        return self.levelName

    def getCameraOfCurrentLevel(self):
        return self.LevelData[self.getLevel()]['camera']

    def getSpawnPoints(self):
        pointData = self.LevelData[self.levelName]['spawn_points']
        if self.levelName == 'momada':
            return pointData
        else:
            array = []
            for posAndHpr in pointData:
                array.append((Point3(posAndHpr[0], posAndHpr[1], posAndHpr[2]), Vec3(posAndHpr[3], posAndHpr[4], posAndHpr[5])))

            return array

    def getNameOfCurrentLevel(self):
        return self.LevelData[self.getLevel()]['name']

    def load(self):
        self.unload()
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        self.loadingText = OnscreenText(text='Loading ' + self.getNameOfCurrentLevel() + '...', font=CIGlobals.getMinnieFont(), fg=(1, 1, 1, 1))
        self.loadingText.setBin('gui-popup', 0)
        base.graphicsEngine.renderFrame()
        base.graphicsEngine.renderFrame()
        if self.levelName == 'momada':
            self.__momadaLoad()
        elif self.levelName in ('cbhq',):
            modelPath = self.LevelData[self.levelName]['model']
            self.levelGeom = loader.loadModel(modelPath)
            self.levelGeom.flattenMedium()
            self.levelGeom.reparentTo(render)
            if self.LevelData[self.levelName]['sky'] != None:
                self.skyModel = loader.loadModel(self.SkyData['cog'] + '/cog_sky.bam')
                self.skyUtil = SkyUtil()
                self.skyUtil.startSky(self.skyModel)
                self.skyModel.reparentTo(render)
        else:
            dnaFiles = self.LevelData[self.levelName]['dna']
            skyType = self.LevelData[self.levelName]['sky']
            skyPhase = self.SkyData[skyType]
            loader.loadDNAFile(self.dnaStore, 'phase_4/dna/storage.dna')
            for index in range(len(dnaFiles)):
                if index == len(dnaFiles) - 1:
                    node = loader.loadDNAFile(self.dnaStore, dnaFiles[index])
                    if node.getNumParents() == 1:
                        self.levelGeom = NodePath(node.getParent(0))
                        self.levelGeom.reparentTo(hidden)
                    else:
                        self.levelGeom = hidden.attachNewNode(node)
                    self.levelGeom.flattenMedium()
                    gsg = base.win.getGsg()
                    if gsg:
                        self.levelGeom.prepareScene(gsg)
                    self.levelGeom.reparentTo(render)
                else:
                    loader.loadDNAFile(self.dnaStore, dnaFiles[index])

            self.skyModel = loader.loadModel(skyPhase + '/' + skyType + '_sky.bam')
            self.skyUtil = SkyUtil()
            self.skyUtil.startSky(self.skyModel)
            self.skyModel.reparentTo(camera)
            ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
            self.skyModel.node().setEffect(ce)
        if self.loadingText:
            self.loadingText.destroy()
            self.loadingText = None
        return

    def __momadaLoad(self):

        def attachArea(itemNum):
            name = 'MomadaArea-%s' % itemNum
            area = self.momadaAreaName2areaModel.get(name)
            parents = self.LevelData['momada']['parents']
            parent = parents[itemNum]
            if type(parent) == type(''):
                parent = self.momadaAreas[itemNum - 1].find('**/' + parent)
            pos = self.LevelData['momada']['model_positions'][itemNum]
            hpr = self.LevelData['momada']['model_orientations'][itemNum]
            area.reparentTo(parent)
            area.setPos(pos)
            area.setHpr(hpr)

        _numItems = 0
        name = None
        for item in self.LevelData['momada']['models']:
            name = 'MomadaArea-%s' % _numItems
            area = loader.loadModel(item)
            self.momadaAreas.append(area)
            self.momadaAreaName2areaModel[name] = area
            attachArea(_numItems)
            _numItems += 1
            self.notify.info('Loaded and attached %s momada areas.' % _numItems)

        return

    def unload(self):
        if self.levelName == 'momada':
            for area in self.momadaAreas:
                self.momadaAreas.remove(area)
                area.removeNode()
                del area

            self.momadaAreas = []
            self.momadaAreaName2areaModel = {}
        else:
            if self.skyUtil:
                self.skyUtil.stopSky()
                self.skyUtil = None
            if self.skyModel:
                self.skyModel.removeNode()
                self.skyModel = None
            if self.levelGeom:
                self.levelGeom.removeNode()
                self.levelGeom = None
        return

    def cleanup(self):
        self.momadaAreas = None
        self.momadaAreaName2areaModel = None
        self.dnaStore.resetAll()
        self.dnaStore = None
        return
Esempio n. 58
0
class World(DirectObject.DirectObject):
    def __init__(self):
        self.creeps = None
        self.open = False
        self.sec = 0
        self.min = 0
        self.pindex = 1  # This is the Pause Index
        self.index = -1  # This is the hero Index
        self.rindex = False  # This is the Repick Index
        self.hpicked = []  # This List Stores All The Heroes Picked and Removes Them
        for i in range(0, 110):
            self.hpicked.append(-1)  # Gotta change and check this
        self.hindex = 0  # When a hero is picked this index saves it and stores it in the list
        self.RND = render.attachNewNode("rend")
        self.LightHandler = None
        self.Players()
        self.LoadTerrain()  # Load the Map
        self.SetupCamera()
        self.SetupLight()
        self.SetupEvents()
        self.SetupTimer()
        self.chooseHero()
        self.SetupMap()
        self.SetupCreeps()
        self.SetupCollision()
        self.displayed = False
        self.keyMap = {"cam-left": 0, "cam-right": 0, "cam-up": 0, "cam-down": 0, "zoom-in": 0, "zoom-out": 0}
        self.chatindex = 0
        self.chat = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        self.text = ["text1", "text2", "text3", "text4", "text5" "text6" "text7" "text8" "text9", "text10", "text11"]
        self.task = None

    def Players(self):
        self.hero1 = None
        self.hero2 = None
        self.hero3 = None
        self.hero4 = None
        self.hero5 = None
        self.hero6 = None
        self.hero7 = None
        self.hero8 = None
        self.hero9 = None
        self.hero10 = None
        self.player1 = None
        self.player2 = None
        self.player3 = None
        self.player4 = None
        self.player5 = None
        self.player6 = None
        self.player7 = None
        self.player8 = None
        self.player9 = None
        self.player10 = None

    def LoadTerrain(self):
        self.terrain = loader.loadModel("models/environment")
        self.terrain.setTag("Map", "1")
        self.terrain.reparentTo(self.RND)
        self.itmpan1 = OnscreenImage(image=MYDIRIMG + "/3.png", scale=(0.3, 0, 0.09), pos=(0.61, 0, -0.915))
        self.itmpan2 = OnscreenImage(image=MYDIRIMG + "/3.png", scale=(0.3, 0, 0.09), pos=(0.61, 0, -0.740))
        self.t2 = OnscreenImage(image=MYDIRIMG + "/t2.png", scale=(0.25, 0, 0.06), pos=(1.160, 0, -0.71))
        self.t1 = OnscreenImage(image=MYDIRIMG + "/t1.png", scale=(0.25, 0, 0.06), pos=(1.160, 0, -0.83))
        self.end = OnscreenImage(image=MYDIRIMG + "/end.png", scale=(0.1, 0, 0.2), pos=(1.510, 0, -0.80))
        self.back = OnscreenImage(image=MYDIRIMG + "/back.png", scale=(0.57, 0, 0.2), pos=(-0.26, 0, -0.80))

    def SetupCollision(self):
        base.cTrav = CollisionTraverser()
        self.collHandler = CollisionHandlerQueue()
        self.pickerNode = CollisionNode("mouseRay")
        self.pickerNP = camera.attachNewNode(self.pickerNode)
        self.pickerNode.setFromCollideMask(GeomNode.getDefaultCollideMask())
        self.pickerRay = CollisionRay()
        self.pickerNode.addSolid(self.pickerRay)
        base.cTrav.addCollider(self.pickerNP, self.collHandler)

    def ObjectClick(self):
        if base.mouseWatcherNode.hasMouse():
            mpos = base.mouseWatcherNode.getMouse()
        self.pickerRay.setFromLens(base.camNode, mpos.getX(), mpos.getY())
        base.cTrav.traverse(render)  # Assume for simplicity's sake that myHandler is a CollisionHandlerQueue.
        if self.collHandler.getNumEntries() > 0:  # This is so we get the closest object.
            self.collHandler.sortEntries()
            self.pickedObj = self.collHandler.getEntry(0).getIntoNodePath()
            self.pickedObj1 = self.pickedObj.findNetTag("Unit")
            self.pickedObj2 = self.pickedObj.findNetTag("MyHero")
            self.pickedObj3 = self.pickedObj.findNetTag("Map")
            self.pickedObj4 = self.pickedObj.findNetTag("MyHero")
            if self.pickedObj1 == self.creeps.getModel():
                if self.displayed is False:
                    self.displayed = True
                    self.creeps.display()
            else:
                if self.displayed is True:
                    self.displayed = False
                    self.creeps.displaynot()
            if self.hero != None:
                if self.pickedObj2 == self.hero1.getModel():
                    if self.displayed is False:
                        self.displayed = True
                        self.hero1.display()
                else:
                    if self.displayed is True:
                        self.displayed = False
                        self.hero1.displaynot()

    def SetupCamera(self):
        base.camera.setPos(0, 0, 180)
        base.camera.setP(-30)
        base.camera.lookAt(0, 0, 0)

    def SetupTimer(self):
        self.btn = aspect2d.attachNewNode("btn")
        self.btn.setTransparency(1)
        self.timesec = OnscreenText(text="", pos=(1.3, -0.71), fg=(1, 1, 1, 1), mayChange=1, scale=0.05)
        self.timemin = OnscreenText(text="", pos=(1.1, -0.71), fg=(1, 1, 1, 1), mayChange=1, scale=0.05)
        self.pausebtn = DirectButton(
            text="Pause (%d)" % (self.pindex),
            parent=self.btn,
            text_fg=(0, 0.2, 0, 1),
            text_pos=(0.05, -0.15),
            text_scale=(0.48, 0.53),
            image=(MYDIRIMG + "btnof.png", MYDIRIMG + "btnon.png", MYDIRIMG + "btnon.png", None),
            frameColor=(0, 0, 0, 0),
            pos=(-1.0, 0, -0.81),
            image_scale=(1.0, 0, 0.7),
            scale=(0.15, 0, 0.10),
            command=self.Pause,
        )
        self.infobtn = DirectButton(
            text="Info",
            parent=self.btn,
            text_fg=(0, 0.2, 0, 1),
            text_pos=(0.05, -0.15),
            text_scale=0.6,
            image=(MYDIRIMG + "btnof.png", MYDIRIMG + "btnon.png", MYDIRIMG + "btnon.png", None),
            frameColor=(0, 0, 0, 0),
            pos=(-1.0, 0, -0.68),
            image_scale=(1.0, 0, 0.7),
            scale=(0.15, 0, 0.10),
            command=self.Pause,
        )
        taskMgr.doMethodLater(1, self.Timer, "tickTask")

    def SetupMap(self):
        self.minimap = minimap(None)

    def SetupLight(self):
        self.LightHandler = Lights(None)

    def SetupEvents(self):
        self.DEntry = DirectEntry(
            text="",
            pos=(-0.6, 0.0, -0.7),
            image=MYDIRIMG + "/tooltips9.png",
            frameColor=(0, 0, 0, 1),
            width=27,
            image_pos=(13.5, 0, 0.2),
            image_scale=(15, 0, 0.6),
            scale=0.05,
            initialText="",
            numLines=1,
            focus=1,
            command=self.Parser,
        )
        self.DEntry.setTransparency(1)
        self.DEntry.detachNode()
        taskMgr.add(self.MoveCamera, "CameraControl")
        self.accept("enter", self.MsgBox)
        self.accept("wheel_up", self.setKey, ["zoom-in", 1])
        self.accept("wheel_down", self.setKey, ["zoom-out", 1])
        #   self.accept("wheel_up-up",self.setKey, ["zoom-in",0])
        #    self.accept("wheel_down-up",self.setKey, ["zoom-out",0])
        self.accept("a", self.setKey, ["cam-left", 1])
        self.accept("d", self.setKey, ["cam-right", 1])
        self.accept("w", self.setKey, ["cam-up", 1])
        self.accept("s", self.setKey, ["cam-down", 1])
        self.accept("+", self.setKey, ["zoom-in", 1])
        self.accept("-", self.setKey, ["zoom-out", 1])
        self.accept("a-up", self.setKey, ["cam-left", 0])
        self.accept("d-up", self.setKey, ["cam-right", 0])
        self.accept("w-up", self.setKey, ["cam-up", 0])
        self.accept("s-up", self.setKey, ["cam-down", 0])
        self.accept("+-up", self.setKey, ["zoom-in", 0])
        self.accept("--up", self.setKey, ["zoom-out", 0])
        self.accept("mouse1", self.ObjectClick)

    def UnSetupEvents(self):
        self.ignore("a")
        self.ignore("s")
        self.ignore("w")
        self.ignore("s")
        self.ignore("+")
        self.ignore("-")
        self.ignore("enter")
        self.ignore("wheel_up")
        self.ignore("wheel_down")
        taskMgr.remove("CameraControl")

    def setKey(self, key, value):
        self.keyMap[key] = value

    def MoveCamera(self, task):
        mpos = base.mouseWatcherNode.getMouse()
        elapsed = globalClock.getDt()
        self.dt = elapsed
        self.mx = mpos.getX()
        self.my = mpos.getY()
        if self.keyMap["cam-left"] != 0:
            base.camera.setX(base.camera, -(self.dt * 20))
        if self.keyMap["cam-right"] != 0:
            base.camera.setX(base.camera, +(self.dt * 20))
        if self.keyMap["zoom-in"] != 0:
            base.camera.setY(base.camera, -(self.dt * 20))
        if self.keyMap["zoom-out"] != 0:
            base.camera.setY(base.camera, +(self.dt * 20))
        if self.keyMap["cam-down"] != 0:
            base.camera.setZ(base.camera, -(self.dt * 20))
        if self.keyMap["cam-up"] != 0:
            base.camera.setZ(base.camera, +(self.dt * 20))
        if self.mx > 0.95:
            if base.camera.getX() < MAPLIMIT:
                base.camera.setX(base.camera, +(self.dt * SCROLLSPEED))
        if self.mx < -0.95:
            if base.camera.getX() > -MAPLIMIT:
                base.camera.setX(base.camera, -(self.dt * SCROLLSPEED))
        if self.my > 0.95:
            if base.camera.getY() < MAPLIMIT:
                base.camera.setZ(base.camera, +(self.dt * SCROLLSPEED))
        if self.my < -0.95:
            if base.camera.getY() > -MAPLIMIT:
                base.camera.setZ(base.camera, -(self.dt * SCROLLSPEED))
        return task.cont

    def chooseHero(self):
        if self.hero1 == None:
            self.BTNnode = aspect2d.attachNewNode("buttons")
            for i in range(0, 3):
                for j in range(0, 4):
                    self.index += 1
                    if icons[self.index] == None:
                        continue
                    if self.hpicked[self.index] == self.index:
                        continue
                    self.worldHeroButton(-1.8 + j * 0.1, -i * 0.1, self.index)

    def worldHeroButton(self, x, y, arg):
        DirectButton(
            text="",
            parent=self.BTNnode,
            text_font=font,
            image=MYDIRICONS + icons[arg] + ".tga",
            frameColor=(0, 0, 0, 0),
            pad=(-0.1, -0.1),
            image_scale=(IconSx + 0.2, 0, IconSy + 0.2),
            pos=(posx - 0.5 + x, 0, posy + y),
            scale=(0.20, 0, 0.20),
            command=self.SetupHero,
            extraArgs=[arg],
        )

    def SetupCreeps(self):
        self.creeps = Unit1()

    def SetupHero(self, no):
        self.hpicked.insert(self.hindex, no)
        self.hindex += 1
        self.BTNnode.detachNode()
        self.hero1 = Hero(no)
        self.hero1.getModel().setTag("Hero1", "1")

    def Timer(self, task):
        self.task = task
        self.sec += 1
        if self.hero1 != None:
            self.hero1.sendTime(self.min, self.sec)
        if self.sec >= 60:
            self.sec = 0
            self.min += 1
            self.timemin.setText(str(self.min))
        self.timesec.setText(str(self.sec))
        return task.again

    def MsgBox(self):
        if self.open == False:
            self.DEntry.reparentTo(aspect2d)
            self.open = True
        else:
            self.DEntry.detachNode()
            self.open = False

    def Parser(self, text):
        Text = text
        # Within 120 seconds on the game
        if self.hero1 == None:
            self.BTNnode.detachNode()
            if Text == "-random":
                self.hero1 = Hero(random.randint(0, 96))
            elif Text == "-random int":
                self.hero1 = Hero(random.randint(66, 96))
            elif Text == "-random str":
                self.hero1 = Hero(random.randint(0, 36))
            elif Text == "-random agi":
                self.hero1 == Hero(random.randint(36, 66))
        if Text == "-repick":
            if self.rindex == False:
                if self.hero1 != None:
                    self.hero1.destroy()
                    self.hero1 = None
                    self.index = -1
                    self.chooseHero()
                    self.rindex = True
            else:
                Error("Cannot Repick")
        elif Text == "-":
            pass
        else:
            pass

    #      self.Chat(Text,self.task)
    #     taskMgr.add(self.Chat,"nn",extraArgs=[Text])
    # this sends text to allies

    def ChatTimer(self, task, chat, i):
        chat.destroy()
        self.chat.insert(i, 0)
        self.chatindex -= 1
        return task.done

    def Chat(self, text, task):
        for i in range(1, 15):
            if self.chat[i] == 0:
                self.text[i] = OnscreenText(text=text, pos=(-1.3, -0.4), fg=(0, 0, 0, 1), scale=0.07)
                self.chat.insert(self.chatindex, 1)
                taskMgr.doMethodLater(5, self.ChatTimer, "chat", [task, self.text[i], i])
                self.chatindex += 1
                break
            else:
                self.text[i].setY(-(0.1 * i) + 0.4)
        return task.done

    def Pause(self):
        if self.pindex != 0:
            self.pindex -= 1
            time.sleep(2)
            self.pausebtn["text"] = "Pause (%d)" % (self.pindex)
        else:
            Error("Pause Limits Used")

    def destroy(self):
        if self.hero1 != None:
            self.hero1.destroy()
        self.minimap.destroy()
        self.btn.detachNode()
        self.BTNnode.detachNode()
        taskMgr.remove("timer")
        self.terrain.detachNode()
        del self.LightHandler
        del self.creeps
        self.UnSetupEvents()

    def MousePos(self, task):  # This Took me 1.5 Months to Learn
        if base.mouseWatcherNode.hasMouse():
            mpos = base.mouseWatcherNode.getMouse()
            self.pos3d = Point3()
            self.nearPoint = Point3()
            self.farPoint = Point3()
            base.camLens.extrude(mpos, self.nearPoint, self.farPoint)
        if self.plane.intersectsLine(
            self.pos3d, render.getRelativePoint(camera, self.nearPoint), render.getRelativePoint(camera, self.farPoint)
        ):
            pass
        return task.again
Esempio n. 59
0
class FinalScoreGUI:
    notify = directNotify.newCategory('FinalScoreGUI')

    def __init__(self):
        self.finalScoreBg = None
        self.finalScoreTitle = None
        self.finalScoreNameLbl = None
        self.finalScorePointLbl = None
        self.finalScoreContainer = None
        self.finalScores = []
        return

    def load(self):
        font = CIGlobals.getToonFont()
        box = DGG.getDefaultDialogGeom()
        self.finalScoreContainer = DirectFrame()
        self.finalScoreBg = OnscreenImage(image=box, color=(1, 1, 0.75, 1), scale=(1.9, 1.4, 1.4), parent=self.finalScoreContainer)
        self.finalScoreTitle = OnscreenText(text='Waiting for final scores...', pos=(0, 0.5, 0), font=font, scale=0.12, parent=self.finalScoreContainer)
        self.finalScoreNameLbl = OnscreenText(text='', scale=0.095, pos=(-0.85, 0.3, 0), font=font, align=TextNode.ALeft, parent=self.finalScoreContainer)
        self.finalScorePointLbl = OnscreenText(text='', scale=0.095, pos=(0.85, 0.3, 0), font=font, align=TextNode.ARight, parent=self.finalScoreContainer)
        self.finalScoreContainer.hide()
        self.finalScoreContainer.setBin('gui-popup', 60)
        del font
        del box

    def unload(self):
        if self.finalScoreContainer:
            self.finalScoreContainer.destroy()
            self.finalScoreContainer = None
        if self.finalScoreBg:
            self.finalScoreBg.destroy()
            self.finalScoreBg = None
        if self.finalScoreTitle:
            self.finalScoreTitle.destroy()
            self.finalScoreTitle = None
        if self.finalScoreNameLbl:
            self.finalScoreNameLbl.destroy()
            self.finalScoreNameLbl = None
        if self.finalScorePointLbl:
            self.finalScorePointLbl.destroy()
            self.finalScorePointLbl = None
        return

    def showFinalScores(self):
        self.finalScoreContainer.show()
        base.transitions.fadeScreen(0.5)

    def hideFinalScores(self):
        base.transitions.noTransitions()
        self.finalScoreContainer.hide()

    def handleFinalScores(self, avIdList, scoreList):
        for avId in avIdList:
            score = scoreList[avIdList.index(avId)]
            scoreObj = FinalScore(avId, score)
            self.finalScores.append(scoreObj)

        self.finalScores.sort(key=lambda x: x.score, reverse=True)
        for scoreObj in self.finalScores:
            name = base.cr.doId2do.get(scoreObj.avId).getName()
            self.finalScoreNameLbl['text'] += name + '\n'
            self.finalScorePointLbl['text'] += str(scoreObj.score) + ' Points\n'

        self.finalScoreTitle['text'] = 'Final Scores'
class PandaPmViewer:
    
    def __init__(self, mesh, pm_filebuf):

        scene_members = getSceneMembers(mesh)
        
        base = ShowBase()
        
        if len(scene_members) > 1:
            print('There is more than one geometry in the scene, so I think this is not a progressive base mesh.')
            sys.exit(1)
        
        rotateNode = GeomNode("rotater")
        rotatePath = render.attachNewNode(rotateNode)
        matrix = numpy.identity(4)
        if mesh.assetInfo.upaxis == collada.asset.UP_AXIS.X_UP:
            r = collada.scene.RotateTransform(0,1,0,90)
            matrix = r.matrix
        elif mesh.assetInfo.upaxis == collada.asset.UP_AXIS.Y_UP:
            r = collada.scene.RotateTransform(1,0,0,90)
            matrix = r.matrix
        rotatePath.setMat(Mat4(*matrix.T.flatten().tolist()))
        
        geom, renderstate, mat4 = scene_members[0]
        node = GeomNode("primitive")
        node.addGeom(geom)
        if renderstate is not None:
            node.setGeomState(0, renderstate)
        self.geomPath = rotatePath.attachNewNode(node)
        self.geomPath.setMat(mat4)
            
        wrappedNode = ensureCameraAt(self.geomPath, base.camera)
        base.disableMouse()
        attachLights(render)
        render.setShaderAuto()
        render.setTransparency(TransparencyAttrib.MDual, 1)
    
        base.render.analyze()
        KeyboardMovement()
        MouseDrag(wrappedNode)
        MouseScaleZoom(wrappedNode)
        ButtonUtils(wrappedNode)
        MouseCamera()
        
        print('Loading pm into memory... ', end=' ')
        sys.stdout.flush()
        self.pm_refinements = readPDAE(pm_filebuf)
        self.pm_index = 0
        print('Done')

        self.slider = DirectSlider(range=(0,len(self.pm_refinements)),
                                   value=0, pageSize=len(self.pm_refinements)/20,
                                   command=self.sliderMoved, pos=(0, 0, -.9), scale=1)
        for key, val in uiArgs.items():
            self.slider.thumb[key] = val
        
        self.triText = OnscreenText(text="", pos=(-1,0.85), scale = 0.15,
                                    fg=(1, 0.5, 0.5, 1), align=TextNode.ALeft, mayChange=1)
        
        base.run()
        
    def sliderMoved(self):
        sliderVal = int(self.slider['value'])
        if self.pm_index != sliderVal:
            self.movePmTo(sliderVal)
        self.triText.setText('Triangles: ' + str(self.geomPath.node().getGeom(0).getPrimitive(0).getNumFaces()))

    def movePmTo(self, dest_index):
        geom = self.geomPath.node().modifyGeom(0)
        vertdata = geom.modifyVertexData()
        prim = geom.modifyPrimitive(0)
        indexdata = prim.modifyVertices()
        
        indexrewriter = GeomVertexRewriter(indexdata)
        indexrewriter.setColumn(0)
        nextTriangleIndex = indexdata.getNumRows()
        
        vertwriter = GeomVertexWriter(vertdata, 'vertex')
        numverts = vertdata.getNumRows()
        vertwriter.setRow(numverts)
        normalwriter = GeomVertexWriter(vertdata, 'normal')
        normalwriter.setRow(numverts)
        uvwriter = GeomVertexWriter(vertdata, 'texcoord')
        uvwriter.setRow(numverts)
        
        while self.pm_index < dest_index:
            for op_index in range(len(self.pm_refinements[self.pm_index])):
                vals = self.pm_refinements[self.pm_index][op_index]
                op = vals[0]
                if op == PM_OP.TRIANGLE_ADDITION:
                    indexrewriter.setRow(nextTriangleIndex)
                    nextTriangleIndex += 3
                    indexrewriter.addData1i(vals[1])
                    indexrewriter.addData1i(vals[2])
                    indexrewriter.addData1i(vals[3])
                elif op == PM_OP.INDEX_UPDATE:
                    #TODO: ugly workaround for p3d 1.7 bug, change to below for 1.8
                    indexreader = GeomVertexReader(indexdata)
                    indexreader.setColumn(0)
                    indexreader.setRow(vals[1])
                    oldval = indexreader.getData1i()
                    del indexreader
                    
                    #indexrewriter.setRow(vals[1])
                    #oldval = indexrewriter.getData1i()
                    
                    indexrewriter.setRow(vals[1])
                    indexrewriter.setData1i(vals[2])
                    self.pm_refinements[self.pm_index][op_index] = (op, vals[1], oldval)
                elif op == PM_OP.VERTEX_ADDITION:
                    numverts += 1
                    vertwriter.addData3f(vals[1], vals[2], vals[3])
                    normalwriter.addData3f(vals[4], vals[5], vals[6])
                    uvwriter.addData2f(vals[7], vals[8])
                
            self.pm_index += 1

        while self.pm_index > dest_index:
            self.pm_index -= 1
            for op_index in range(len(self.pm_refinements[self.pm_index])):
                vals = self.pm_refinements[self.pm_index][op_index]
                op = vals[0]
                if op == PM_OP.TRIANGLE_ADDITION:
                    nextTriangleIndex -= 3
                elif op == PM_OP.INDEX_UPDATE:
                    #TODO: ugly workaround for p3d 1.7 bug, change to below for 1.8
                    indexreader = GeomVertexReader(indexdata)
                    indexreader.setColumn(0)
                    indexreader.setRow(vals[1])
                    oldval = indexreader.getData1i()
                    del indexreader
                    
                    #indexrewriter.setRow(vals[1])
                    #oldval = indexrewriter.getData1i()
                    
                    indexrewriter.setRow(vals[1])
                    indexrewriter.setData1i(vals[2])
                    self.pm_refinements[self.pm_index][op_index] = (op, vals[1], oldval)
                elif op == PM_OP.VERTEX_ADDITION:
                    numverts -= 1

        if nextTriangleIndex < indexdata.getNumRows():
            indexdata.setNumRows(nextTriangleIndex)
        if numverts < vertdata.getNumRows():
            vertdata.setNumRows(numverts)