diff options
Diffstat (limited to 'src/pause.py')
-rw-r--r-- | src/pause.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/pause.py b/src/pause.py new file mode 100644 index 0000000..a68ea1f --- /dev/null +++ b/src/pause.py @@ -0,0 +1,57 @@ +import pygame + +import helper +import audio +import save + +def show(): + surface = pygame.Surface((1280, 720)) + surface.fill((0, 0, 0, 128)) + + surface.blit(helper.text("Back to game", 20, (255, 255, 255)), (50, 50)) + surface.blit(helper.text("Save and quit", 20, (255, 255, 255)), (50, 75)) + + return surface + +def click(mouse, screen, paused, keep, save_data, regions): + if 45 < mouse[0] < 195 and 40 < mouse[1] < 70: + audio.play_sfx("action") + print("Back") + audio.play_sfx("back") + audio.unpause_music() + pygame.mouse.set_visible(True) + paused = False + elif 45 < mouse[0] < 205 and 40+25 < mouse[1] < 70+25: + audio.play_sfx("action") + print("Save game") + save_and_quit(screen, save_data, regions) + keep = False + import menu + menu.show(screen) + + return mouse, screen, paused, keep + +def save_and_quit(screen, path, regions): + audio.play_sfx("save") + + canvas = pygame.Surface((1280, 720)) + canvas.fill("black") + + width = screen.get_size()[0] + height = width / (16/9) + + if width > screen.get_size()[0] or height > screen.get_size()[1]: + height = screen.get_size()[1] + width = height * (16/9) + + canvas.blit(helper.text("Saving world...", 20, (255, 255, 255)), (50, 50)) + + scaled_win = pygame.transform.scale(canvas, (width, height)) + screen.blit(scaled_win, (screen.get_size()[0] / 2 - width / 2, screen.get_size()[1] / 2 - height / 2)) + + pygame.display.flip() + audio.stop(1) + + audio.wait_for_sfx() + + save.save_world(path, regions)
\ No newline at end of file |