def __init__(self, **kwargs): super().__init__(**kwargs) self.wnd.mouse_exclusivity = False self.bpm = 242 # Hardcode bpm from info.dat self.camera = KeyboardCamera(self.wnd.keys, fov=60, near=1.0, far=1000.0) self.camera.velocity = 50 self.camera_enabled = False meta = self.load_json('megalovania_remix/info.dat') self.map = BSScene( self.load_scene('bs_map3.glb'), self.camera, BSTrack('megalovania_remix/Expert.dat', meta['_beatsPerMinute']), ) self.quad_fs = geometry.quad_fs() # Postprocess programs self.copy_prog = self.load_program('programs/copy.glsl') self.copy_greyscale_prog = self.load_program( 'programs/copy_greyscale.glsl') self.blur_h_prog = self.load_program('programs/blur_h.glsl') self.blur_v_prog = self.load_program('programs/blur_v.glsl') self.combine = self.load_program('programs/combine.glsl') self.combine['texture1'] = 1 # blur stuff self.offscreen_texture = self.ctx.texture( (self.wnd.buffer_width, self.wnd.buffer_height), 4) self.offscreen_depth = self.ctx.depth_texture( (self.wnd.buffer_width, self.wnd.buffer_height)) self.offscreen = self.ctx.framebuffer( color_attachments=[self.offscreen_texture], depth_attachment=self.offscreen_depth, ) bd = 1 self.blur_h_texture = self.ctx.texture( (self.wnd.buffer_width // bd, self.wnd.buffer_height // bd), 4) self.blur_h_texture.repeat_x = False self.blur_h_texture.repeat_y = False self.blur_h = self.ctx.framebuffer( color_attachments=[self.blur_h_texture]) self.blur_v_texture = self.ctx.texture( (self.wnd.buffer_width // bd, self.wnd.buffer_height // bd), 4) self.blur_v_texture.repeat_x = False self.blur_v_texture.repeat_y = False self.blur_v = self.ctx.framebuffer( color_attachments=[self.blur_v_texture]) self.music_player = Player() self.music_source = StaticSource( load(RESOURCE_DIR / 'megalovania_remix/song.wav')) self.music_player.queue(self.music_source) self.music_player.play() # self.music_player.seek(60.0 * 4 + 50) self.music_player.volume = 1.0
def __init__(self): self.map = None self.layout = None self.end_staircase = None self.stage = 1 self.game_window = None self.pc = None self.next_stage = False self.move_timeout = True self.timeout_limit = 1 # sekundy self.enemies = set() self.consumables = set() self.equippables = set() self.sprites = Batch() self.items = Batch() self.stages = 5 self.cell_size = 5 self.width = 45 # w tile-ach, wielokrotność 3*sell_size self.height = 30 # wielokrotność cell_size self.status_bar = None self.difficulty = 0 self.groups = [OrderedGroup(0), OrderedGroup(1)] self.tileset = TextureGrid(ImageGrid(load_image('img/tiles.png'), 5, 5)) self.tile_textures = { 'floor': self.tileset.get(4, 0).get_image_data(), 'wall': self.tileset.get(4, 1).get_image_data(), 'bars': self.tileset.get(4, 2).get_image_data(), 'rubble': self.tileset.get(4, 3).get_image_data(), 'stairs': self.tileset.get(4, 4).get_image_data(), } self.sprite_textures = { 'bandit_dig': self.tileset.get(0, 0), 'bandit_disg': self.tileset.get(0, 1), 'bandit_fierce': self.tileset.get(0, 2), 'bandit_wander': self.tileset.get(0, 3), 'bandit_wary': self.tileset.get(0, 4), 'bandit_aggr': self.tileset.get(1, 2), 'bandit_coward': self.tileset.get(1, 3), 'bandit_def': self.tileset.get(1, 4), 'guard_glass': self.tileset.get(1, 0), 'guard_unlk': self.tileset.get(1, 1), 'guard': self.tileset.get(2, 0), 'guard_angry': self.tileset.get(2, 1), 'guard_blnk': self.tileset.get(2, 2), 'guard_chase': self.tileset.get(2, 3), 'guard_def': self.tileset.get(2, 4), 'player': self.tileset.get(3, 0), 'player_h': self.tileset.get(3, 1), 'player_d': self.tileset.get(3, 2), 'player_dh': self.tileset.get(3, 3), 'item': self.tileset.get(3, 4), } self.sounds = { 'player_hit': StaticSource(load_media('sound/player_hit.wav')), 'bandit_hit': StaticSource(load_media('sound/bandit_hit.wav')), 'guard_hit': StaticSource(load_media('sound/guard_hit.wav')), }