public Map(Bitmap bMap)
        {
            Tiles = new Tile[bMap.Width, bMap.Height];
            for(int i = 0; i < Tiles.GetLength(0); ++i)
                for(int j = 0; j<Tiles.GetLength(1); ++j)
                {
                    if (bMap.GetPixel(i, j).Equals(white))
                    {
                        if (r.Next(10) > 7)
                            Tiles[i, j] = new Tile(false, new Vec2f(i, j) * TileSize, "Assets/Textures/tree.png");
                        else
                            Tiles[i, j] = new Tile(false, new Vec2f(i, j) * TileSize);
                    }
                    else
                    {
                        if (bMap.GetPixel(i, j).Equals(black))
                        {
                            string Path = "";

                            bool left;

                            if (i - 1 < 0)
                                left = false;
                            else
                                left = bMap.GetPixel(i - 1, j).Equals(white);

                            bool right;

                            if (i + 1 >= Tiles.GetLength(0))
                                right = false;
                            else
                                right = bMap.GetPixel(i + 1, j).Equals(white);

                            bool up;

                            if (j - 1 < 0)
                                up = false;
                            else
                                up = bMap.GetPixel(i, j - 1).Equals(white);

                            bool down;

                            if (j + 1 >= Tiles.GetLength(1))
                                down = false;
                            else
                                down = bMap.GetPixel(i, j + 1).Equals(white);

                            if (!left && !right && !up && !down)
                                Path = "Assets/Textures/ground_without_grass.png";

                            if (!left && !right && up && down)
                                Path = "Assets/Textures/ground_straight.png";

                            if (left && right && !up && !down)
                                Path = "Assets/Textures/ground_straight_2.png";

                            if (left && !right && up && !down)
                                Path = "Assets/Textures/ground_corner_left_up.png";

                            if (left && !right && !up && down)
                                Path = "Assets/Textures/ground_corner_left_down.png";

                            if (!left && right && up && !down)
                                Path = "Assets/Textures/ground_corner_right_up.png";

                            if (!left && right && !up && down)
                                Path = "Assets/Textures/ground_corner_right_down.png";

                            if (Path != "")
                                Tiles[i, j] = new Tile(true, new Vec2f(i, j) * TileSize, Path);
                        }

                        if (bMap.GetPixel(i, j).Equals(red))
                        {
                            Vec2f pos = new Vec2f(i, j) * TileSize;

                            Tiles[i, j] = new Tile(true, pos, "Assets/Textures/house_humans.png");

                            SpawnPosition = new Vec2i(i, j);
                        }

                        if(bMap.GetPixel(i, j).Equals(yellow))
                        {
                            Vec2f pos = new Vec2f(i, j) * TileSize;
                            Tiles[i, j] = new Tile(true, pos, "Assets/Textures/house.png");
                            EndPosition = new Vec2i(i, j);
                        }
                    }
                }

            Verticies = new List<Vec2f>();

            SetMovementVeticies();
        }
        public void Update(GameTime gTime)
        {
            if (IsAlive)
            {
                Animate(gTime);

                LifeBar.Scale = new Vec2f(Life / MaxLife, 1);
                LifeBar.Position = (Vec2f)sprite.Position + new Vec2f(0, LifeBar.Texture.Size.Y);

                if (Position.Distance(Verticies[VertexIndex]) < Help.Epsilon)
                    VertexIndex++;
                sprite.Position = Position + (Verticies[VertexIndex] - Position).GetNormalized() * MovementSpeed * gTime.EllapsedTime.Milliseconds;

                float x = (Verticies[VertexIndex] - Position).X;
                float y = (Verticies[VertexIndex] - Position).Y;

                Vec2i v = new Vec2i((Math.Abs(x) >= 1) ? (int)x / (int)Math.Abs(x) : 0, (Math.Abs(y) >= 1) ? (int)y / (int)Math.Abs(y) : 0);

                if (v == new Vec2i(1, 0))
                    Movement = 0;
                if (v == new Vec2i(-1, 0))
                    Movement = 1;
                if (v == new Vec2i(0, -1))
                    Movement = 2;
                if (v == new Vec2i(0, 1))
                    Movement = 3;

                if (Life <= 0)
                {
                    IsAlive = false;
                    InGame.Money += Money;
                }
            }
        }
        void SetMovementVeticies()
        {
            Verticies.Add((Vec2f)SpawnPosition * TileSize);

            Vec2i d = new Vec2i(1, 0);
            Vec2i pos = SpawnPosition;

            while(pos != EndPosition)
            {
                for (; pos != EndPosition && Tiles[(pos + d).X, (pos + d).Y].IsPath ;pos += d);

                if (pos == EndPosition)
                    break;

                Verticies.Add((Vec2f)pos * TileSize);
                Vec2i t = -d;

                if (Tiles[pos.X + 0, pos.Y + 1].IsPath && -d != new Vec2i(0, 1))
                    d = new Vec2i(0, 1);
                else if (Tiles[pos.X + 1, pos.Y + 0].IsPath && -d != new Vec2i(1, 0))
                    d = new Vec2i(1, 0);
                else if (Tiles[pos.X - 1, pos.Y - 0].IsPath && -d != new Vec2i(-1, 0))
                    d = new Vec2i(-1, 0);
                else if (Tiles[pos.X - 0, pos.Y - 1].IsPath && -d != new Vec2i(0, -1))
                    d = new Vec2i(0, -1);
            }

            Verticies.Add((Vec2f)EndPosition * TileSize);
        }