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)));
        }
示例#2
0
 public Unity_Object_GBAIsometric(GBAIsometric_Object obj, Unity_ObjectManager_GBAIsometric objManager)
 {
     Object     = obj;
     ObjManager = objManager;
 }
示例#3
0
 public Unity_Object_GBAIsometricWaypoint(GBAIsometric_Waypoint waypoint, Unity_ObjectManager_GBAIsometric objManager)
 {
     Waypoint   = waypoint;
     ObjManager = objManager;
 }