Esempio n. 1
0
            public void Add(TileIndex index, byte[] tile)
            {
                tiles mbtile = new tiles
                {
                    zoom_level  = index.Level,
                    tile_column = index.Col,
                    tile_row    = index.Row,
                    tile_data   = tile,
                    createDate  = DateTime.UtcNow
                };

                mbtile.tile_row = OSMtoTMS(mbtile.zoom_level, mbtile.tile_row);

                lock (sqlConn)
                {
                    tiles oldTile = sqlConn.Table <tiles>().Where(x => x.zoom_level == mbtile.zoom_level && x.tile_column == mbtile.tile_column && x.tile_row == mbtile.tile_row).FirstOrDefault();

                    if (oldTile != null)
                    {
                        mbtile.id = oldTile.id;
                        sqlConn.Update(mbtile);
                    }
                    else
                    {
                        sqlConn.Insert(mbtile);
                    }
                }
            }
Esempio n. 2
0
            public byte[] Find(TileIndex index)
            {
                int level  = index.Level;
                int rowNum = OSMtoTMS(level, index.Row);

                lock (sqlConn)
                {
                    tiles oldTile = sqlConn.Table <tiles>().Where(x => x.zoom_level == level && x.tile_column == index.Col && x.tile_row == rowNum).FirstOrDefault();

                    // You may also want to put a check here to 'age' the tile, i.e., if it is too old, return null so a new one is fetched.
                    if (oldTile != null)
                    {
                        return(oldTile.tile_data);
                    }
                }

                return(null);
            }
Esempio n. 3
0
        public static int WriteTile(SQLiteConnection sqliteConnection, Tile t, byte[] data)
        {
            try
            {
                // mbtiles uses tms format so reverse y-axis...
                int tmsY         = (int)Math.Pow(2, t.Z) - 1 - t.Y;
                int rowsAffected = 0;

                //Create tile for DB
                tiles mbtile = new tiles
                {
                    zoom_level  = t.Z,
                    tile_column = t.X,
                    tile_row    = tmsY,
                    tile_data   = data,
                    createDate  = DateTime.UtcNow
                };

                tiles oldTile = sqliteConnection.Table <tiles>().Where(x => x.zoom_level == t.Z && x.tile_column == t.X && x.tile_row == tmsY).FirstOrDefault();
                if (oldTile == null)
                {
                    //rowsAffected = sqliteConnection.Execute($"INSERT INTO tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ({t.Z}, {t.X}, {tmsY}, @bytes)", data);
                    rowsAffected = sqliteConnection.Insert(mbtile);
                }
                else
                {
                    mbtile.id    = oldTile.id;
                    rowsAffected = sqliteConnection.Update(mbtile);
                }

                return(rowsAffected);
            }
            catch (Exception ex)
            {
                Log.Error($"WriteTile(...) crashed: {ex}");
            }

            return(0);
        }
Esempio n. 4
0
    public void uptadeTiles(int playerX, int playerY, ITileMap tileMap)
    {
        if (!inited)
        {
            Init(tileMap);
        }
        inited = true;
        map    = tileMap;

#if false
        moveTiles.Clear();

        for (int y = 0; y < TileMap.TotalHeight; y++)
        {
            List <tiles> temp = new List <tiles>();
            for (int x = 0; x < TileMap.TotalWidth; x++)
            {
                if (x == playerX && y == playerY)
                {
                    temp.Add(new tiles()
                    {
                        x = x, y = y, tileState = states.goal
                    });
                }
                else
                {
                    temp.Add(new tiles()
                    {
                        x = x, y = y, tileState = tileMap.GetTileAndObjectCollision(x, y) ? states.wall : states.unVisited
                    });                                                                                                                            /*GET WALL INFO*/
                }
            }
            moveTiles.Add(temp);
        }
#else
        for (int y = 0; y < tileMap.Height; y++)
        {
            for (int x = 0; x < tileMap.Width; x++)
            {
                moveTiles[y][x] = new tiles()
                {
                    x = x, y = y, tileState = tileMap.GetTileCollision(x, y) ? states.wall : states.unVisited
                };
            }
        }
        moveTiles[playerY][playerX] = new tiles()
        {
            x = playerX, y = playerY, tileState = states.goal
        };
#endif

        goalX = playerX;
        goalY = playerY;
        panther.Search(moveTiles, goalX, goalY, tileMap);
        //for(int y = 0; y < moveTiles.Count; y++)
        //{
        //    for (int x = 0; x < moveTiles.Count; x++)
        //    {
        //        if(moveTiles[y][x].tileState == states.wall)
        //        {
        //            tileMap.GetGameObjectFast(x, y).GetComponent<SpriteRenderer>().color = Color.clear;
        //        }

        //    }
        //}
        //Dictionary<tiles, int> toimii = new Dictionary<tiles, int>();

        //Queue<tiles> hue = new Queue<tiles>(100);
        //hue.Enqueue(moveTiles[playerY][playerX]);


        //while (hue.Count != 0)
        //{
        //    tiles current = hue.Dequeue();

        //    if (current.x - 1 >= 0 && moveTiles[current.y][current.x - 1].tileState == states.unVisited)
        //    {
        //        tiles tile = moveTiles[current.y][current.x - 1];
        //        hue.Enqueue(tile);
        //        tile.tileState = states.right;
        //    }
        //    if (current.x + 1 <= 59 && moveTiles[current.y][current.x + 1].tileState == states.unVisited)
        //    {
        //        tiles tile = moveTiles[current.y][current.x + 1];
        //        hue.Enqueue(tile);
        //        tile.tileState = states.left;
        //    }
        //    if (current.y + 1 <= 59 && moveTiles[current.y + 1][current.x].tileState == states.unVisited)
        //    {
        //        tiles tile = moveTiles[current.y + 1][current.x];
        //        hue.Enqueue(tile);
        //        tile.tileState = states.down;
        //    }
        //    if (current.y - 1 >= 0 && moveTiles[current.y - 1][current.x].tileState == states.unVisited)
        //    {
        //        tiles tile = moveTiles[current.y-1][current.x];
        //        hue.Enqueue(tile);
        //        tile.tileState = states.up;
        //    }
        //}
    }