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()
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()
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()
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()
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()
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()
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()
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)
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()