Esempio n. 1
0
        public TMap ReadMap()
        {
            List <TMapLayer>     resourceLayers = new List <TMapLayer>();
            List <TMapLayer>     biomeLayers    = new List <TMapLayer>();
            IEnumerable <string> layerNames     = Directory.GetFiles(_mapDirectory).Select(name => Path.GetFileNameWithoutExtension(name)).Distinct();

            foreach (var layerName in layerNames)
            {
                TMapLayerHeader header      = ReadLayerHeader(layerName);
                var             bitmap      = new Bitmap(Path.Combine(_mapDirectory, layerName + ".png"), true);
                var             layerReader = new PNGMapLayerReader(bitmap, header);
                TMapLayer       layer       = layerReader.ReadLayer();
                switch (layer.Type)
                {
                case DefinitionType.Biome:
                    biomeLayers.Add(layer);
                    break;

                case DefinitionType.Resource:
                    resourceLayers.Add(layer);
                    break;

                default:
                    throw new InvalidDataException($"Invalid layer type {layer.Type}");
                }
            }
            ValidateLayers(resourceLayers, biomeLayers);
            return(new TMap()
            {
                Name = _mapName, ResourceLayers = resourceLayers.ToArray(), BiomeLayer = biomeLayers.First()
            });
        }
Esempio n. 2
0
File: MapIO.cs Progetto: Alutka/Game
 public static TMap Import(Stream stream)
 {
     using (BinaryReader reader = new BinaryReader(stream))
     {
         string    name        = reader.ReadString();
         TMapLayer biomeLayer  = ReadLayer(reader);
         int       layersCount = reader.ReadInt32();
         var       layers      = new TMapLayer[layersCount];
         for (int i = 0; i < layersCount; i++)
         {
             layers[i] = ReadLayer(reader);
         }
         return(new TMap()
         {
             Name = name, ResourceLayers = layers, BiomeLayer = biomeLayer
         });
     }
 }
Esempio n. 3
0
        public void ReadBiomeLayerTest(int index)
        {
            TLayer    layer  = _fixture.Layers[index];
            var       reader = new PNGMapLayerReader(layer.Bitmap, layer.MapLayerHeader);
            TMapLayer result = reader.ReadLayer();

            Assert.Equal(layer.MapLayerHeader.Type, result.Type);

            Dictionary <string, TColor> dict = layer.MapLayerHeader.Colors.ToDictionary(col => col.Type, col => col.Color);

            for (int y = 0; y < layer.Bitmap.Height; y++)
            {
                for (int x = 0; x < layer.Bitmap.Width; x++)
                {
                    var pixel = layer.Bitmap.GetPixel(x, y);
                    var color = dict[result.GetValue(x, y)];
                    Assert.Equal(pixel.R, color.R);
                    Assert.Equal(pixel.G, color.G);
                    Assert.Equal(pixel.B, color.B);
                }
            }
        }