private static Tile ConvertFromTileJson(TileJson source, VectorBase position)
        {
            var result = new Tile();

            result.Visible    = source.Visible;
            result.Type       = TileTypeFactory.Instance.GetById(source.TileType);
            result.IsExplored = source.IsExplored;
            result.Position   = source.Position ?? position;
            return(result);
        }
        private static TileJson ConvertToTileJson(Tile source, VectorBase position)
        {
            var result = new TileJson();

            result.Visible    = source.Visible;
            result.TileType   = source.Type.Name;
            result.IsExplored = source.IsExplored;
            result.Position   = source.Position ?? position;

            return(result);
        }
        private static TileJson[,] ConvertToJsonMatrix(Tile[,] source)
        {
            var matrixWidth  = source.GetUpperBound(0) + 1;
            var matrixHeight = source.GetUpperBound(1) + 1;

            var result = new TileJson[matrixWidth, matrixHeight];

            for (var rowIndex = 0; rowIndex < matrixHeight; rowIndex++)
            {
                for (var columnIndex = 0; columnIndex < matrixWidth; columnIndex++)
                {
                    result[columnIndex, rowIndex] = ConvertToTileJson(source[columnIndex, rowIndex], new VectorBase(columnIndex, rowIndex));
                }
            }

            return(result);
        }