예제 #1
0
        public MapManager(IGameData gameData, IMapReader mapReader, ITilesetReader tilesetReader, ILabdataReader labdataReader)
        {
            foreach (var tilesetFile in gameData.Files["Icon_data.amb"].Files)
            {
                var tileset = Tileset.Load(tilesetReader, tilesetFile.Value);
                tilesets.Add((uint)tilesetFile.Key, tileset);
                tileset.Index = (uint)tilesetFile.Key;
            }

            // Map 1-256 -> File 1
            // Map 300-369 -> File 2
            // Map 257-299, 400-455, 513-528 -> File 3
            for (int i = 1; i <= 3; ++i)
            {
                var file      = gameData.Files[$"{i}Map_data.amb"];
                var textFiles = gameData.Files[$"{i}Map_texts.amb"];

                foreach (var mapFile in file.Files)
                {
                    uint index    = (uint)mapFile.Key;
                    var  textFile = textFiles.Files.ContainsKey(mapFile.Key) ? textFiles.Files[mapFile.Key] : null;
                    maps.Add(index, Map.Load(index, mapReader, mapFile.Value, textFile, tilesets));
                }
            }

            foreach (var labdataFile in gameData.Files["2Lab_data.amb"].Files) // Note: 2Lab_data.amb and 3Lab_data.amb both contain all lab data files
            {
                var labdata = Labdata.Load(labdataReader, labdataFile.Value, gameData);
                labdatas.Add((uint)labdataFile.Key, labdata);
            }
        }
예제 #2
0
 public GameScreen(Tanks tanksGame, IMapReader mapReader, IContentReader contentReader)
 {
     _tanksGame = tanksGame;
     _mapReader = mapReader;
     _contentReader = contentReader;
     map = _mapReader.ReadMapForLevel(1);
 }
예제 #3
0
        public static Map Load(uint index, IMapReader mapReader, IDataReader dataReader, IDataReader textDataReader,
                               Dictionary <uint, Tileset> tilesets)
        {
            var map = new Map {
                Index = index
            };

            mapReader.ReadMap(map, dataReader, textDataReader, tilesets);

            return(map);
        }
예제 #4
0
      public MapTransform(PipelineContext context, IMapReader mapReader) : base(context) {
         _input = SingleInput();
         foreach (var item in mapReader.Read(context)) {
            var from = _input.Convert(item.From);
            if (item.To == string.Empty) {
               var field = context.Entity.GetField(item.Parameter);
               _map[from] = (r) => r[field];
            } else {
               var to = context.Field.Convert(item.To);
               _map[from] = (r) => to;
            }
         }
         if (!_map.ContainsKey(CATCH_ALL)) {
            var value = context.Field.Convert(context.Field.Default);
            _map[CATCH_ALL] = (r) => value;
         }

      }
예제 #5
0
 public MapTransform(PipelineContext context, IMapReader mapReader) : base(context)
 {
     _input = SingleInput();
     foreach (var item in mapReader.Read(context))
     {
         var from = _input.Convert(item.From);
         if (item.To == string.Empty)
         {
             var field = context.Entity.GetField(item.Parameter);
             _map[from] = (r) => r[field];
         }
         else
         {
             var to = context.Field.Convert(item.To);
             _map[from] = (r) => to;
         }
     }
     if (!_map.ContainsKey(CATCH_ALL))
     {
         var value = context.Field.Convert(context.Field.Default);
         _map[CATCH_ALL] = (r) => value;
     }
 }
예제 #6
0
 public void Register(IMapReader mapReader)
 {
     _pipeline.Register(mapReader);
 }
예제 #7
0
 public void Register(IMapReader mapReader)
 {
     Context.Debug(() => $"Registering {mapReader.GetType().Name}.");
     MapReaders.Add(mapReader);
 }
예제 #8
0
 public MapReaderAction(IContext context, Map map, IMapReader mapReader)
 {
     _context   = context;
     _map       = map;
     _mapReader = mapReader;
 }
예제 #9
0
 public MapController(IMapReader mapReader)
 {
     _mapReader = mapReader;
 }