import os, pygame, glob, logging from collections import namedtuple from random import randint class Textures(): def __init__(self): self.images = { "PLAYER":"player", "BULLET":"bullet", "TARGETS":[], "SHOOTER":"shooter", "TARGET_BULLET":"bullet_target", "POWERUP": "powerup" } self.path=os.path.dirname(os.path.realpath(__file__)) + "\\resources\\texture_packs\\" self.pack = "default" def load_texture_pack(self, pack_name): if os.path.exists(self.path + pack_name): self.images["TARGETS"] = [] targets = glob.glob(self.path+pack_name+"\\target*.png") logging.debug("Found {0} target files.".format(len(targets))) for file in targets: filename = file.split("\\")[-1].replace(".png", "") self.images["TARGETS"].append(filename) self.pack = pack_name else: logging.warn("Cannot find texture pack '{}'".format(ppack_name)) def get_texture(self, objectName): filename = self.path + self.pack + "\\{0}.png".format(self.images[objectName.upper()]) return pygame.image.load(filename) def get_target_texture(self, ID=False): if not ID: index = randint(0,len(self.images["TARGETS"])-1) if len(self.images["TARGETS"]) >=1 else 0 filename = self.path + self.pack + "\\{}.png".format(self.images["TARGETS"][index]) return [pygame.image.load(filename), index] else: filename = self.path + self.pack + "\\target{}.png".format(int(ID)) return [pygame.image.load(filename), ID] def list_packs(self): return [x[0].replace(self.path, "") for x in os.walk(self.path)] Level_Template = namedtuple('Level_Template', ("rows", "padding", "firebacks", "powerups")) Levels = [ Level_Template(2, 20, 0, 0), Level_Template(3, 15, 1, 0), Level_Template(4, 15, 3, 1), Level_Template(3, 7, 2, 2), Level_Template(5, 15, 2, 1), Level_Template(2, 20, 100, 2), #All the enemies! Level_Template(3, 15, 2, 1), Level_Template(3, 7, 2, 4), Level_Template(4, 15, 4, 3), Level_Template(5, 35, 4, 6), ] def generate_random_level(): logging.info("Generating a random level!") rows = randint(1, 12) padding = randint(5, 30) firebacks = randint(0, 15) powerups = randint(0, 15) return Level_Template(rows, padding, firebacks, powerups) Sounds = {} def init_sounds(): music_files = ["main.ogg", "OP.ogg", "shot.ogg"] for file in music_files: path = os.path.dirname(os.path.realpath(__file__)) + "\\resources\\sounds\\" + file if file == "main.ogg": mixer = pygame.mixer.music mixer.load(path) else: mixer = pygame.mixer.Sound(path) mixer.set_volume(1.0) Sounds[file.replace(".ogg", "")] = mixer