def add_element(self, text): values = text.split(" ", 1) etype = values[0].strip() if etype == "dialogue": element = Scripted_event_element(etype, values[1].strip()) elif etype == "player": values = values[1].split() if values[0] == "orientation": self.last_dir = dir_from_str(values[1]) element = Scripted_event_element(etype, values[0], self.last_dir) if values[0] == "animation": element = Scripted_event_element(etype, values[0], self.last_dir, values[1]) else: element = Scripted_event_element(etype) self.elements.append(element)
def add_element(self, text): values = text.split(" ", 1) etype = values[0] etype = etype.strip() if etype == "dialogue": element = Scripted_event_element(etype, values[1].strip()) else: if etype == "player": values = values[1].split() if values[0] == "orientation": self.last_dir = dir_from_str(values[1]) element = Scripted_event_element(etype, values[0], self.last_dir) if values[0] == "animation": element = Scripted_event_element(etype, values[0], self.last_dir) else: element = Scripted_event_element(etype) self.elements.append(element) return
def __init__(self, screen, level_name = "0"): self.screen = screen self.bgimage = pygame.image.load(data.picpath("background", "static")) self.image = None self.rect = self.bgimage.get_rect() self.rect.centerx = SCREEN_WIDTH / 2 self.rect.centery = SCREEN_HEIGHT / 2 self.flipping = False self.flipcounter = 0 self.tiles = [] self.objects = [] self.scripted_events = [] conffile = open(data.levelpath(level_name)) tiley = 0 values = [] set = "brown" #Parsing this from the conf file should be added trigger = False current_event = None for line in conffile.readlines(): if tiley < FULL_TILES_VER: tilex = 0 while tilex < FULL_TILES_VER: if (line[tilex] == "W"): self.tiles.append(Tile(self.screen, tilex, tiley)) if (line[tilex] == "B"): self.tiles.append(Tile(self.screen, tilex, tiley, set, "bars")) if (line[tilex] == "S"): self.tiles.append(Spikes(self.screen, tilex, tiley)) tilex += 1 tiley += 1 else: if line.strip() != "": values = line.split() if trigger: if values[0] == "end" and values[1] == "trigger": trigger = False else: current_event.add_element(line) continue if values[0] == "trigger": trigger = True current_event = Scripted_event(values[1], int(values[2])) self.scripted_events.append(current_event) continue x = (float(values[1]) - (FULL_TILES_HOR - TILES_HOR)) * TILE_DIM y = (float(values[2]) - (FULL_TILES_VER - TILES_VER))* TILE_DIM if values[0] == "player": self.player = Player(self.screen, x, y) continue if values[0] == "spider": self.objects.append(Spider(self.screen, x, y, dir_from_str(values[3]))) continue if values[0] == "key": self.objects.append(Item(self.screen, x, y, set, values[0])) continue if values[0] == "lever": trigger_type = TRIGGER_NONE if values[4] == "TRIGGER_FLIP": trigger_type = TRIGGER_FLIP self.objects.append( Item(self.screen, x, y, set, values[0], int(values[3]), trigger_type) ) continue self.reset_active_tiles() return
def __init__(self, screen, level_name="0"): self.screen = screen self.bgimage = pygame.image.load(data.picpath("background", "static")) self.image = None self.rect = self.bgimage.get_rect() self.rect.centerx = SCREEN_WIDTH / 2 self.rect.centery = SCREEN_HEIGHT / 2 self.flipping = False self.flipcounter = 0 self.tiles = [] self.objects = [] self.scripted_events = [] conffile = open(data.levelpath(level_name)) tiley = 0 values = [] set = "brown" #Parsing this from the conf file should be added trigger = False current_event = None for line in conffile.readlines(): if tiley < FULL_TILES_VER: tilex = 0 while tilex < FULL_TILES_VER: if (line[tilex] == "W"): self.tiles.append(Tile(self.screen, tilex, tiley)) if (line[tilex] == "B"): self.tiles.append( Tile(self.screen, tilex, tiley, set, "bars")) if (line[tilex] == "S"): self.tiles.append(Spikes(self.screen, tilex, tiley)) tilex += 1 tiley += 1 else: if line.strip() != "": values = line.split() if trigger: if values[0] == "end" and values[1] == "trigger": trigger = False else: current_event.add_element(line) continue if values[0] == "trigger": trigger = True current_event = Scripted_event(values[1], int(values[2])) self.scripted_events.append(current_event) continue x = (float(values[1]) - (FULL_TILES_HOR - TILES_HOR)) * TILE_DIM y = (float(values[2]) - (FULL_TILES_VER - TILES_VER)) * TILE_DIM if values[0] == "player": self.player = Player(self.screen, x, y) continue if values[0] == "spider": self.objects.append( Spider(self.screen, x, y, dir_from_str(values[3]))) continue if values[0] == "key": self.objects.append( Item(self.screen, x, y, set, values[0])) continue if values[0] == "lever": trigger_type = TRIGGER_NONE if values[4] == "TRIGGER_FLIP": trigger_type = TRIGGER_FLIP self.objects.append( Item(self.screen, x, y, set, values[0], int(values[3]), trigger_type)) continue self.reset_active_tiles() return
def __init__(self, screen, level_name = "w0-l0"): self.screen = screen self.image = None self.flipping = False self.flipcounter = 0 self.set = "brown" #The default tileset, can be changed through level configuration self.tiles = [] self.objects = [] self.scripted_events = [] self.cached_ground_check = {} self.dust_color = COLOR_DUST["brown"] self.level_name = level_name self.orientation = 0 conffile = codecs.open(data.levelpath(self.level_name), "r", "utf_8") tiley = 0 values = [] trigger = False current_event = None parse_tiles = False for line in conffile: if parse_tiles: if tiley < FULL_TILES_VER: tilex = 0 while tilex < FULL_TILES_VER: if (line[tilex] == "W") or (line[tilex] == "B") or (line[tilex] == "S"): self.add_tile(line[tilex], (tilex, tiley)) tilex += 1 tiley += 1 continue else: parse_tiles = False continue elif line.strip() != "": values = line.split() #Parsing special commands if trigger: if values[0] == "end" and values[1] == "trigger": trigger = False else: current_event.add_element(line) continue elif values[0] == "trigger": trigger = True current_event = Scripted_event(values[1], int(values[2])) self.scripted_events.append(current_event) continue elif values[0] == "tiles": parse_tiles = True continue elif values[0] == "set": self.set = values[1] continue #Parsing objects x, y = tile_coords_to_screen_coords(values[1], values[2]) if values[0] == "player": self.player = Player(self.screen, x, y) continue elif values[0] == "spider": self.objects.append(Spider( self.screen, x, y, dir_from_str(values[3]) )) continue elif values[0] == "blob": self.objects.append(Blob(self.screen, x, y, self.player)) continue elif values[0] == "lever": trigger_type = TRIGGER_FLIP if values[4] == "TRIGGER_FLIP": trigger_type = TRIGGER_FLIP self.objects.append( Item(self.screen, x, y, self.set, values[0], int(values[3]), trigger_type) ) continue else: try: self.objects.append(Item(self.screen, x, y, self.set, values[0])) except: error_message("Couldn't add object '" + values[0] + "'") continue self.dust_color = COLOR_DUST[self.set] self.bg_animations = {} self.bg_animations["default"] = Animation(self.set + "_background", "static") self.current_animation = "default" self.rect = (self.bg_animations[self.current_animation].update_and_get_image()).get_rect() self.rect.centerx = SCREEN_WIDTH / 2 self.rect.centery = SCREEN_HEIGHT / 2 self.reset_active_tiles() return