public UniTask <Unity_Level> LoadAsync(Context context, bool loadTextures) { // Read the rom var rom = FileFactory.Read <GBAIsometric_ROM>(GetROMFilePath, context); var levelInfo = rom.LevelInfos[context.Settings.Level]; var levelData = levelInfo.LevelDataPointer.Value; var maps = levelData.MapLayers.Select(x => { var width = (ushort)(x.DataPointer.Value.Width * (64 / CellSize)); var height = (ushort)(x.DataPointer.Value.Height * (64 / CellSize)); return(new Unity_Map { Width = width, Height = height, TileSetWidth = 1, TileSet = new Unity_MapTileMap[] { new Unity_MapTileMap(CellSize), }, MapTiles = Enumerable.Repeat(new Unity_Tile(new MapTile()), width * height).ToArray(), }); }).ToArray(); var objManager = new Unity_ObjectManager_GBAIsometric(context, rom.ObjectTypes, levelData.ObjectsCount); var allObjects = new List <Unity_Object>(); // Add normal objects allObjects.AddRange(levelData.Objects.Select(x => (Unity_Object) new Unity_Object_GBAIsometric(x, objManager))); // Add waypoints allObjects.AddRange(levelData.Waypoints.Select(x => (Unity_Object) new Unity_Object_GBAIsometricWaypoint(x, objManager))); // Add localization var loc = rom.Localization.Localization.Select((x, i) => new { key = rom.Localization.Localization[0][i], strings = x }).ToDictionary(x => x.key, x => x.strings); return(UniTask.FromResult(new Unity_Level( maps: maps, objManager: objManager, eventData: allObjects, cellSize: CellSize, localization: loc))); }
public Unity_Object_GBAIsometric(GBAIsometric_Object obj, Unity_ObjectManager_GBAIsometric objManager) { Object = obj; ObjManager = objManager; }
public Unity_Object_GBAIsometricWaypoint(GBAIsometric_Waypoint waypoint, Unity_ObjectManager_GBAIsometric objManager) { Waypoint = waypoint; ObjManager = objManager; }