package com.example.checkersgame;

import android.graphics.Rect;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private ImageView img1, img2, img3, img4, img5, img6;
    private boolean mIsScrolling = false;
    private Rect outRect = new Rect();
    private int[] location = new int[2];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img1 = findViewById(R.id.piece1);
        img2 = findViewById(R.id.piece2);
        img3 = findViewById(R.id.piece3);
        img4 = findViewById(R.id.piece4);
        img5 = findViewById(R.id.piece5);
        img6 = findViewById(R.id.piece6);

        img1.setOnTouchListener(new MoveViewTouchListener(img1));
        img2.setOnTouchListener(new MoveViewTouchListener(img2));
        img3.setOnTouchListener(new MoveViewTouchListener(img3));
        img4.setOnTouchListener(new MoveViewTouchListener(img4));
        img5.setOnTouchListener(new MoveViewTouchListener(img5));
        img6.setOnTouchListener(new MoveViewTouchListener(img6));
    }

    public class MoveViewTouchListener implements View.OnTouchListener {
        private GestureDetector mGestureDetector;
        private View mView;

        public MoveViewTouchListener(View view) {
            mGestureDetector = new GestureDetector(view.getContext(), mGestureListener);
            mView = view;
        }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                mIsScrolling = false;
            }
            if (mGestureDetector.onTouchEvent(event)) {
                return true;
            }
            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (mIsScrolling) {
                    mIsScrolling = false;
                }
            }
            return false;
        }

        private GestureDetector.OnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() {
            private float mMotionDownX, mMotionDownY;

            @Override
            public boolean onDown(MotionEvent e) {
                mMotionDownX = e.getRawX() - mView.getTranslationX();
                mMotionDownY = e.getRawY() - mView.getTranslationY();
                return true;
            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                mIsScrolling = true;
                mView.setTranslationX(e2.getRawX() - mMotionDownX);
                mView.setTranslationY(e2.getRawY() - mMotionDownY);
                return true;
            }
        };
    }
}
