From 7d12c1703b06377834180f752f44dccddec766fb Mon Sep 17 00:00:00 2001 From: EKNr1 Date: Tue, 27 Feb 2024 18:06:14 +0100 Subject: [PATCH] Added font and default pygame setup. --- .gitignore | 1 + Flat-it License.txt | 18 +++++++++ PUSAB.otf | Bin 0 -> 73728 bytes gd_pygame.py | 96 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 Flat-it License.txt create mode 100644 PUSAB.otf create mode 100644 gd_pygame.py diff --git a/.gitignore b/.gitignore index 5d381cc..4a04ca5 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,4 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +/settings.json diff --git a/Flat-it License.txt b/Flat-it License.txt new file mode 100644 index 0000000..c72f020 --- /dev/null +++ b/Flat-it License.txt @@ -0,0 +1,18 @@ +All fonts copyright Flat-it(http://flat-it.com/) + +This is a freeware typeface. This means that you can use it on your commercial or non-commercial works for free. + +But here is a list of things you could do, Only if you want to: + +* Mail me about your works +* Link http://flat-it.com/ +* Send me a sample of the work you did using my typeface +* Mail me some print material you did using my typeface +* Credit "Flat-it"on your work +* Smile + +to contact info@flat-it.com in JAPAN + + +Ryoichi Tsunekawa +Flat-it \ No newline at end of file diff --git a/PUSAB.otf b/PUSAB.otf new file mode 100644 index 0000000000000000000000000000000000000000..fc4eebd9296fde75e9f10ad86a78a279d5e59330 GIT binary patch literal 73728 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 b%N)fUDzI)EuA3pTZ~yr}&^zW`b=Cg^6hx5I literal 0 HcmV?d00001 diff --git a/gd_pygame.py b/gd_pygame.py new file mode 100644 index 0000000..25f0d79 --- /dev/null +++ b/gd_pygame.py @@ -0,0 +1,96 @@ +#!/usr/bin/python3 + +import pygame +from pygame._sdl2 import Window +from dataclasses import dataclass +from wobbl_tools.data_file import load_dataclass_json, save_dataclass_json + + +@dataclass +class Settings: + fps: int = 60 + window_size: tuple = (1000, 600) + + +class GDPygame: + def __init__(self): + pygame.init() + + self.screen = pygame.display.set_mode((1000, 600), pygame.RESIZABLE) + pygame.display.set_caption("Game") + self.window = Window.from_display_module() + + self.loading_surface = self.generate_loading_surface() + self.screen.blit(self.loading_surface, (0, 0)) + pygame.display.update() + + self.settings = load_dataclass_json(Settings, "settings.json") + setattr(self.settings, "save", lambda: save_dataclass_json(self.settings, "settings.json")) + + self.fps = self.settings.fps + + # colors + self.gray = (20, 20, 20) + + # pygame objects + self.clock = pygame.time.Clock() + self.mouse = pygame.mouse + self.pusab = pygame.font.Font("PUSAB.otf") + + # loading finished + self.window.size = self.settings.window_size + + self.running = True + + def generate_loading_surface(self): + default_font = pygame.font.Font("PUSAB.otf", 32) + loading_text = default_font.render("Loading...", True, (240, 240, 240)) + + w, h = self.screen.get_size() + + loading_surface = pygame.Surface((w, h), flags=pygame.SRCALPHA) + + loading_surface.fill((40, 40, 40)) + loading_surface.blit(loading_text, (w // 2 - loading_text.get_width() // 2, h // 2 - loading_text.get_height() // 2)) + + return loading_surface + + def loop(self): + self.screen.fill(self.gray) + + self.get_events() + if not self.running: + return + + if self.loading_surface.get_alpha() > 0: + self.screen.blit(self.loading_surface, (0, 0)) + self.loading_surface.set_alpha(self.loading_surface.get_alpha() - 4) + + pygame.display.update() + self.clock.tick(self.fps) + + def get_events(self): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.exit() + return + + elif event.type == pygame.VIDEORESIZE: + self.window_update(event.size) + + def exit(self): + self.running = False + + self.settings.save() + + print("Bye!") + + def window_update(self, size): + self.settings.window_size = size + + +if __name__ == "__main__": + geometry_dash = GDPygame() + + while geometry_dash.running: + geometry_dash.loop()