Exemple #1
0
 def clear(self,fadeout = 0,bgfile = None):
     self.clearQuickItems()
     
     if not fadeout:
         self.itemEntries.clear()
         self.reload()
     else:
         dr = self.camera.node().getDisplayRegion(0)
         texture = dr.getScreenshot()
        
         w = dr.getPixelWidth()
         h = dr.getPixelHeight()
                     
         self.itemEntries.clear()
         self.reload()
         
         if bgfile:
             bgentry = StoryViewItemEntry(fileName = bgfile,key = '__bg__',category = SVIC.BG)
             self.newItem(bgentry)
         
         tempbg = OnscreenImage(texture)
         if w > h:
             tempbg.setScale(1*w/float(h),1,1)
         else: tempbg.setScale(1,1,1*h/float(w))
         tempbg.setColor(1,1,1,1)
         tempbg.reparentTo(self.bgNodePath)
         tempbg.setName('__tempbg__')
         
         li = LerpColorInterval(tempbg, fadeout, (1,1,1,0), (1,1,1,1),blendType = 'easeInOut' ) 
         self._intervals.append(li)
         li.start()
Exemple #2
0
 def switchToChapter(self, chapterName):
     switchTo = Sequence(
         LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,1), (0,0,0,0)),
         Func(self.chapter.destroy),
         Func(self.setChapter, chapterName),
         Func(self.setStarPos),
         LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,0)),
     )
     switchTo.start()
Exemple #3
0
 def changePosColorScale(self,key,pos = None,color = None, scale = None,time = 0):
     '''Change an item's position, color, and/or scale. 
     params should be lists having a length of 3 (pos, scale) or 4 (color) floats
     '''
     if pos:
         self.itemEntries[key].pos = pos
         if not time:
             self._sceneItems[key].setPos(pos)
         else:
             ival = LerpPosInterval(self._sceneItems[key],time,pos,self._sceneItems[key].getPos())
             self._intervals.append(ival)
             ival.start()
     if color:
         self.itemEntries[key].color = color
         if not time:
             self._sceneItems[key].setColor(color)
         else:
             ival = LerpColorInterval(self._sceneItems[key],time,color,self._sceneItems[key].getColor())
             self._intervals.append(ival)
             ival.start()
     if scale:
         self.itemEntries[key].scale = scale
         if not time:
             self._sceneItems[key].setScale(self._sceneItems[key].getSx()*scale[0],
                                            self._sceneItems[key].getSy()*scale[1],
                                            self._sceneItems[key].getSz()*scale[2])
         else:
             targetscale = (self._sceneItems[key].getSx()*scale[0],
                            self._sceneItems[key].getSy()*scale[1],
                            self._sceneItems[key].getSz()*scale[2])
             ival = LerpScaleInterval(self._sceneItems[key],time,targetscale,self._sceneItems[key].getScale())
             self._intervals.append(ival)
             ival.start()
Exemple #4
0
    def __init__(self):
        GameScreen.__init__(self)

        self.btnContinue.hide()

        self.mainChar = Character(self.frmContent.getCanvas(), (0,0,0), "mainChar", "mike")
        self.mainChar.animate("idle", "l", 3)
        self.mainChar.btn.reparentTo(self.frmContent.getCanvas(), 100)

        self.chapter = None
        self.inventory = Inventory(self.frmInventory)

        self.accept("quitGame", self.askQuit)
        self.accept("toggleAudio", self.toggleAudio)
        self.accept("switchToChapter", self.switchToChapter)
        self.accept("showText", self.showText)
        self.accept("showNote", self.showNote)
        self.accept("addInventory", self.addInventory)
        self.accept("getInventory", self.getInventory)
        self.accept("moveChar", self.mainChar.moveTo)
        self.accept("stopChar", self.mainChar.stop)
        self.accept("animateChar", self.mainChar.animate)

        if base.AppHasAudioFocus:
            self.btnAudioToggle["text"] = "Audio On"
        else:
            self.btnAudioToggle["text"] = "Audio Off"

        self.chapter = levelTree["chapter1"](self.frmContent.getCanvas())
        self.mainChar.btn.setPos(self.chapter.startPos)
        LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,0)).start()
Exemple #5
0
 def fade_screen(self, time=1.5, color=(0, 0, 0)):
     '''Turns the screen to 'color' then fades the color away in 'time' seconds'''
     startColor = self.fade_quad.get_color()
     if startColor[3] == 0.0:
         Sequence(
             Func(self.fade_quad.show),
             LerpColorInterval(nodePath=self.fade_quad,
                               duration=time,
                               color=(color[0], color[1], color[2], 1),
                               startColor=startColor),
         ).start()
     else:
         Sequence(
             Func(self.fade_quad.show),
             Wait(time * 0.1),
             LerpColorInterval(nodePath=self.fade_quad,
                               duration=time * 0.9,
                               color=(color[0], color[1], color[2], 0),
                               startColor=startColor,
                               blendType='easeIn'),
             Func(self.fade_quad.hide),
         ).start()
Exemple #6
0
 def fade(self, time=1.5):
     '''Turns rhe screen black then fades the black away in 'time' seconds'''
     startColor = self.black_quad.get_color()
     if startColor[3] == 0.0:
         Sequence(
             Func(self.black_quad.show),
             LerpColorInterval(nodePath=self.black_quad,
                               duration=time,
                               color=(0, 0, 0, 1),
                               startColor=startColor),
         ).start()
     else:
         Sequence(
             Func(self.black_quad.show),
             Wait(time * 0.1),
             LerpColorInterval(nodePath=self.black_quad,
                               duration=time * 0.9,
                               color=(0, 0, 0, 0),
                               startColor=startColor,
                               blendType='easeIn'),
             Func(self.black_quad.hide),
         ).start()
Exemple #7
0
 def deleteItem(self,key,fadeout = 0):
     '''Delete an item from StoryView'''
     if not fadeout:
         self.itemEntries.pop(key)
         node = self._sceneItems.pop(key)
         node.removeNode()
         
     else:    #if it has a fade-out effect then add fade-out intervals
         self.itemEntries.pop(key) 
         item = self._sceneItems.pop(key)
         item.setName('removing_'+item.getName())
         color = item.getColor()
         sequcnce = Sequence(LerpColorInterval(item, fadeout, (color[0],color[1],color[2],0), color),
                                         Func(self.__deletefromScene,item),
                                         )
         self._intervals.append(sequcnce)
         sequcnce.start()
Exemple #8
0
    def _createItem(self, entry, ignore_fadein = False):
        '''Create an item(not including adding this to itemEntries)'''
        imagepathes = runtime_data.game_settings['imagepathes']
        imagetypes = runtime_data.game_settings['imagetypes']
        modelpathes = runtime_data.game_settings['modelpathes']
        modeltypes = runtime_data.game_settings['modeltypes']
        
        if self._sceneItems.has_key(entry.key):
            self._sceneItems[entry.key].removeNode()
            self._sceneItems.pop(entry.key)
        item = None
        if entry.category == SVIC.FG or entry.category == SVIC.BG or entry.category == SVIC.O2D:

            
            texture = None
            for ft in ((folder,type) for folder in imagepathes for type in imagetypes):
                if exists(ft[0] + entry.fileName + ft[1]):
                    texture = loader.loadTexture(ft[0] + entry.fileName + ft[1])
                    break
            
                
            '''Alternative
            item = loader.loadModel(r"models/plain.egg")
            item.setTexture(texture, 1)
            '''
            item = OnscreenImage(texture)
            
            item.setPos(entry.pos[0],entry.pos[1],entry.pos[2])
            item.setScale(entry.scale[0]*texture.getOrigFileXSize()/float(texture.getOrigFileYSize()),entry.scale[1],entry.scale[2])  #Always make its height fill the screen normally
            color = (entry.color[0],entry.color[1],entry.color[2],entry.color[3])
            if entry.fadein:
                lv = LerpColorInterval(item, entry.fadein, color, (color[0],color[1],color[2],0) ) 
                self._intervals.append(lv)
                lv.start()
            else: item.setColor(color)
            item.setName(entry.key)
            
            if entry.category == SVIC.FG:
                item.reparentTo(self.fgNodePath)
            elif entry.category == SVIC.BG:
                item.reparentTo(self.bgNodePath)
            elif entry.category == SVIC.O2D:
                item.reparentTo(self.vNodePath)
            
        elif entry.category == SVIC.AFG:
            item = None
            for ft in ((folder,type) for folder in imagepathes for type in modeltypes):
                if exists(ft[0] + entry.fileName + ft[1]):
                    item = loader.loadModel(ft[0] + entry.fileName + ft[1])
                    break
            if not item:  item = loader.loadModel(entry.fileName)
            item.setPos(entry.pos[0],entry.pos[1],entry.pos[2])
            item.setScale(entry.scale)  #For generated egg animation with "egg-texture-cards" is a 1x1 rectangle by default
            color = (entry.color[0],entry.color[1],entry.color[2],entry.color[3])
            if entry.fadein:
                lv = LerpColorInterval(item, entry.fadein, color, (color[0],color[1],color[2],0) ) 
                self._intervals.append(lv)
                lv.start()
            else: item.setColor(color)
            item.setTransparency(1)
            item.setName(entry.key)
            item.reparentTo(self.fgNodePath)
            #item.setBin("unsorted", 0)

            
        elif entry.category == SVIC.O3D:
            item = None
            for ft in ((folder,type) for folder in modelpathes for type in modeltypes):
                if exists(ft[0] + entry.fileName + ft[1]):
                    item = loader.loadModel(ft[0] + entry.fileName + ft[1])
                    break
            if not item:  item = loader.loadModel(entry.fileName)
            item.setPos(entry.pos[0],entry.pos[1],entry.pos[2])
            item.setScale(entry.scale)  #For generated egg animation with "egg-texture-cards" is a 1x1 rectangle by default
            color = (entry.color[0],entry.color[1],entry.color[2],entry.color[3])
            if entry.fadein:
                lv = LerpColorInterval(item, entry.fadein, color, (color[0],color[1],color[2],0) ) 
                self._intervals.append(lv)
                lv.start()
            else: item.setColor(color)
            item.setTransparency(1)
            item.setName(entry.key)
            item.reparentTo(self.vNodePath)
  
        if item:
            self._sceneItems[entry.key] = item
            if entry.quickitem:
                self._quickitems.append(entry.key) 
Exemple #9
0
 def iconDisappear(self, icon, effectColor):
     LerpColorInterval(icon,0.2,color=(effectColor[0],effectColor[1],effectColor[2],0), 
                     startColor= (effectColor[0],effectColor[1],effectColor[2],1)).start()