package pl.hypeapp.fixmath;


import android.content.Context;
import android.media.MediaPlayer;




public class SFXManager implements MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener {


    private MediaPlayer timer;
    private MediaPlayer keyboardClose;
    private MediaPlayer keyboardError;
    private MediaPlayer keyboardClick;
    private MediaPlayer keyboardBackspace;
    private MediaPlayer sameLineFigureClick;
    private MediaPlayer newLineFigureClick;
    private MediaPlayer correctLine;
    private MediaPlayer newBackground;
    private boolean isMuteSFX;
    private Context context;

    public SFXManager(Context context, boolean isMuteSFX){
        this.context = context;
        this.isMuteSFX = isMuteSFX;
        if(!isMuteSFX){
            timer = MediaPlayer.create(context, R.raw.timer_sfx);
            timer.setLooping(true);

        }
    }



    public void TimerSfxPlay(boolean isPlay){
        if(!isMuteSFX) {
            if (isPlay) {
                timer.start();
            } else {
                timer.stop();
            }
        }

    }

    public void KeyboardClickPlay(boolean isPlay){
        if(!isMuteSFX) {
            keyboardClick = MediaPlayer.create(this.context, R.raw.keyboard_click_sfx);

            if (isPlay) {
                try {
                    keyboardClick.prepare();
                }catch(Exception e){}
                keyboardClick.setOnCompletionListener(this);
                keyboardClick.setOnPreparedListener(this);

            } else {
                if (keyboardClick.isPlaying()) {
                    keyboardClick.stop();
                }
            }
        }
    }

    public void KeybordClosePlay(){
        if(!isMuteSFX) {
            keyboardClose = MediaPlayer.create(context, R.raw.close_keyboard_sfx);
            keyboardClose.setOnCompletionListener(this);
            keyboardClose.setOnPreparedListener(this);
        }
    }

    public void KeyboardErrorPlay(){
        if(!isMuteSFX) {
            keyboardError = MediaPlayer.create(context, R.raw.error_keyboard_sfx);
            keyboardError.setOnCompletionListener(this);
            keyboardError.setOnPreparedListener(this);
        }
    }

    public void SameLineFigureClickPlay(){
        if(!isMuteSFX) {
            sameLineFigureClick = MediaPlayer.create(context, R.raw.same_line_figure_click_sfx);
                try {
                sameLineFigureClick.prepare();
            }catch(Exception e){
                    sameLineFigureClick.setOnCompletionListener(this);
                    sameLineFigureClick.setOnPreparedListener(this);
                }
            sameLineFigureClick.setOnCompletionListener(this);
            sameLineFigureClick.setOnPreparedListener(this);
        }
    }

    public void NewLineFigureClickPlay(){
        if(!isMuteSFX) {
            newLineFigureClick = MediaPlayer.create(context, R.raw.new_line_figure_click_sfx);
            try {
                newLineFigureClick.prepare();
            }catch(Exception e){
                newLineFigureClick.setOnCompletionListener(this);
                newLineFigureClick.setOnPreparedListener(this);
            }
            newLineFigureClick.setOnCompletionListener(this);
            newLineFigureClick.setOnPreparedListener(this);

        }
    }

    public void KeyboardBackspacePlay(){
        if(!isMuteSFX) {
            keyboardBackspace = MediaPlayer.create(context, R.raw.keyboard_backspace_sfx);

            try {
                keyboardBackspace.prepare();
            }catch(Exception e){
                keyboardBackspace.setOnCompletionListener(this);
                keyboardBackspace.setOnPreparedListener(this);
            }
            keyboardBackspace.setOnCompletionListener(this);
            keyboardBackspace.setOnPreparedListener(this);
        }
    }

    public void CorrectLinePlay(){
        if(!isMuteSFX) {
            correctLine = MediaPlayer.create(context, R.raw.correct_line_sfx);
            try {
                correctLine.prepare();
            }catch(Exception e){
                correctLine.setOnCompletionListener(this);
                correctLine.setOnPreparedListener(this);
            }
            correctLine.setOnCompletionListener(this);
            correctLine.setOnPreparedListener(this);

        }
    }

    public void NewBackgroundPlay(){
        if(!isMuteSFX) {
            newBackground = MediaPlayer.create(context, R.raw.new_background_sfx);
            newBackground.setOnCompletionListener(this);
            newBackground.setOnPreparedListener(this);

        }
    }


    @Override
    public void onCompletion(MediaPlayer mp) {
        mp.reset();
    }

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        return true;
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
}