package com.example.diceroll;

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    public static final Random RANDOM = new Random();
    private ImageView imageView1, imageView2;
    private Accelerometer accelerometer;

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

        imageView1 = findViewById(R.id.imageView1);
        imageView2 = findViewById(R.id.imageView2);

        // instantiate them with this as context
        accelerometer = new Accelerometer(this);

        // create a listener for accelerometer
        accelerometer.setListener(new Accelerometer.Listener() {
            @Override
            public void onTranslation(float tx, float ty, float ts) {
                if (tx > 1.0f) {
                    rollDice();
                    // Lock screen orientation to portrait
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
                else if (tx < -1.0f) {
                    rollDice();
                    // Lock screen orientation to portrait
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    
                }
            }
        });
    }
    public void rollDice() {
        final Animation anim1 = AnimationUtils.loadAnimation(MainActivity.this, R.anim.shake);
        final Animation anim2 = AnimationUtils.loadAnimation(MainActivity.this, R.anim.shake);
        final Animation.AnimationListener animationListener = new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                int value = randomDiceValue();
                int res = getResources().getIdentifier("dice_" + value, "drawable", "com.example.diceroll");

                if (animation == anim1) {
                    imageView1.setImageResource(res);
                } else if (animation == anim2) {
                    imageView2.setImageResource(res);
                }
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        };

        anim1.setAnimationListener(animationListener);
        anim2.setAnimationListener(animationListener);

        imageView1.startAnimation(anim1);
        imageView2.startAnimation(anim2);
    }

    public static int randomDiceValue() {

        return RANDOM.nextInt(6) + 1;
    }

    // create on resume method
    @Override
    protected void onResume() {
        super.onResume();
        accelerometer.register();
    }

    // create on pause method
    @Override
    protected void onPause() {
        super.onPause();
        accelerometer.unregister();
    }
}