From e28cd752e7f630adb4d3198239824881d6d837d2 Mon Sep 17 00:00:00 2001 From: Miguel Angel Astor Romero Date: Thu, 17 Jan 2013 00:32:20 -0430 Subject: [PATCH] Fixed the game background image construction on Android devices. --- background.py | 15 +++++++++++---- ingame.py | 19 ++++++++++--------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/background.py b/background.py index c1613e1..db013a2 100644 --- a/background.py +++ b/background.py @@ -6,16 +6,23 @@ import pygame import imloader from constants import DEBUG class TiledBackground(): - def __init__(self, rep_x, rep_y, texture_filename, position_x = 0, position_y = 0): + def __init__(self, width, height, texture_filename, position_x = 0, position_y = 0): + self.w = width + self.h = height self.position = (position_x, position_y) texture = imloader.cached_image_loader.get_image_to_screen_percent(texture_filename) img_w = texture.get_width() img_h = texture.get_height() - self.w = img_w * rep_x - self.h = img_h * rep_y - + rep_x = (self.w // img_w) + 1 + rep_y = (self.h // img_h) + 1 + if width == -1: + rep_x = 1 + self.w = img_w + if height == -1: + rep_y = 1 + self.h = img_h if DEBUG: print '(' + str(rep_x) + ', ' + str(rep_y) + ')' diff --git a/ingame.py b/ingame.py index 06426b4..ac8ca67 100644 --- a/ingame.py +++ b/ingame.py @@ -27,25 +27,26 @@ class InGameState(BaseState): self.rectangle = pygame.Rect(screen_center[0] - 50, screen_center[1] - 50, 100, 100) # Create a surface for the background. - bg_w = int((1280.0 * float(pygame.display.Info().current_w)) / 1024.0) - bg_h = int((1024.0 * float(pygame.display.Info().current_h)) / 768.0) + bg_w = 1280 + bg_h = 1024 self.background = pygame.Surface((bg_w, bg_h)) # Create the floor. - floor = background.TiledBackground(20, 16, 'gfx/piso.png') + floor = background.TiledBackground(1280, 1024, 'gfx/piso.png') # Create the walls for the top and the bottom (the same for both). - walls_top = background.TiledBackground(15, 1, 'gfx/Pared.png') - bg_y = int(((1024.0 - 80.0) * float(pygame.display.Info().current_h)) / 768.0) + bg_h = int((80.0 * float(pygame.display.Info().current_h)) / 768.0) + walls_top = background.TiledBackground(1280, bg_h, 'gfx/Pared.png') + bg_y = 1024 - int((80.0 * float(pygame.display.Info().current_h)) / 768.0) # Create the left walls. - walls_left = background.TiledBackground(1, 12, 'gfx/Pared2.png') + walls_left = background.TiledBackground(-1, 1024, 'gfx/Pared2.png') _y = int((80.0 * float(pygame.display.Info().current_h)) / 768.0) walls_left.set_position((0, _y)) # Create the right walls. - walls_right = background.TiledBackground(1, 12, 'gfx/Pared3.png') - _x = int(((1280.0 - 40.0) * float(pygame.display.Info().current_h)) / 768.0) + walls_right = background.TiledBackground(-1, 1024, 'gfx/Pared3.png') + _x = 1280 - int((40.0 * float(pygame.display.Info().current_w)) / 1024.0) walls_right.set_position((_x, _y)) # Build the background image. @@ -88,5 +89,5 @@ class InGameState(BaseState): def render(self, canvas): canvas.fill(self.background_color) - canvas.blit(self.background, (0, -1024 / 2)) + canvas.blit(self.background, (0, 0)) pygame.draw.rect(canvas, (255, 0, 255), self.rectangle)