using System.Linq;
using Collector.Dimension;
using MonoGame.Extended;
using Vector2 = Microsoft.Xna.Framework.Vector2;


namespace Collector.Character
{
    public class Player : IRestrictions
    {
        public static float X { get; private set; }
        public static float Y { get; private set; }

        public static RectangleF PlayerBounds;

        public Player(int x, int y)
        {
            X = x;
            Y = y;
            PlayerBounds = new RectangleF(x, y, IRestrictions.TileSize * 0.5f, IRestrictions.TileSize * 0.35f);
        }

        public static void Move(OrthographicCamera cam, float x, float y)
        {
            Teleport(cam, x, 0);
            if (Chunks.LoadedCollisions.Values.Any(collisionsValue => collisionsValue.Rectangle.Intersects(PlayerBounds)))
            {
                Teleport(cam, -x, 0);
            }

            Teleport(cam, 0, y);
            if (Chunks.LoadedCollisions.Values.Any(collisionsValue => collisionsValue.Rectangle.Intersects(PlayerBounds)))
            {
                Teleport(cam, 0, -y);
            }
        }

        private static void Teleport(OrthographicCamera cam, float x, float y)
        {
            X += x;
            Y += y;
            PlayerBounds.X = X + 0.2f;
            PlayerBounds.Y = Y + 1.5f;
            cam.Move(new Vector2(x, y));
        }
    }
}