def __init__(self, game, playMusic=True): self.mGame = game Pgl.app.setUpdaterate(int(Updaterate.FAST)) pygame.mouse.set_visible(False) if playMusic: SoundManager.getInstance().playMenuMusic() #set input & camera self.mGame.input = MenuInput(self) self.mCamera = Camera(Pgl.width, Pgl.height) self.modelsize = self.mCamera.getModelCoords(b2Vec2(Pgl.width, Pgl.height)) #fonts self.screenFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 3.0) self.titleFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 2.0) self.infoFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x / 2) #graphics self.arrow = Sprite(Resources.getInstance().mArrow) self.arrow.setSize(self.mCamera.getScaledSize((self.arrow.getWidth()/float(self.arrow.getHeight())) * 0.5, 0.5)) self.menubutton = Animation(Resources.getInstance().mMenuButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False) self.levelbutton = Animation(Resources.getInstance().mLevelButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False) self.checkbutton = Animation(Resources.getInstance().mCheckButton, 2, 1, 0, self.mCamera.getScaledSize(1, 1), False, False) self.lock = Sprite(Resources.getInstance().mLock) self.lock.setSize(self.mCamera.getScaledSize((self.lock.getWidth()/float(self.lock.getHeight())) * 0.2, 0.2))
def __init__(self, game): super(EndScreen, self).__init__(game, False) SoundManager.getInstance().playEndMusic() #fonts self.textFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 0.6) self.headerFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x) self.titleFont = Resources.getInstance().getScaledFont(self.mCamera.scale.x * 2.0) self.modelsize = self.mCamera.getModelCoords(b2Vec2(Pgl.width, Pgl.height)) self.mDone = False self.mTimer = 0 texts = [ [self.titleFont, (200,160,160), "pxlgrvty", 0], [self.headerFont, (170,170,170), "Programming:", 25], [self.textFont, (255,255,255), "Rickard Hansson", 0], [self.headerFont, (170,170,170), "Graphics:", 25], [self.textFont, (255,255,255), "Rickard Hansson", 0], [self.headerFont, (170,170,170), "Audio/FX:", 25], [self.textFont, (255,255,255), "Rickard Hansson", 0], [self.headerFont, (170,170,170), "Music:", 25], [self.textFont, (255,255,255), "anamanaguchi - helix nebula", 0], [self.textFont, (255,255,255), "anamanaguchi - video challenge", 0], [self.textFont, (255,255,255), "electric children - spring retrospective", 0], [self.textFont, (255,255,255), "teknoaxe - chiptune does dubstep", 0], [self.textFont, (255,255,255), "roccow - chipho instrumental", 0], [self.textFont, (255,255,255), "sycamore drive - kicks", 0]] self.titlepos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x / 2.0, self.modelsize.y)) self.text = Text(texts, self.titlepos, 1, Pgl.app.surface) self.endtext = self.headerFont.render("thanks for playing!", 1, (170,170,170)) self.endsize = self.headerFont.size("thanks for playeing!") self.endpos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x/2.0, self.modelsize.y/2.0))
def update(self, delta): if not self.mDone: if self.text.mPos.y + self.text.height > 0: self.text.mPos.y -= self.mCamera.scale.y * delta / 2.0 else: self.mDone = True else: if self.mTimer == 0: SoundManager.getInstance().fadeout(4800) self.mTimer += delta if self.mTimer >= 5: self.mGame.setScreen(screen.MenuScreen.MenuScreen(self.mGame))
def update(self, delta): self.mTimer += delta #step the physicsworld self.physWorld.Step(delta, self.vel_iters, self.pos_iters) self.physWorld.ClearForces() for body in self.physWorld.bodies: #dynamic body if body.type == b2_dynamicBody: if self.mFirstUpdate: if isinstance(body.userData, Player): self.dynamic_enities.append(body) # body.userData.update(delta) if isinstance(body.userData, Player): body.userData.update(delta) elif isinstance(body.userData, Enemy): body.userData.update(delta) elif isinstance(body.userData, PickableObject): body.userData.update(delta) elif isinstance(body.userData, Particle): body.userData.update(delta) if self.mFirstUpdate == True: self.mFirstUpdate = False #update level, if level is done, returns true if self.level.update(delta, self.player.position): self.mLevelDone = True #is player dead? if not self.player.alive: if self.mSwitch: SoundManager.getInstance().playSound(SoundID.FLESHEXPLOSION) self.mFxObs.addFx(BloodSplatter(self.physWorld, self.gravity.get(), self.player.position)) self.mSwitch = False self.player.stopMovement() self.mDeathTimer -= delta if self.mDeathTimer < 0: self.level.retryLevel() self.__resetWorld()
def __init__(self, game, lvl): Pgl.app.setUpdaterate(Pgl.options.updaterate) pygame.mouse.set_visible(False) SoundManager.getInstance().playMusic(random.randrange(1, SoundManager.getInstance().NUMBER_OF_SONGS + 1)) self.mGame = game self.mCamera = Camera(Pgl.width, Pgl.height) #observer self.mLuObs = LevelupdateObserver() self.mFxObs = FXObserver() #gameworld and its renderer self.mWorld = WorldModel(self.mCamera, self.mLuObs, self.mFxObs, lvl) self.mWorldRender = WorldRender(self.mWorld, self.mCamera) #add listeners self.mLuObs.addListener(self.mWorldRender) self.mFxObs.addListener(self.mWorldRender) #input self.mGame.input = Input(self, self.mWorld, self.mCamera)
def jump(self): if self.mOnGround: SoundManager.getInstance().playSound(SoundID.JUMP) self.mJumping = True
def __init__(self, game): super(OptionScreen, self).__init__(game) self.mMenuItems = [] self.mMenuItems.append(Button("back", 0.5, 8.5, b2Vec2(2,1), lambda:self.goBack())) self.mMenuItems.append(Button("apply", 13.5, 8.5, b2Vec2(2,1), lambda:self.__applyOptions())) self.mMenuItems.append(Button("defaults", 11, 8.5, b2Vec2(2,1), lambda:self.__defaultOptions())) self.mMenuItems.append(CheckButton("fullscreen on/off", 7, 3.5, b2Vec2(0.5,0.5), Pgl.options.fullscreen, lambda x: Pgl.options.setFullscreen(x))) self.mMenuItems.append(CheckButton("music on/off", 7, 4, b2Vec2(0.5,0.5), Pgl.options.music, lambda x: Pgl.options.setMusic(x), [lambda x: SoundManager.getInstance().pauseMusic(x)])) self.mMenuItems.append(CheckButton("sound on/off", 7, 4.5, b2Vec2(0.5,0.5), Pgl.options.sound, lambda x: Pgl.options.setSound(x))) self.mResolutionList = ListCreator(2, 8, 3.5, b2Vec2(3,0.5), self.__getResolutionList(), Pgl.options.resolution) self.mUpdaterate = ChoiceWidget("updaterate:", 4, 6.5, [Updaterate.SLOW, Updaterate.MEDIUM, Updaterate.FAST], Updaterate.convertSpeedToInt(Pgl.options.updaterate), lambda x: Pgl.options.setUpdaterate(Updaterate.convertIntToSpeed(x))) self.mMusicVolume = Volume("Music volume:", 7, 6.5, Pgl.options.musicvolume, lambda x: Pgl.options.setMusicVolume(x), [lambda:SoundManager.getInstance().changeMusicVolume()]) self.mSoundVolume = Volume("Sound volume:", 10, 6.5, Pgl.options.soundvolume, lambda x: Pgl.options.setSoundVolume(x), [lambda:SoundManager.getInstance().playSound(SoundID.JUMP)]) self.mMenuItems.extend(self.mMusicVolume.mVolumeItems) self.mMenuItems.extend(self.mSoundVolume.mVolumeItems) self.mMenuItems.extend(self.mResolutionList.mListItem) self.mMenuItems.extend(self.mUpdaterate.mWidgedItems) #title self.title = self.titleFont.render("options", 0, (255,255,255)) self.size = self.titleFont.size("options") self.titlepos = self.mCamera.getViewCoords(b2Vec2(self.modelsize.x / 2.0, self.modelsize.y / 6))
def update(self, delta): if not self.alive: SoundManager.getInstance().playSound(SoundID.PICKUP) self.mWorld.DestroyBody(self.mBody)
def checkEvent(self, event): if event.type == pygame.QUIT: Pgl.app.stop() elif event.type == pygame.USEREVENT: SoundManager.getInstance().stopMusic() SoundManager.getInstance().playMusic(SoundManager.getInstance().CURRENTSONG+1)