def __init__(self): """ Initializes the level with default settings """ super().__init__() import area self.areas.append(area.Area_NSMBU())
def __init__(self): """ Initializes the level with default settings """ super().__init__() CreateTilesets() import area self.areas.append(area.Area_NSMBU()) globals.Area = self.areas[0]
def new(self): """ Creates a completely new level """ # Create area objects self.areas = [] import area newarea = area.Area_NSMBU() globals.Area = newarea SLib.Area = globals.Area self.areas.append(newarea)
def load(self, data, areaNum, progress=None): """ Loads a NSMBU level from bytes data. """ super().load(data, areaNum, progress) arc = SarcLib.SARC_Archive() arc.load(data) try: courseFolder = arc['course'] except: return False # Sort the area data areaData = {} for file in courseFolder.contents: name, val = file.name, file.data if val is None: continue if not name.startswith('course'): continue if not name.endswith('.bin'): continue if '_bgdatL' in name: # It's a layer file if len(name) != 19: continue try: thisArea = int(name[6]) laynum = int(name[14]) except ValueError: continue if not (0 < thisArea < 5): continue if thisArea not in areaData: areaData[thisArea] = [None] * 4 areaData[thisArea][laynum + 1] = val else: # It's the course file if len(name) != 11: continue try: thisArea = int(name[6]) except ValueError: continue if not (0 < thisArea < 5): continue if thisArea not in areaData: areaData[thisArea] = [None] * 4 areaData[thisArea][0] = val # Create area objects self.areas = [] thisArea = 1 while thisArea in areaData: course = areaData[thisArea][0] L0 = areaData[thisArea][1] L1 = areaData[thisArea][2] L2 = areaData[thisArea][3] import area if thisArea == areaNum: newarea = area.Area_NSMBU() globals.Area = newarea SLib.Area = globals.Area else: newarea = area.AbstractArea() newarea.areanum = thisArea newarea.load(course, L0, L1, L2, progress) self.areas.append(newarea) thisArea += 1 return True