Browse Source

Modifica il renderer SDL per utilizzare la modalità accelerata e semplifica il caricamento delle immagini

master
Matteo Benedetto 1 year ago
parent
commit
8f37b37131
  1. 20
      engine/sdl2.py

20
engine/sdl2.py

@ -15,7 +15,7 @@ class GameWindow:
sdl2.ext.init() sdl2.ext.init()
self.window = sdl2.ext.Window(title=title, size=(self.width, self.height)) self.window = sdl2.ext.Window(title=title, size=(self.width, self.height))
self.window.show() self.window.show()
self.renderer = sdl2.ext.Renderer(self.window, flags=sdl2.SDL_RENDERER_PRESENTVSYNC) self.renderer = sdl2.ext.Renderer(self.window, flags=sdl2.SDL_RENDERER_ACCELERATED)
self.factory = sdl2.ext.SpriteFactory(renderer=self.renderer) self.factory = sdl2.ext.SpriteFactory(renderer=self.renderer)
self.fonts = self.generate_fonts("assets/AmaticSC-Regular.ttf") self.fonts = self.generate_fonts("assets/AmaticSC-Regular.ttf")
self.running = True self.running = True
@ -28,21 +28,9 @@ class GameWindow:
def load_image(self, path, transparent_color=None): def load_image(self, path, transparent_color=None):
image_path = os.path.join(os.path.dirname(__file__), "..", "assets", path) image_path = os.path.join(os.path.dirname(__file__), "..", "assets", path)
image = Image.open(image_path) image = sdl2.ext.load_image(image_path)
if transparent_color:
image = image.convert("RGBA")
datas = image.getdata()
new_data = []
for item in datas:
if item[:3] == transparent_color:
new_data.append((255, 255, 255, 0))
else:
new_data.append(item)
image.putdata(new_data)
# Ridimensiona l'immagine in base a cell_size # Ridimensiona l'immagine in base a cell_size
scale = self.cell_size // 20 return self.factory.from_surface(image)
image = image.resize((image.width * scale, image.height * scale), Image.NEAREST)
return self.factory.from_surface(sdl2.ext.pillow_to_surface(image))
def draw_text(self, text, font, position, color): def draw_text(self, text, font, position, color):
sprite = self.factory.from_text(text, color=color, fontmanager=font) sprite = self.factory.from_text(text, color=color, fontmanager=font)
@ -84,4 +72,4 @@ class GameWindow:
self.running = False self.running = False
# Disegna qui gli sprite # Disegna qui gli sprite
self.renderer.present() self.renderer.present()
#time.sleep(self.delay / 1000) time.sleep(self.delay / 1000)

Loading…
Cancel
Save