From 1523a38746ec7c9e65a0a791588a55b38bee61b9 Mon Sep 17 00:00:00 2001 From: 711215 <711215@pdsb.net> Date: Tue, 12 Jul 2022 16:35:42 -0400 Subject: [PATCH] pause menu --- Game.py | 56 +++++++++++++++++++++++++++++++++------------------- PauseMenu.py | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 PauseMenu.py diff --git a/Game.py b/Game.py index f4eb4f0..00c3c37 100644 --- a/Game.py +++ b/Game.py @@ -8,6 +8,7 @@ from EndScreen import EndScreen from Enemy import Enemy from Function.Fade import fade from Function.Portal import Transition +from PauseMenu import PauseMenu from Pet import Pet from PhysicsBody import PhysicsBody from Player import Player @@ -68,6 +69,9 @@ class Game: self.dialogue = DialogueUI() + self.paused = False + self.PauseMenu = PauseMenu() + if self.level in [1,3,4]: # Density = total clouds / area # Total_clouds = area * density @@ -99,26 +103,34 @@ class Game: # def load_world(self, level): def update(self, delta): - Setup.camera_offset = self.player.update(delta) - Setup.camera_offset.x = max(0, min(Setup.camera_offset.x, MAP_WIDTH - SCREEN_WIDTH)) - Setup.camera_offset.y = max(0, min(Setup.camera_offset.y, MAP_HEIGHT - SCREEN_HEIGHT)) - if self.player.dead: - self.level = self.scene.level - - for i, enemy in enumerate(self.enemies): - enemy.update(delta, self.player) - if enemy.dead: - self.enemies[i] = PhysicsBody(enemy.position, enemy.velocity, enemy.width, enemy.height, enemy.colour, - self.collision_layer["body"], - [self.collision_layer["world"], self.collision_layer["body"]]) - self.collision_layer["enemy"].remove(enemy) - self.collision_layer["body"].add(self.enemies[i]) - - for particle in particles: - particle.update(delta) - - self.world.update(delta) - self.fade = self.Transition.fade + if self.paused == True: + pass + else: + Setup.camera_offset = self.player.update(delta) + Setup.camera_offset.x = max(0, min(Setup.camera_offset.x, MAP_WIDTH - SCREEN_WIDTH)) + Setup.camera_offset.y = max(0, min(Setup.camera_offset.y, MAP_HEIGHT - SCREEN_HEIGHT)) + if self.player.dead: + self.level = self.scene.level + + for i, enemy in enumerate(self.enemies): + enemy.update(delta, self.player) + if enemy.dead: + self.enemies[i] = PhysicsBody(enemy.position, enemy.velocity, enemy.width, enemy.height, enemy.colour, + self.collision_layer["body"], + [self.collision_layer["world"], self.collision_layer["body"]]) + self.collision_layer["enemy"].remove(enemy) + self.collision_layer["body"].add(self.enemies[i]) + + for particle in particles: + particle.update(delta) + + for event in pg.event.get(): + if event.type == pg.KEYUP: + if event.key == pg.K_ESCAPE: + self.paused = True + + self.world.update(delta) + self.fade = self.Transition.fade # self.pet.update(delta, self.player, self.camera_pos) @@ -183,3 +195,7 @@ class Game: if self.player.dead: self.scene.update() self.scene.draw() + + if self.paused == True: + self.PauseMenu.update(self) + self.PauseMenu.draw() diff --git a/PauseMenu.py b/PauseMenu.py new file mode 100644 index 0000000..24029e0 --- /dev/null +++ b/PauseMenu.py @@ -0,0 +1,40 @@ +from Setup import * +from Function.createText import createText +import time + +class PauseMenu: + + def __init__(self): + X = SCREEN_WIDTH + Y = SCREEN_HEIGHT/2 + + self.subtitle = createText(X, Y - 150, 60, (255, 255, 255), "Regular", "Pause Menu", 'c') + self.resume = createText(X, Y + 100, 30, (255, 255, 255), "Regular", "Resume", 'c') + self.main_menu = createText(X, Y + 200, 30, (255, 255, 255), "Regular", "Main Menu", 'c') + self.quit = createText(X, Y + 300, 30, (255, 255, 255), "Regular", "Quit", 'c') + self.overlay = pg.Surface((1080, 640)) + self.overlay.fill((0, 0 ,0)) + self.overlay.set_alpha(127) + + + def update(self, game): + for event in pg.event.get(): + if event.type == pg.KEYUP and event.key == pg.K_ESCAPE: + game.paused = False + + if event.type == pg.MOUSEBUTTONUP: + mouse_loc = pg.mouse.get_pos() + if self.resume[1].collidepoint(mouse_loc): + game.paused = False + if self.main_menu[1].collidepoint(mouse_loc): + print("Main Menu") + if self.quit[1].collidepoint(mouse_loc): + pg.quit() + return + + def draw(self): + screen.blit(self.overlay, (0, 0)) + screen.blit(self.subtitle[0], self.subtitle[1]) + screen.blit(self.resume[0], self.resume[1]) + screen.blit(self.main_menu[0], self.main_menu[1]) + screen.blit(self.quit[0], self.quit[1]) \ No newline at end of file -- 2.54.0