package com.example.theviper;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.gesture.GestureLibrary;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity

{
    private Button bJugar;
    private Button bCrearMapa;
    private Button bPuntuaciones;
    private Button bAcercaDe;
    public static AlmacenPuntuaciones almacen ;
    private MediaPlayer mp;
    SharedPreferences pref;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView texto = (TextView) findViewById(R.id.textViewAppname);
        Animation animacion = AnimationUtils.loadAnimation(this, R.anim.giro_con_zoom);
        texto.startAnimation(animacion);

        almacen = new AlmacenPuntuacionesFicheroExterno(this);
        mp = MediaPlayer.create(this, R.raw.sonido_cancionjuego);


        //Escuchador OnClick del botón Jugar
        bJugar=(Button)findViewById(R.id.boton_jugar);
        Animation anim_boton1 = AnimationUtils.loadAnimation(this, R.anim.boton1);
        bJugar.startAnimation(anim_boton1);
        bJugar.setOnClickListener
                (
                        new View.OnClickListener()
                        {
                            public void onClick(View view)
                            {
                                lanzarJuego(null);
                            }
                        }
                );
        //Escuchador OnClick del botón crear maa
        bCrearMapa=(Button)findViewById(R.id.boton_crear);
        Animation anim_boton2 = AnimationUtils.loadAnimation(this, R.anim.boton1);
        bCrearMapa.startAnimation(anim_boton2);
        bCrearMapa.setOnClickListener
                (
                        new View.OnClickListener()
                        {
                            public void onClick(View view)
                            {
                                lanzarCrearMapa(null);
                            }
                        }
                );
        //Escuchador OnClick del botón Puntuaciones
        bPuntuaciones=(Button)findViewById(R.id.boton_puntuaciones);
        Animation anim_boton3 = AnimationUtils.loadAnimation(this, R.anim.boton1);
        bPuntuaciones.startAnimation(anim_boton3);
        bPuntuaciones.setOnClickListener
                (
                        new View.OnClickListener()
                        {
                            public void onClick(View view)
                            {
                                lanzarPuntuaciones(null);
                            }
                        }
                );
        //Escuchador OnClick del botón Acerca De
        bAcercaDe=(Button)findViewById(R.id.boton_acercade);
        Animation anim_boton4 = AnimationUtils.loadAnimation(this, R.anim.boton1);
        bAcercaDe.startAnimation(anim_boton4);
        bAcercaDe.setOnClickListener
                (
                        new View.OnClickListener() {
                            public void onClick(View view) {
                                lanzarAcercaDe(null);
                            }
                        }
                );

    }

    @Override
    protected void onStart() {
        super.onStart();

    }

    @Override
    protected void onResume() {
        super.onResume();
        pref = PreferenceManager.getDefaultSharedPreferences(this);
        if (pref.getBoolean("musica",true))
            mp.start();

        almacen = new AlmacenPuntuacionesFicheroExterno(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (pref.getBoolean("musica",true))
            mp.pause();
    }

    @Override
    protected void onStop() {
        super.onStop();

    }

    @Override
    protected void onRestart() {
        super.onRestart();

    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
    }

    @Override
    protected void onSaveInstanceState(Bundle estadoGuardado){
        super.onSaveInstanceState(estadoGuardado);
        if (mp != null) {
            int pos = mp.getCurrentPosition();
            estadoGuardado.putInt("posicion", pos);
        }
    }

    @Override
    protected void onRestoreInstanceState(Bundle estadoGuardado){
        super.onRestoreInstanceState(estadoGuardado);
        if (estadoGuardado != null && mp != null) {
            int pos = estadoGuardado.getInt("posicion");
            mp.seekTo(pos);
        }
    }


    //Se ejecuta por OnClick del boton Acerca de
    public void lanzarAcercaDe(View view)
    {
        Intent i = new Intent(this, AcercaDe.class);
        startActivity(i);
    }

    //Se ejecuta por OnClick del boton Puntuaciones
    public void lanzarPuntuaciones(View view)
    {
        Intent i = new Intent (this, Puntuaciones.class);
        startActivity(i);
    }

    public void lanzarPreferencias(View view)
    {
        Intent i = new Intent(this, Preferencias.class);
        startActivity(i);
    }
    //Se ejecuta por al pulsar el boton de Preferencias?
    public void lanzarCrearMapa(View view)
    {
        Intent i = new Intent(this, CrearMapa.class);
        startActivity(i);
    }


    //Se ejecuta al pulsar el boton de Menu
    @Override public boolean onCreateOptionsMenu (Menu menu)
    {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true; //true -> el menu ya esta visible
    }

    @Override public boolean onOptionsItemSelected (MenuItem item)
    {
        switch(item.getItemId())
        {
            case R.id.acercaDe:
                lanzarAcercaDe(null);
                break;
            case R.id.config:
                lanzarPreferencias(null);
                break;
        }
        return true;
    }

    //Se ejecuta por al pulsar el boton de Preferencias
    public void lanzarJuego(View view) {
        Intent i = new Intent(this, Juego.class);
        startActivityForResult(i, 1234);
    }

    @Override protected void onActivityResult (int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);

        pref = PreferenceManager.getDefaultSharedPreferences(this);
        if (requestCode==1234 & resultCode==RESULT_OK & data!=null) {
            int puntuacion = data.getExtras().getInt("puntuacion");
            String nombre = pref.getString("username", "androidFundamentos");

            almacen.guardarPuntuacion(puntuacion, nombre,
                    System.currentTimeMillis());
            lanzarPuntuaciones(null);
        }
    }

}