class GameManager: def __init__(self): self.mHUD = HUD() self.actualLevel = 0 self.portalTiles = None self.cityTiles = None self.selectedTower = "" self.selectedSkill = "" mE.updateOnPause = ["Mouse", "Button","InfoTabBar", "SkillTimeStop"] self.playerWins = True pass def load(self): mE.setGlobalVariable("Money",10) mE.mGlobalVariables["EndGame"] = False self.loadAnimations() self.loadUI() self.loadMap() self.loadSounds() self.loadParticles() def loadParticles(self): mE.mParticleManager.addUpdateFunction(lImagesSlowParticle[0], lImagesSlowParticle[1], cascate , "cascate") #Explosions mE.mParticleManager.addUpdateFunction(lImagesCommonExplosion[0], lImagesCommonExplosion[1], explosion , "commonExplosion") mE.mParticleManager.addUpdateFunction(lImagesSlowParticle[0], lImagesSlowParticle[1], explosion , "slowExplosion") mE.mParticleManager.addUpdateFunction(lImagesPoisonParticle[0], lImagesPoisonParticle[1], explosion , "poisonExplosion") mE.mParticleManager.addUpdateFunction(lImagesFarmParticle[0], lImagesFarmParticle[1], explosion , "farmExplosion") mE.mParticleManager.addUpdateFunction(lImagesHealParticle[0], lImagesHealParticle[1], spin , "healParticle") mE.mParticleManager.addUpdateFunction(lImagesSmokeParticle[0], lImagesSmokeParticle[1], spin , "Smoke") mE.mParticleManager.addUpdateFunction(lImagesMeteorParticle[0], lImagesMeteorParticle[1], cascate , "MeteorCascate") def loadSounds(self): mE.mJukebox.LoadSong(levelSong, "LevelSong") mE.mJukebox.LoadSong(bossFight, "BossFight") mE.mJukebox.LoadSound(newTowerSound, "NewTower") mE.mJukebox.LoadSound(destructedTower, "TowerDown") mE.mJukebox.LoadSound(error, "Error") mE.mJukebox.LoadSound(damage, "Damage") mE.mJukebox.LoadSound(magic, "Magic") mE.mJukebox.LoadSound(teleport, "Teleport") mE.mJukebox.LoadSound(heart, "Heart") mE.mJukebox.LoadSound(heal, "Heal") mE.mJukebox.LoadSound(timeRunning, "TimeRunning") mE.mJukebox.LoadSound(alarmClock, "AlarmClock") mE.mJukebox.LoadSound(explosionSound, "Explosion") mE.mGlobalVariables["General"] = GeneralVoices() for monsterSound in lMonstersSounds: mE.mJukebox.LoadSound(monsterSound[0], monsterSound[1]) def loadAnimations(self): #Especial Tiles Animations mE.mAnimationManager.addAnimation(lImagesPortal[0], lImagesPortal[1], "Portal") mE.mAnimationManager.addAnimation(lImagesVillage[0], lImagesVillage[1], "Village") #Towers mE.mAnimationManager.addAnimation(lImagesSlowTower[0], lImagesSlowTower[1], "SlowTower") mE.mAnimationManager.addAnimation(lImagesDamageTower[0], lImagesDamageTower[1], "HitTower") mE.mAnimationManager.addAnimation(lImagesPoisonTower[0], lImagesPoisonTower[1], "PoisonTower") mE.mAnimationManager.addAnimation(lImagesFarmTower[0], lImagesFarmTower[1], "FarmTower") #Enemys Animation for mAni in lMonstersStats: mE.mAnimationManager.addAnimation(mAni["Animation"]["Up"][0], mAni["Animation"]["Up"][1], mAni["AnimationTag"]+"Up") mE.mAnimationManager.addAnimation(mAni["Animation"]["Down"][0], mAni["Animation"]["Down"][1], mAni["AnimationTag"]+"Down") mE.mAnimationManager.addAnimation(mAni["Animation"]["Left"][0], mAni["Animation"]["Left"][1], mAni["AnimationTag"]+"Left") mE.mAnimationManager.addAnimation(mAni["Animation"]["Right"][0], mAni["Animation"]["Right"][1], mAni["AnimationTag"]+"Right") mE.mAnimationManager.addAnimation(lImagesTombstone[0],lImagesTombstone[1], "Tombstone") #UI mE.mAnimationManager.addAnimation(lImagesMouse[0],lImagesMouse[1], "Mouse") mE.mAnimationManager.addAnimation(lImagesMouseHit[0],lImagesMouseHit[1], "MouseHit") mE.mAnimationManager.addAnimation(lImagesMouseSlow[0],lImagesMouseSlow[1], "MouseSlow") mE.mAnimationManager.addAnimation(lImagesMousePoison[0],lImagesMousePoison[1], "MousePoison") mE.mAnimationManager.addAnimation(lImagesMuteButtonOn[0],lImagesMuteButtonOn[1], "MuteButtonON") mE.mAnimationManager.addAnimation(lImagesMuteButtonOff[0],lImagesMuteButtonOff[1], "MuteButtonOFF") mE.mAnimationManager.addAnimation(lImagesTabBar[0],lImagesTabBar[1], "TabBar") mE.mAnimationManager.addAnimation(lImagesBottomBar[0],lImagesBottomBar[1], "BottomBar") mE.mAnimationManager.addAnimation(lImagesMoneyBar [0],lImagesMoneyBar[1], "MoneyUIBar") #Icons mE.mAnimationManager.addAnimation(lImagesSlowIcon[0], lImagesSlowIcon[1], "SlowIcon") mE.mAnimationManager.addAnimation(lImagesDamageIcon[0], lImagesDamageIcon[1], "DamageIcon") mE.mAnimationManager.addAnimation(lImagesPoisonIcon[0], lImagesPoisonIcon[1], "PoisonIcon") mE.mAnimationManager.addAnimation(lImagesFarmIcon[0], lImagesFarmIcon[1], "FarmIcon") mE.mAnimationManager.addAnimation(lImagesTimeStopIcon[0], lImagesTimeStopIcon[1], "TimeStopIcon") mE.mAnimationManager.addAnimation(lImagesHealIcon[0], lImagesHealIcon[1], "HealIcon") mE.mAnimationManager.addAnimation(lImagesFireBallIcon[0], lImagesFireBallIcon[1], "FireBallIcon") #HealthBars Enemysself.selectedSkill mE.mAnimationManager.addAnimation(lImagesHPBarEnemyS[0], lImagesHPBarEnemyS[1], "EnemyHealthBarStart") mE.mAnimationManager.addAnimation(lImagesHPBarEnemyE[0], lImagesHPBarEnemyE[1], "EnemyHealthBarEnd") mE.mAnimationManager.addAnimation(lImagesHPBarEnemyM[0], lImagesHPBarEnemyM[1], "EnemyHealthBarMiddle") #HealthBars Towers mE.mAnimationManager.addAnimation(lImagesHPBarTowerS[0], lImagesHPBarTowerS[1], "TowerHealthBarStart") mE.mAnimationManager.addAnimation(lImagesHPBarTowerE[0], lImagesHPBarTowerE[1], "TowerHealthBarEnd") mE.mAnimationManager.addAnimation(lImagesHPBarTowerM[0], lImagesHPBarTowerM[1], "TowerHealthBarMiddle") #CooldownBars Towers mE.mAnimationManager.addAnimation(lImagesHPBarTowerS[0], lImagesHPBarTowerS[1], "CooldownBarStart") mE.mAnimationManager.addAnimation(lImagesHPBarTowerE[0], lImagesHPBarTowerE[1], "CooldownBarEnd") mE.mAnimationManager.addAnimation(lImagesHPBarTowerM[0], lImagesHPBarTowerM[1], "CooldownBarMiddle") #ProgressBar mE.mAnimationManager.addAnimation(lImagesProgressStart[0], lImagesProgressStart[1], "ProgressBarStart") mE.mAnimationManager.addAnimation(lImagesProgressMiddle[0], lImagesProgressMiddle[1], "ProgressBarMiddle") mE.mAnimationManager.addAnimation(lImagesProgressEnd[0], lImagesProgressEnd[1], "ProgressBarEnd") mE.mAnimationManager.addAnimation(lImagesProgressBarMF[0], lImagesProgressBarMF[1], "ProgressBarMF") mE.mAnimationManager.addAnimation(lImagesProgressBarEF[0], lImagesProgressBarEF[1], "ProgressBarEF") #Projectiles mE.mAnimationManager.addAnimation(lImagesSimpleProjectil[0],lImagesSimpleProjectil[1], "SimpleProjectil") mE.mAnimationManager.addAnimation(lImagesSlowProjectil[0],lImagesSlowProjectil[1], "SlowProjectil") mE.mAnimationManager.addAnimation(lImagesPoisonProjectil[0],lImagesPoisonProjectil[1], "PoisonProjectil") mE.mAnimationManager.addAnimation(lImagesFarmProjectil[0],lImagesFarmProjectil[1], "FarmProjectil") mE.mAnimationManager.addAnimation(lImagesFireBall[0],lImagesFireBall[1], "FireBall") #HealthBar City mE.mEntityManager.defineLayerOrder(["Tombstone","Towers", "Monsters", "BackUI", "UI"]) def setPortalCoordinates(self): self.portalTiles = mE.mMapManager.getTiles("3") mapPortal = self.portalTiles[0][0] portalCoord = self.portalTiles[0][1][0] portalCoord = mapPortal.toMapCoordinate(portalCoord.position) portalCoord = (0,portalCoord[0] * tileWidth,portalCoord[1] * tileHeigth) #Create a global variable PortalCoord who have the position of the portal mE.setGlobalVariable("PortalCoord", portalCoord) mE.setGlobalVariable("PortalMapCoord", mapPortal) def setCityCoordinates(self): #Do the same thing with City Coordinates self.cityTiles = mE.mMapManager.getTiles("4") mapCity = self.cityTiles[0][0] cityCoord = self.cityTiles[0][1][0] cityCoord = mapCity.toMapCoordinate(cityCoord.position) cityCoord = (0,cityCoord[0] * tileWidth, cityCoord[1] * tileHeigth) mE.setGlobalVariable("CityCoord", cityCoord) mE.setGlobalVariable("CityMapCoor", mapCity) def loadUI(self): self.mHUD.loadEntitys() #Load the fonts mE.mTextManager.addFont(pygame.font.Font(None,16), "None14") mE.mTextManager.addFont(pygame.font.Font(None,20), "None20") mE.mTextManager.addFont(pygame.font.Font(None,28), "None32") #Create the bottomBar bottomBar = Entity() mE.mEntityManager.addEntity(bottomBar,"BottomBar","UI") mE.mAnimationManager.setEntityAnimation(bottomBar, "BottomBar") bottomBar.setPosition(50 ,686) self.icons = {} #Create the SlowIcon slowButton = self.mHUD.addCooldownButton(self.selectTower, "Slow",Vec2d(79,712),"SlowIcon", Vec2d(34,34), ) slowButton.cooldownBar.setPosition(Vec2d(86,751)) self.icons["Slow"] = slowButton #Create DamageIcon hitButton = self.mHUD.addCooldownButton(self.selectTower, "Hit", Vec2d(123 , 712), "DamageIcon", Vec2d(34,34)) hitButton.cooldownBar.setPosition(Vec2d(130,751)) self.icons["Hit"] = hitButton #Create PoisonIcon poisonButton = self.mHUD.addCooldownButton(self.selectTower, "Poison", Vec2d(167 , 712), "PoisonIcon", Vec2d(34,34), cooldown = 15.0) poisonButton.cooldownBar.setPosition(Vec2d(174,751)) self.icons["Poison"] = poisonButton #Create FarmIcon farmButton = self.mHUD.addCooldownButton(self.selectTower, "Farm", Vec2d(211, 712), "FarmIcon", Vec2d(34,34)) farmButton.cooldownBar.setPosition(Vec2d(218,751)) self.icons["Farm"] = farmButton #Create the bottomBar skillBar = Entity() mE.mEntityManager.addEntity(skillBar,"BottomBar","UI") mE.mAnimationManager.setEntityAnimation(skillBar, "BottomBar") skillBar.setPosition(424 + 180,686) self.skillIcons = {} #Create the TimeStopIcon timeStopButton = self.mHUD.addCooldownButton(self.selectSkill, "TimeStop",Vec2d(79-50+ 424+180,712),"TimeStopIcon", Vec2d(34,34), cooldown = 180.0) timeStopButton.cooldownBar.setPosition(Vec2d(86-50+ 424+180,751)) self.skillIcons["TimeStop"] = timeStopButton #Create the HealIcon healButton = self.mHUD.addCooldownButton(self.selectSkill, "Heal",Vec2d(123-50+ 424+180,712),"HealIcon", Vec2d(34,34), cooldown = 90.0) healButton.cooldownBar.setPosition(Vec2d(130-50+ 424+180,751)) self.skillIcons["Heal"] = healButton #Create the FireBallIcon fireBallButton = self.mHUD.addCooldownButton(self.selectSkill, "FireBall",Vec2d(167-50+ 424+180,712),"FireBallIcon", Vec2d(34,34), cooldown = 300.0) fireBallButton.cooldownBar.setPosition(Vec2d(174-50+ 424+180,751)) self.skillIcons["FireBall"] = fireBallButton #Add TabBar for tower stats self.tabBar = TabBar() tabBarPos = (1024, 80) self.tabBar.setMinDesloc(tabBarPos[0],tabBarPos[1]) self.tabBar.setMaxDesloc(tabBarPos[0]-180,tabBarPos[1]) self.tabBar.vecMaxSpeedDesloc = 10 self.mHUD.addTabBar(self.tabBar, "Info") #Create the texts for tower stats self.addTextTabBar((tabBarPos[0] +10,120),"Description0") self.addTextTabBar((tabBarPos[0] +10,140),"Description1") self.addTextTabBar((tabBarPos[0] +10,160),"Description2") self.pauseUI = Text() self.pauseUI.setPosition(500, 200) mE.mTextManager.addText(self.pauseUI,"PauseUI") mE.mTextManager.setTextFont("PauseUI", "None32") #Add a circle around the mouse self.circle = Circle() self.circle.color = (55,151,125) mE.mPrimitiveManager.addPrimitive(self.circle, "MouseCircle") #Add the Twinkle little text self.tText = createTwinkleText("- Shapen the arrows - ","None32") self.tText.startTwinkle() self.tText.setPosition(400,200) mE.mEntityManager.addEntity(self.tText, "TwinkleText") #Add the money ui bar moneyBar = Entity() mE.mEntityManager.addEntity(moneyBar,"MoneyUIBar","UI") mE.mAnimationManager.setEntityAnimation(moneyBar, "MoneyUIBar") moneyBar.setPosition(424,710) #Add texts to HUD self.moneyUI = Text() self.moneyUI.color = (255,255,255) self.mHUD.addText(self.moneyUI, "Money", "None32", "MoneyUI") self.moneyUI.setPosition(470, 725) #Create Mute Button self.muteButton = self.mHUD.addButton(toggleSound,None, Vec2d(960,6), "MuteButtonON", Vec2d(34,34)) self.muteButton.params = self.muteButton def addTextTabBar(self, position, tag): t = Text() t.color = (255,255,255) t.setPosition(position) self.tabBar.addEntity(t) mE.mTextManager.addText(t,tag) mE.mTextManager.setTextFont(tag, "None14") def gameLoop(self): self.end = False mE.mJukebox.PlaySong("LevelSong",True) #mE.mJukebox.PlaySong("BossFight") while not self.end: mE.update() if(mE.keyboard.isPressed(pygame.K_ESCAPE)): self.selectedTower = "" self.selectedSkill = "" mouse = self.mHUD.mouseEntity mE.mAnimationManager.setEntityAnimation(mouse,"Mouse") #self.end = True if(self.selectedTower != "" and self.canPutTower()): mousePosition = mE.mouse.getPosition() self.circle.position = (mousePosition[0], mousePosition[1]) self.circle.radius = dicTowers[self.selectedTower]["Range"] if(mE.mouse.isPressed("LEFT")): self.createTower(self.selectedTower, mousePosition) elif(self.selectedSkill != "" and self.canCastSkill()): mousePosition = mE.mouse.getPosition() self.circle.position = (mousePosition[0], mousePosition[1]) self.circle.radius = dicSkills[self.selectedSkill]["Range"] if(mE.mouse.isPressed("LEFT")): self.castSkill(self.selectedSkill, mousePosition) else: self.circle.position = (-2,-2) self.circle.radius = (1) if(self.isOver()): break print "Game Over" if(mE.keyboard.isPressed(pygame.K_UP)): self.playerWins = False break self.showInfo() self.addTimeCash() #print self.tText.text.content self.mHUD.update() mE.render() def canPutTower(self): mouse = self.mHUD.mouseEntity lCollisionTowerMouse = mE.mEntityManager.collision("Mouse", "Tower") lCollisionMouseWalkable = [] for t in walkable: lCollisionMouseWalkable += mE.mMapManager.getCollisions(mouse, t) if(not lCollisionTowerMouse and not self.icons[self.selectedTower].cooldownBar.isActive() and lCollisionMouseWalkable): return True return False def canCastSkill(self): mouse = self.mHUD.mouseEntity lCollisionMouseWalkable = [] for t in walkable: lCollisionMouseWalkable += mE.mMapManager.getCollisions(mouse, t) if(not self.skillIcons[self.selectedSkill].cooldownBar.isActive() and lCollisionMouseWalkable): return True return False def showInfo(self): lCollisionIconMouse = mE.mEntityManager.collision("Mouse", "Button") if(lCollisionIconMouse): button = lCollisionIconMouse[0][1] if(button != self.muteButton): self.showDescription(button.params) else: self.tabBar.disappear() def addTimeCash(self): pass def castSkill(self, tag, position = Vec2d(0,0)): params = {"Position": position, "Range": dicSkills[tag]["Range"]} dicSkills[tag]["Function"](params) self.skillIcons[self.selectedSkill].activeCooldown() def createTower(self,tag,position = Vec2d(0,0)): global mE global dicTowers #If have money if(mE.mGlobalVariables["Money"] >= dicTowers[tag]["Cost"]): #Update the UI mE.mGlobalVariables["Money"] += -dicTowers[tag]["Cost"] self.moneyUI.content = "Money: " + str(mE.mGlobalVariables["Money"]) #Create the tower t = Tower() mE.mAnimationManager.setEntityAnimation(t, tag+"Tower") mE.mEntityManager.addEntity(t,"Tower", "Towers") t.tag = tag t.towerEffect = dicTowers[tag]["Effect"] #t.hp.maxHealth = dicTowers[tag]["HP"] #t.hp.health = dicTowers[tag]["HP"] t.slow = dicTowers[tag]["Slow"] t.poison = dicTowers[tag]["PoisonDamage"] t.damage = dicTowers[tag]["HitDamage"] t.cooldownShoot = dicTowers[tag]["Cooldown"] t.range = dicTowers[tag]["Range"] t.hp = HealthBar(dicTowers[tag]["HP"]) t.hp.addToEntityManager() t.hp.setAnimation("TowerHealthBarStart", "TowerHealthBarEnd", "TowerHealthBarMiddle") if(dicTowers[tag]["ChooseMethod"] != None): t.chooseTargetMethod = dicTowers[tag]["ChooseMethod"] t.setCollisionBlock(Vec2d(tileWidth,tileHeigth)) t.setPosition(position) t.setCenterBoundingCircle(32,32) t.setRadiusBoundingCircle(32) #Put on Graph graph = mE.mGlobalVariables["Graph"] graph.changeWeight(t.graphPosition,100) self.recalculateRouteAllMonsters() #Start iconCooldown self.icons[self.selectedTower].activeCooldown() mE.mJukebox.PlaySound("NewTower") return t else: mE.mJukebox.PlaySound("Error") def recalculateRouteAllMonsters(self): monsters = mE.mEntityManager.getTagEntitys("Monster") for m in monsters: m.recalculateRoute() def selectTower(self,params): self.selectedSkill = "" self.selectedTower = params mouse = self.mHUD.mouseEntity mE.mAnimationManager.setEntityAnimation(mouse,"Mouse"+ params) def selectSkill(self,params): self.selectedSkill = params self.selectedTower = "" mouse = self.mHUD.mouseEntity mE.mAnimationManager.setEntityAnimation(mouse, "Mouse") def showDescription(self, params): tDescription0 = mE.mTextManager.texts["Description0"] tDescription0.content = Descriptions[params][0] tDescription1 = mE.mTextManager.texts["Description1"] tDescription1.content = Descriptions[params][1] tDescription2 = mE.mTextManager.texts["Description2"] tDescription2.content = Descriptions[params][2] self.tabBar.appear() def loadTileset(self, tileset, mMap): global tilesets for tile in tilesets[tileset]: animation = tilesets[tileset][tile]["Animation"] symbol = tilesets[tileset][tile]["Symbol"] mMap.mAnimationManager.addAnimation( animation[0], animation[1], tile ) mMap.createFactoryTile(Tile, {}, tile, symbol) mMap.mAnimationManager.addAnimation(lImagesPortal[0],lImagesPortal[1],"Portal") mMap.mAnimationManager.addAnimation(lImagesVillage[0],lImagesVillage[1],"City") mMap.createFactoryTile(Portal, {"ParticleManager": mE.mParticleManager , "Waves": self.waves}, "Portal", "3") mMap.createFactoryTile(City, {}, "City", "4") def loadMap(self): global graph global lMaps global PortalGraph global mE self.actualMap = lMaps[self.actualLevel] mapFile = self.actualMap[0] waveFile = self.actualMap[1] tileset = self.actualMap[2] #Load the wave f = open(waveFile).read().split('\n') self.nWaves = len(f)-1 self.waves = {} i = 0 for line in f: l = line.split('\t') self.waves[i] = [] for enemy in l: self.waves[i] += [int(enemy)] i +=1 #Load the map i = 0 for m in mapFile: mMap = Map(tileWidth,tileHeigth, 0,0) self.loadTileset(tileset, mMap) mMap.loadMap(m) mE.mMapManager.addMap(mMap, m) i += 1 #Put the layers on order... mE.mMapManager.setMapLayers(mapFile) graph = TowerDefenseGraph() graph.walkable = walkable graph.loadGraphFromMaps(mapFile, tileWidth, tileHeigth) #graph.loadWeigths() mE.mGlobalVariables["Graph"] = graph self.setPortalCoordinates() self.setCityCoordinates() def isOver(self): #if there is no monster alive monster = mE.mEntityManager.getTagEntitys("Monster") #if there is no monster to spawn pTile = self.portalTiles[0][1][0] if(not pTile.gonnaSpawnMore() and monster == []): #the player wins self.playerWins = True return True if(mE.mGlobalVariables["EndGame"]): self.playersWins = False return True #if the city has no more hp #the player loose self.playerWins = False return False def saveGame(self): pass
class Game: def __init__(self): global graph self.end = False self.mStageSelection = StageSelection() self.mGameManager = GameManager() self.tIniLoop = mE.getGameTime() def startGame(self): global PortalGraph mE.pushState() self.mStageSelection.load() self.mStageSelection.update() mE.popState() mE.mJukebox.PlaySong("MenuSong") def load(self): self.loadMenuAnimations() self.loadMenuSounds() self.splash = Entity() mE.mEntityManager.addEntity(self.splash, "SplashScreen", "SplashScreen") mE.mAnimationManager.setEntityAnimation(self.splash, "SplashScreen") self.mHud = HUD() self.background = Entity() mE.mEntityManager.addEntity(self.background, "Background", "BG") mE.mAnimationManager.setEntityAnimation(self.background, "Background") self.mHud.addButton(self.startGame, None, Vec2d(100 + 44,100 + 200), "PlayButton", Vec2d(192,64)) self.mHud.addButton(self.endGame, None, Vec2d(180 + 44,240 + 200), "QuitButton", Vec2d(192,64)) mE.mAnimationManager.addAnimation(lImagesHPBarEnemyS[0], lImagesHPBarEnemyS[1], "CooldownBarStart") mE.mAnimationManager.addAnimation(lImagesHPBarEnemyE[0], lImagesHPBarEnemyE[1], "CooldownBarEnd") mE.mAnimationManager.addAnimation(lImagesHPBarEnemyM[0], lImagesHPBarEnemyM[1], "CooldownBarMiddle") mE.mEntityManager.defineLayerOrder(["Splash","BG"]) def loadMenuAnimations(self): mE.mAnimationManager.addAnimation(lImagesSplashScreen[0],lImagesSplashScreen[1],"SplashScreen") mE.mAnimationManager.addAnimation(lImagesBackground[0],lImagesBackground[1],"Background") mE.mAnimationManager.addAnimation(lImagesPlayButton[0],lImagesPlayButton[1],"PlayButton") mE.mAnimationManager.addAnimation(lImagesOptionsButton[0],lImagesOptionsButton[1],"OptionsButton") mE.mAnimationManager.addAnimation(lImagesQuitButton[0],lImagesQuitButton[1],"QuitButton") mE.mAnimationManager.addAnimation(lImagesButton[0],lImagesButton[1], "Button") mE.mAnimationManager.addAnimation(lImagesMouse[0],lImagesMouse[1], "Mouse") def loadMenuSounds(self): mE.mJukebox.LoadSong(menuSong, "MenuSong") mE.mJukebox.LoadSound(bubbleSound, "BubbleSound") mE.mJukebox.PlaySound("BubbleSound") def menuLoop(self): global mE self.end = False mE.mJukebox.PlaySong("MenuSong") while not self.end: mE.update() if(mE.getGameTime() - self.tIniLoop >= 3.0 and self.splash != None): mE.mEntityManager.removeEntity(self.splash, "SplashScreen") self.splash = None self.mHud.update() mE.render() print "Acabou" def endGame(self): self.end = True