class trueAnimScene(Scene): def __init__(self, *args): super(trueAnimScene, self).__init__(*args) self.allFilesName = list() self.path = 'F:\\图片\\ACG\\pix\\' self.length = 0 self.index = -1 # self.img = pygame.image.load(self.path + '0.jpg') self.img = ImgElement((0, 0, 1280, 720), self.path + 'Banshee_Queen_Mercy_1.jpg') self.allImg = list() def setup(self): for name in os.listdir(self.path): self.allImg.append(ImgElement((0, 0, 1280, 720), self.path + name)) # self.allFilesName.append(self.path + name) self.length = len(self.allImg) def doClockEvent(self, NowClock): self.index += 1 if self.index >= self.length: self.index = 0 self.img = self.allImg[self.index] # self.img.setPath(self.allFilesName[self.index]) print(self.FPS) def draw(self): self.img.draw(self.screen)
def __init__(self, *args): super(trueAnimScene, self).__init__(*args) self.allFilesName = list() self.path = 'F:\\图片\\ACG\\pix\\' self.length = 0 self.index = -1 # self.img = pygame.image.load(self.path + '0.jpg') self.img = ImgElement((0, 0, 1280, 720), self.path + 'Banshee_Queen_Mercy_1.jpg') self.allImg = list()
def __init__(self, *args): super(OriginLogo, self).__init__(*args) # 注册与该场景相关的场景 from source.config.AppConfig import registerScene registerScene(101, OriginTitle) self.nextSceneNum = 101 self.resPath = {'logoText1': 'logo.jpg', 'logoText2': 'logo2.jpg'} self.bgSurface = blankSurface((self.width, self.height)) self.__ele_Logo1 = ImgElement((centeredXPos(self.width, 211), centeredYPos(self.height, 27) - 20, 211, 27), g_resPath + self.resPath['logoText1']) self.__ele_Logo2 = ImgElement((centeredXPos(self.width, 444), centeredYPos(self.height, 35) - 20, 444, 35), g_resPath + self.resPath['logoText2']) self.__ele_Logo2.visual = False self.__beginTime = 0 self.__nextTime = 0 self.__nowTime = 0
def __init__(self, *args): super(pickTest, self).__init__(*args) self.__flag_isEnter = False self.__alpha = 0 self.__flag_recordStartTime = False self.__start_time = 0 self.__now_time = 0 self.res_Img_BG_Name = 'OPT_BG.bmp' self.res_Sound_Choose_Name = 'OPT_C.wav' self.res_UI_RightButton = 'OPT_BR.png' self.res_UI_LeftButton = 'OPT_BL.png' self.__Clock = pygame.time.Clock() self.__KV_AA = {} self.__KV_WAVE = {} self.__ElementsMap = {} if self.config.getTextAntiAlias(): self.__KV_AA['key'] = '开' self.__KV_AA['val'] = '1' else: self.__KV_AA['key'] = '关' self.__KV_AA['val'] = '0' self.res_Sound_Choose = pygame.mixer.Sound(gl_SoundPath + self.res_Sound_Choose_Name) self.res_Sound_Choose.set_volume(self.config.getVolumeSound()) self.res_Img_BG = pygame.image.load(gl_ImgPath + self.res_Img_BG_Name) self.__E_BGBlankL1 = OptButtonElement((40, 60, 200, 40), (255, 255, 255, 100)) self.__E_BGBlankL2 = OptButtonElement((40, 110, 200, 40), (255, 255, 255, 100)) self.__E_BGBlankL3 = OptButtonElement((40, 160, 200, 40), (255, 255, 255, 100)) self.__E_BGBlankLRet = OptButtonElement((50, 520, 80, 40), (255, 255, 255, 100)) self.__E_BGBlankLApply = OptButtonElement((150, 520, 80, 40), (255, 255, 255, 100)) self.__E_BGBlankR = TitleConstElement( (260, 60, 510, 500), blankSurface((510, 500), (255, 255, 255, 100))) self.__E_Text_Apply = TextElement( (centeredXPos(80, 40, 150), centeredYPos(40, 20, 520), 120, 20), '应用', gl_Font_opt, 20, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Apply.zIndex = 1 self.__E_Text_Ret = TextElement( (centeredXPos(80, 40, 50), centeredYPos(40, 20, 520), 120, 20), '返回', gl_Font_opt, 20, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Ret.zIndex = 1 self.__E_Text_Draw = TextElement( (centeredXPos(200, 80, 40), centeredYPos(40, 20, 60), 80, 20), '画面设置', gl_Font_opt, 20, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Draw.zIndex = 1 self.__E_Text_AntiAlias = TextElement((270, 70, 120, 20), '抗锯齿:', gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_AntiAlias.zIndex = 1 self.__E_Text_AA_Val = TextElement( (670, 70, 20, 20), self.__KV_AA['key'], gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_AA_Val.zIndex = 1 self.__E_UI_AA_RightButton = OptUIElement( (700, 70, 20, 20), gl_UIPath + self.res_UI_RightButton) self.__E_UI_AA_RightButton.zIndex = 1 self.__E_UI_AA_LeftButton = OptUIElement( (640, 70, 20, 20), gl_UIPath + self.res_UI_LeftButton) self.__E_UI_AA_LeftButton.zIndex = 1 self.__E_Text_Wave = TextElement( (centeredXPos(200, 80, 40), centeredYPos(40, 20, 110), 80, 20), '声音设置', gl_Font_opt, 20, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Wave.zIndex = 1 self.__E_Text_BGMVolume = TextElement((270, 70, 120, 20), '音乐音量:', gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_BGMVolume.zIndex = 1 self.__E_Text_BGM_Val = TextElement((660, 70, 30, 20), str(self.config.VolumeBGM), gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_BGM_Val.zIndex = 1 self.__E_UI_BGM_RightButton = OptUIElement( (700, 70, 20, 20), gl_UIPath + self.res_UI_RightButton) self.__E_UI_BGM_RightButton.zIndex = 1 self.__E_UI_BGM_LeftButton = OptUIElement( (630, 70, 20, 20), gl_UIPath + self.res_UI_LeftButton) self.__E_UI_BGM_LeftButton.zIndex = 1 self.__E_Text_SoundVolume = TextElement((270, 100, 120, 20), '音效音量:', gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_SoundVolume.zIndex = 1 self.__E_Text_Sou_Val = TextElement((660, 100, 30, 20), str(self.config.VolumeSound), gl_Font_opt, 18, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Sou_Val.zIndex = 1 self.__E_UI_Sou_RightButton = OptUIElement( (700, 100, 20, 20), gl_UIPath + self.res_UI_RightButton) self.__E_UI_Sou_RightButton.zIndex = 1 self.__E_UI_Sou_LeftButton = OptUIElement( (630, 100, 20, 20), gl_UIPath + self.res_UI_LeftButton) self.__E_UI_Sou_LeftButton.zIndex = 1 self.__E_Text_Licence = TextElement( (centeredXPos(200, 120, 40), centeredYPos(40, 20, 160), 120, 20), '开源软件许可', gl_Font_opt, 20, (0, 0, 0), self.config.getTextAntiAlias()) self.__E_Text_Licence.zIndex = 1 self.__E_Img_Licence = ImgElement(self.__E_BGBlankR.area, gl_ImgPath + 'OPT_L.lice', 255, (128, 128, 128)) self.__E_Img_Licence.zIndex = 1 # 画面设置绑定事件 self.__E_BGBlankL1.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: ChePos(self.__E_Text_Draw, True), 1) self.__E_BGBlankL1.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: self.__rebuildElementsToList2([ self.__E_Text_AntiAlias, self.__E_Text_AA_Val, self. __E_UI_AA_RightButton, self.__E_UI_AA_LeftButton ]), 2) self.__E_BGBlankL1.Events.appendEvent( ioEvent3Enum.mouseLeftKeyUp, lambda: ChePos(self.__E_Text_Draw, False), 1) # 声音设置绑定事件 self.__E_BGBlankL2.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: ChePos(self.__E_Text_Wave, True), 1) self.__E_BGBlankL2.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: self.__rebuildElementsToList2([ self.__E_Text_BGMVolume, self.__E_Text_SoundVolume, self. __E_Text_BGM_Val, self.__E_Text_Sou_Val, self. __E_UI_BGM_RightButton, self.__E_UI_BGM_LeftButton, self. __E_UI_Sou_RightButton, self.__E_UI_Sou_LeftButton ]), 2) self.__E_BGBlankL2.Events.appendEvent( ioEvent3Enum.mouseLeftKeyUp, lambda: ChePos(self.__E_Text_Wave, False), 1) # 开源软件许可按钮绑定事件 self.__E_BGBlankL3.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: ChePos(self.__E_Text_Licence, True), 1) self.__E_BGBlankL3.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: self.__rebuildElementsToList2([self.__E_Img_Licence]), 2) self.__E_BGBlankL3.Events.appendEvent( ioEvent3Enum.mouseLeftKeyUp, lambda: ChePos(self.__E_Text_Licence, False), 1) # 应用按钮绑定事件 self.__E_BGBlankLApply.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: ChePos(self.__E_Text_Apply, True), 1) self.__E_BGBlankLApply.Events.appendEvent( ioEvent3Enum.mouseLeftKeyUp, lambda: ChePos(self.__E_Text_Apply, False), 1) self.__E_BGBlankLApply.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__retSignalIsReadyToEnd(SCENENUM_OPT_APPLY), 1) self.__E_BGBlankLApply.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__updConfig(), 2) # 返回按钮绑定事件 self.__E_BGBlankLRet.Events.appendEvent( ioEvent3Enum.mouseLeftKeyDown, lambda: ChePos(self.__E_Text_Ret, True), 1) self.__E_BGBlankLRet.Events.appendEvent( ioEvent3Enum.mouseLeftKeyUp, lambda: ChePos(self.__E_Text_Ret, False), 1) self.__E_BGBlankLRet.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__retSignalIsReadyToEnd(SCENENUM_TITLE), 1) # 抗锯齿UI按钮绑定事件 self.__E_UI_AA_LeftButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_AA_Txt(), 1) self.__E_UI_AA_RightButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_AA_Txt(), 1) # 改变音量UI按钮绑定事件 self.__E_UI_BGM_LeftButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_WaveParam_Txt( self.__E_Text_BGM_Val, False, GLC_INI_PARAM_BGMVOLUME), 1) self.__E_UI_BGM_RightButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_WaveParam_Txt( self.__E_Text_BGM_Val, True, GLC_INI_PARAM_BGMVOLUME), 1) self.__E_UI_Sou_LeftButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_WaveParam_Txt( self.__E_Text_Sou_Val, False, GLC_INI_PARAM_SOUNDVOLUME), 1) self.__E_UI_Sou_RightButton.Events.appendEvent( ioEvent3Enum.mouseLeftKeyClick, lambda: self.__chVal_WaveParam_Txt( self.__E_Text_Sou_Val, True, GLC_INI_PARAM_SOUNDVOLUME), 1) self.__ElementsMap['Draw1'] = [ self.__E_BGBlankL1, self.__E_BGBlankL2, self.__E_BGBlankL3, self.__E_BGBlankR, self.__E_Text_Draw, self.__E_Text_Wave, self.__E_Text_Licence, self.__E_BGBlankLApply, self.__E_Text_Apply, self.__E_BGBlankLRet, self.__E_Text_Ret ] self.__ElementsMap['Draw2'] = [ self.__E_Text_AntiAlias, self.__E_Text_AA_Val, self.__E_UI_AA_RightButton, self.__E_UI_AA_LeftButton ] self.__ElementsMap['Interact1'] = [ self.__E_BGBlankL1, self.__E_BGBlankL2, self.__E_BGBlankL3, self.__E_BGBlankLApply, self.__E_BGBlankLRet ] self.__ElementsMap['Interact2'] = [ self.__E_UI_AA_RightButton, self.__E_UI_AA_LeftButton ] self.__ElementsMap[ 'Draw'] = self.__ElementsMap['Draw1'] + self.__ElementsMap['Draw2'] self.__ElementsMap['Interact'] = self.__ElementsMap[ 'Interact1'] + self.__ElementsMap['Interact2'] self.render.add(self.__ElementsMap['Draw1']) self.render.add(self.__ElementsMap['Interact']) self.render.close() # 设定渲染参数 self.__step = 4 self.__frameRate = self.config.getFrameRate() if self.__frameRate: self.__step = 255 / (1.5 * self.__frameRate)
def setup(self): for name in os.listdir(self.path): self.allImg.append(ImgElement((0, 0, 1280, 720), self.path + name)) # self.allFilesName.append(self.path + name) self.length = len(self.allImg)
def __init__(self, *args): # 注册场景 super().__init__(*args) self.useDefaultDraw = False from source.config.AppConfig import registerScene registerScene(SCENENUM_GAME_PROLOGUE, Title_PrologueScene) registerScene(SCENENUM_OPT, OptionScene) registerScene(SCENENUM_CONTINUE, Continue_Scene) self.alpha = 0 self.flag = False self.isMusicPlay = False self.wave_bgm = 'titleBackground.wav' self.titleBgName = 'titleBg.bmp' self.titleOptionName = 'titleOpts.bmp' self.titleName = 'titleTop.bmp' self.__res_s_cloud = 'T_S_C.png' self.__ast_name = 'I_T.assets' self.res_wave_bgm = pygame.mixer.Sound(gl_MusicPath + self.wave_bgm) self.res_wave_bgm.set_volume(self.config.getVolumeBGM()) self.bg = pygame.image.load(gl_ImgPath + self.titleBgName) self.res_optionNewGame = pygame.image.load(gl_ImgPath + self.titleOptionName) self.res_title = pygame.image.load(gl_ImgPath + self.titleName) self.__frameRate = self.config.getFrameRate() self.__expBoardText = AssetsFile(os.path.join(gl_AssetsPath, 'TitleScene')).decode( self.__ast_name, AssetsType.EXP) # 创建相应的Element self.__board = TitleConstElement((gl_WindowWidth - 380, gl_WindowHeight - 80, 380, 80), blankSurface((380, 180), (255, 255, 255, 100))) self.__title = TitleConstElement((0, 0, 465, 74), clipResImg(self.res_title, (0, 0, 465, 74), (0, 0, 0))) self.__text = TextElement((gl_WindowWidth - 380, gl_WindowHeight - 80, 380, 80), self.__expBoardText[0], gl_Font, 16, (0, 0, 0), self.config.getTextAntiAlias()) self.__optNewGame = TitleOptElement((140, 140, 116, 30), self.res_optionNewGame, (0, 0, 116, 30), (128, 128, 128)) self.__optContinue = TitleOptElement((125, 180, 116, 30), self.res_optionNewGame, (0, 116, 116, 30), (128, 128, 128)) self.__optOption = TitleOptElement((130, 220, 116, 30), self.res_optionNewGame, (0, 232, 116, 30), (128, 128, 128)) self.__optExit = TitleOptElement((135, 260, 61, 30), self.res_optionNewGame, (0, 348, 61, 30), (128, 128, 128)) self.__spriteCloud = ImgElement((801, -120, 750, 396), gl_ImgPath + self.__res_s_cloud) self.__spriteCloud.zIndex = -1 self.__step = 1 self.render.add(self.__board, self.__title, self.__text, self.__optNewGame, self.__optContinue, self.__optOption, self.__optExit) self.render.close() # 这里绑定和控件有交互的事件 # ---NewGame选项绑定事件--- self.__optNewGame.Events.appendEvent(ioEvent3Enum.mouseLeftKeyClick, lambda: self.__retSignalIsReadyToEnd(SCENENUM_GAME_PROLOGUE), 1) self.__optNewGame.Events.appendEvent(ioEvent3Enum.mouseIn, lambda: self.__changeBoardText(self.__expBoardText[1]), 1) self.__optNewGame.Events.appendEvent(ioEvent3Enum.mouseOut, lambda: self.__changeBoardText(self.__expBoardText[0]), 1) # ---Continue选项绑定事件--- self.__optContinue.Events.appendEvent(ioEvent3Enum.mouseLeftKeyClick, lambda: self.__retSignalIsReadyToEnd(SCENENUM_CONTINUE), 1) self.__optContinue.Events.appendEvent(ioEvent3Enum.mouseIn, lambda: self.__changeBoardText(self.__expBoardText[2]), 1) self.__optContinue.Events.appendEvent(ioEvent3Enum.mouseOut, lambda: self.__changeBoardText(self.__expBoardText[0]), 1) # ---Option选项绑定事件--- self.__optOption.Events.appendEvent(ioEvent3Enum.mouseLeftKeyClick, lambda: self.__retSignalIsReadyToEnd(SCENENUM_OPT), 1) self.__optOption.Events.appendEvent(ioEvent3Enum.mouseIn, lambda: self.__changeBoardText(self.__expBoardText[3]), 1) self.__optOption.Events.appendEvent(ioEvent3Enum.mouseOut, lambda: self.__changeBoardText(self.__expBoardText[0]), 1) # ---Exit选项绑定事件--- self.__optExit.Events.appendEvent(ioEvent3Enum.mouseIn, lambda: self.__changeBoardText(self.__expBoardText[4]), 1) self.__optExit.Events.appendEvent(ioEvent3Enum.mouseOut, lambda: self.__changeBoardText(self.__expBoardText[0]), 1) self.__optExit.Events.appendEvent(ioEvent3Enum.mouseLeftKeyClick, lambda: pygame.event.post(pygame.event.Event(12)), 1) # 渲染参数 self.__step_in = 2 self.__step_out = 5 if self.__frameRate != 0: self.__step_in = 255 / (2 * self.__frameRate) self.__step_out = 255 / (1.5 * self.__frameRate)
def __init__(self, *args): # 初始化场景参数 super().__init__(*args) # resource name self.res_Img1 = 'NG_F_SS_1.bmp' self.res_Img2 = 'NG_F_SS_2.bmp' self.Sound_PourWine = 'NG_F_SS_PW.wav' self.Sound_Cup = 'NG_F_SS_C.wav' self.Sound_Drink = 'NG_F_SS_D.wav' self.Sound_Weak = 'NG_F_SS_W.wav' self.Music_BGM = 'NG_F_SS_BGM.wav' # assets name self.__asf_name1 = 'T_P.assets' self.__asf_name2 = 'T_P_C.assets' # 注册场景 from source.config.AppConfig import registerScene registerScene(SCENENUM_GAME_STARTCG, Prologue_StartCGScene) # 音频 # pygame.mixer.music.load(gl_MusicPath + "TP_F_SS_BGM.mp3") self.res_Sound_PourWine = pygame.mixer.Sound(gl_SoundPath + self.Sound_PourWine) self.res_Sound_PourWine.set_volume(self.config.getVolumeSound()) self.res_Sound_Cup = pygame.mixer.Sound(gl_SoundPath + self.Sound_Cup) self.res_Sound_Cup.set_volume(self.config.getVolumeSound()) self.res_Sound_Drink = pygame.mixer.Sound(gl_SoundPath + self.Sound_Drink) self.res_Sound_Drink.set_volume(self.config.getVolumeSound()) self.res_Sound_Weak = pygame.mixer.Sound(gl_SoundPath + self.Sound_Weak) self.res_Sound_Weak.set_volume(self.config.getVolumeSound()) self.res_Music_BGM = pygame.mixer.Sound(gl_MusicPath + self.Music_BGM) self.res_Music_BGM.set_volume(self.config.getVolumeBGM()) # 其它元素 self.__assetsFile = AssetsFile(os.path.join(gl_AssetsPath, 'PrologueScene')) self.__TextList = self.__assetsFile.decode(self.__asf_name1, AssetsType.SUB) self.__DialogueList = self.__assetsFile.decode(self.__asf_name2, AssetsType.SUB) self.__TextShow = TextElement((200, 460, 270, 18), self.__TextList[0], gl_Font_oth, 16, (255, 255, 255), self.config.getTextAntiAlias()) self.__ImgShow = ImgElement((80, 0, 640, 480), gl_ImgPath + self.res_Img1) self.__DialogueShow = TextElement((0, 500, 430, 18), self.__DialogueList[0], gl_Font_oth, 16, (255, 255, 255), self.config.getTextAntiAlias()) # 注册元素 self.__ElementsList = [] # 设定渲染时的参数 self.__flag_Num = 0 self.__flag_BGMPlayed = False self.now_time, self.interval = None, None self.__TextShow_Interval, self.__DialogueShow_Interval = 5000, 6000 self.__alphaStep_Text, self.__alphaStep_Dia = 0, 0 self.__index, self.__alpha = 0, 0 self.__frameRate = self.config.getFrameRate() if self.__frameRate == 0: self.__alphaStep_Text = self.__TextShow_Interval / 1000 * 0.036 self.__alphaStep_Dia = self.__DialogueShow_Interval / 1000 * 0.416 else: self.__alphaStep_Text = 255 / (((self.__TextShow_Interval - 1500) / 1000) * self.__frameRate) self.__alphaStep_Dia = 255 / self.__frameRate
class Title_PrologueScene(Scene): def __init__(self, *args): # 初始化场景参数 super().__init__(*args) # resource name self.res_Img1 = 'NG_F_SS_1.bmp' self.res_Img2 = 'NG_F_SS_2.bmp' self.Sound_PourWine = 'NG_F_SS_PW.wav' self.Sound_Cup = 'NG_F_SS_C.wav' self.Sound_Drink = 'NG_F_SS_D.wav' self.Sound_Weak = 'NG_F_SS_W.wav' self.Music_BGM = 'NG_F_SS_BGM.wav' # assets name self.__asf_name1 = 'T_P.assets' self.__asf_name2 = 'T_P_C.assets' # 注册场景 from source.config.AppConfig import registerScene registerScene(SCENENUM_GAME_STARTCG, Prologue_StartCGScene) # 音频 # pygame.mixer.music.load(gl_MusicPath + "TP_F_SS_BGM.mp3") self.res_Sound_PourWine = pygame.mixer.Sound(gl_SoundPath + self.Sound_PourWine) self.res_Sound_PourWine.set_volume(self.config.getVolumeSound()) self.res_Sound_Cup = pygame.mixer.Sound(gl_SoundPath + self.Sound_Cup) self.res_Sound_Cup.set_volume(self.config.getVolumeSound()) self.res_Sound_Drink = pygame.mixer.Sound(gl_SoundPath + self.Sound_Drink) self.res_Sound_Drink.set_volume(self.config.getVolumeSound()) self.res_Sound_Weak = pygame.mixer.Sound(gl_SoundPath + self.Sound_Weak) self.res_Sound_Weak.set_volume(self.config.getVolumeSound()) self.res_Music_BGM = pygame.mixer.Sound(gl_MusicPath + self.Music_BGM) self.res_Music_BGM.set_volume(self.config.getVolumeBGM()) # 其它元素 self.__assetsFile = AssetsFile(os.path.join(gl_AssetsPath, 'PrologueScene')) self.__TextList = self.__assetsFile.decode(self.__asf_name1, AssetsType.SUB) self.__DialogueList = self.__assetsFile.decode(self.__asf_name2, AssetsType.SUB) self.__TextShow = TextElement((200, 460, 270, 18), self.__TextList[0], gl_Font_oth, 16, (255, 255, 255), self.config.getTextAntiAlias()) self.__ImgShow = ImgElement((80, 0, 640, 480), gl_ImgPath + self.res_Img1) self.__DialogueShow = TextElement((0, 500, 430, 18), self.__DialogueList[0], gl_Font_oth, 16, (255, 255, 255), self.config.getTextAntiAlias()) # 注册元素 self.__ElementsList = [] # 设定渲染时的参数 self.__flag_Num = 0 self.__flag_BGMPlayed = False self.now_time, self.interval = None, None self.__TextShow_Interval, self.__DialogueShow_Interval = 5000, 6000 self.__alphaStep_Text, self.__alphaStep_Dia = 0, 0 self.__index, self.__alpha = 0, 0 self.__frameRate = self.config.getFrameRate() if self.__frameRate == 0: self.__alphaStep_Text = self.__TextShow_Interval / 1000 * 0.036 self.__alphaStep_Dia = self.__DialogueShow_Interval / 1000 * 0.416 else: self.__alphaStep_Text = 255 / (((self.__TextShow_Interval - 1500) / 1000) * self.__frameRate) self.__alphaStep_Dia = 255 / self.__frameRate def draw(self): self.now_time = pygame.time.get_ticks() self.interval = self.now_time - self.startClock if not self.isReadyToEnd: if self.__flag_Num == 0: # if not pygame.mixer.music.get_busy(): # pygame.mixer.music.play() if self.interval > self.__TextShow_Interval: self.__alpha = 0 self.startClock = pygame.time.get_ticks() self.__index += 1 if self.__index >= len(self.__TextList): self.__index = 0 self.__flag_Num = 1 self.__alpha = 0 pygame.mixer.music.stop() self.__ElementsList = [self.__ImgShow, self.__DialogueShow] else: self.__TextShow.setText(self.__TextList[self.__index]) self.__alpha += self.__alphaStep_Text self.__TextShow.setAlpha(self.__alpha) self.screen.blit(self.__TextShow.res_surface, ( centeredXPos(self.screen.get_width(), len(self.__TextShow.Text) * self.__TextShow.Size), 400)) elif self.__flag_Num == 1: if not self.__flag_BGMPlayed: self.res_Music_BGM.play() self.__flag_BGMPlayed = True if self.__index == 0 or self.__index == 1: self.__alpha += self.__alphaStep_Dia self.__ImgShow.setAlpha(self.__alpha) self.__DialogueShow.setAlpha(self.__alpha - self.__alphaStep_Dia * self.__frameRate) if self.interval > self.__DialogueShow_Interval: self.__alpha = 0 self.startClock = pygame.time.get_ticks() self.__index += 1 if self.__index >= len(self.__DialogueList): self.res_Sound_Cup.play() time.sleep(1.4) self.isReadyToEnd = True else: self.__DialogueShow.setText(self.__DialogueList[self.__index]) if self.__index == 1: self.res_Sound_Weak.play() self.__ImgShow.setPath(gl_ImgPath + self.res_Img2) if self.__index == 2: self.res_Sound_Cup.play() if self.__index == 3: self.res_Sound_PourWine.play() if self.__index == 4: self.res_Sound_Drink.play() self.screen.blit(self.__ImgShow.res_surface, (self.__ImgShow.area.x, self.__ImgShow.area.y)) self.screen.blit(self.__DialogueShow.res_surface, ( centeredXPos(self.screen.get_width(), len(self.__DialogueShow.Text) * self.__DialogueShow.Size), self.__DialogueShow.area.y)) else: self.nextSceneNum = SCENENUM_GAME_STARTCG self.isEnd = True
def __init__(self, *args): super(OriginTitle, self).__init__(*args) self.__tempSurf = None self.resPath = {'bg_back': 'bg_back.jpg', 'bg_gear': 'bg_gear.png', 'bg_town': 'bg_town.png', 'bg_airship': 'bg_airship.png', 'bgm': 'bg_BGM.wav', 'bg_title': 'bg_title.png', 'bg_options': 'bg_options.bmp', 'bg_rive': 'bg_rive.png', 'bg_reflect': 'bg_reflect.jpg', 'bg_traveller': 'bg_traveller.png', 'bg_bridge': 'bg_bridge.png', 'bg_pen': 'bg_pen.png', 'bg_copyright': 'bg_copyright.png', 'bg_penBk': 'bg_pen_bk.png', 'bg_cursor': 'cursor.bmp'} self.__ele_mask = MaskElement((0, 0, self.width, self.height)) self.__bgGear_InitImg = pygame.image.load(g_resPath + self.resPath['bg_gear']) self.__spr_bgGear = GearSprite(self.__bgGear_InitImg, pygame.Rect(300, 100, 528, 528)) self.__spr_bgGear.zIndex = 10 self.__spr_airship0 = AirShipSprite(pygame.image.load(g_resPath + self.resPath['bg_airship']), pygame.Rect(250, 45, 166, 153)) self.__spr_airship1 = AirShipSprite(pygame.image.load(g_resPath + self.resPath['bg_airship']), pygame.Rect(100, 70, 83, 77)) self.__spr_airship1.vel = 2 self.__spr_airship2 = AirShipSprite(pygame.image.load(g_resPath + self.resPath['bg_airship']), pygame.Rect(180, 200, 33, 31)) self.__spr_airship2.vel = -1 self.__spr_traveller = TravellerSprite( pygame.image.load(g_resPath + self.resPath['bg_traveller']).convert_alpha(), pygame.Rect(540, 660, 93, 47)) self.__ele_bgTown = ImgElement((0, 0, 1280, 720), g_resPath + self.resPath['bg_town']) self.__ele_bgTown.zIndex = 20 self.__ele_bgBridge = ImgElement((612, self.height - 173, 247, 173), g_resPath + self.resPath['bg_bridge']) self.__ele_bgBridge.zIndex = 30 self.__ele_bgRive = ImgElement((0, 650, 1280, 70), g_resPath + self.resPath['bg_rive']) self.__ele_bgRive.zIndex = 18 self.__ele_bgReflect = ReflectElement((-250, 570, 1280, 184), g_resPath + self.resPath['bg_reflect'], 80) self.__ele_bgTitle = ImgElement((centeredXPos(1280, 450) + 40, 240, 450, 80), g_resPath + self.resPath['bg_title']) self.__ele_bgTitle.zIndex = 100 self.__ele_bgOptions = ImgElement((centeredXPos(self.width, 88), 320, 88, 109), g_resPath + self.resPath['bg_options']) # 选项与鼠标精灵################################################################################## self.__spr_currentOptList = [] self.__spr_currentOpt = None self.__spr_lastOpt = None self.__spr_option1 = OptionSprite(g_resPath + self.resPath['bg_options'], (centeredXPos(self.width, 88), 320, 91, 25), clipSize=(0, 0)) self.__spr_option1.Events.appendEvent(ioEvent3Enum.mouseLeftKeyUp, lambda: self.__clickOption('mouse_left_key_up: scene_title_option1\n'), 1) self.__spr_option2 = OptionSprite(g_resPath + self.resPath['bg_options'], (centeredXPos(self.width, 88), 350, 91, 25), clipSize=(30, 0)) self.__spr_option2.Events.appendEvent(ioEvent3Enum.mouseLeftKeyUp, lambda: self.__clickOption('mouse_left_key_up: scene_title_option2\n'), 1) self.__spr_option3 = OptionSprite(g_resPath + self.resPath['bg_options'], (centeredXPos(self.width, 88), 380, 91, 25), clipSize=(60, 0)) self.__spr_option3.Events.appendEvent(ioEvent3Enum.mouseLeftKeyUp, lambda: self.__clickOption('mouse_left_key_up: scene_title_option3\n'), 1) self.__spr_option4 = OptionSprite(g_resPath + self.resPath['bg_options'], (centeredXPos(self.width, 88), 410, 91, 25), clipSize=(90, 0)) self.__spr_option4.Events.appendEvent(ioEvent3Enum.mouseLeftKeyUp, lambda: self.__clickOption('mouse_left_key_up: scene_title_option4\n'), 1) self.__sprg_mouse_pot = SpriteGroup(self.screenRect, self.__spr_option1, self.__spr_option2, self.__spr_option3, self.__spr_option4) self.__ele_bgPenBk = ImgElement((-999, -999, 102, 5), g_resPath + self.resPath['bg_penBk']) self.__ele_bgPenBk.zIndex = 98 self.__ele_bgPen = PenElement((self.__ele_bgPenBk.area.x, self.__ele_bgPenBk.area.y, 12, 21), g_resPath + self.resPath['bg_pen']) self.__ele_bgCopyright = ImgElement((2, self.height - 22, 274, 18), g_resPath + self.resPath['bg_copyright']) self.__ele_bgCopyright.zIndex = 999 self.rot = 0 self.mixer.addSound('wave_bgm', g_resPath + self.resPath['bgm'])