package com.mycompany.readmark.ui.widget.customloadinganimview.letters;

import android.animation.ValueAnimator;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;

import com.mycompany.readmark.ui.widget.customloadinganimview.Config;


/**
 * Created by Lenovo.
 */

public class KLetter extends Letter{

    private Paint mPaint;

    private Point mFirPoint;
    private Point mSecPoint;
    private Point mThiPoint;
    private Point mFourPoint;
    private Point mFifPoint;

    private RectF mRectF;
    private int mSweepArg;

    private ValueAnimator mAnimator;

    public KLetter(int x, int y) {
        super(x, y);


    }

    @Override
    protected void initConfig(int x, int y) {
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(mStrokeWidth);
        mPaint.setAntiAlias(true);
        mPaint.setColor(Config.WHITE);
        mPaint.setStrokeCap(Paint.Cap.SQUARE);

        mRectF = new RectF(x - MAX_RADIUS_CIRCLE
                , y - MAX_RADIUS_CIRCLE - MAX_RADIUS_CIRCLE / 2
                , x + MAX_RADIUS_CIRCLE
                , y + MAX_RADIUS_CIRCLE / 2);

        mFirPoint = new Point(x, y - 2 * MAX_RADIUS_CIRCLE);
        mSecPoint = new Point(mFirPoint);
        mThiPoint = new Point(x, y + MAX_RADIUS_CIRCLE / 2 + MAX_RADIUS_CIRCLE / 4);
        mFourPoint = new Point(mThiPoint);
        mFifPoint = new Point(mThiPoint);
    }

    @Override
    public void startAnim() {
        mAnimator = ValueAnimator.ofFloat(0, 1);
        mAnimator.setDuration(mDuration);
        mAnimator.setRepeatCount(0);
        mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float factor = (float) animation.getAnimatedValue();
                mSweepArg = (int) (180 * factor);
                mSecPoint.y = (int) (mFirPoint.y + 3 * MAX_RADIUS_CIRCLE * factor);
                if(factor > 0.6 && factor < 0.9){
                    mFourPoint.x = (int) (mThiPoint.x + (factor - 0.6) / 4 * 10 * MAX_RADIUS_CIRCLE);
                    mFifPoint.x = mFourPoint.x;
                }else if(factor > 0.9){
                    mFifPoint.y = mSecPoint.y;
                }
            }
        });
        mAnimator.start();
    }

    @Override
    public void drawSelf(Canvas canvas) {
        canvas.drawArc(mRectF, -90, mSweepArg, false, mPaint);
        canvas.drawLine(mFirPoint.x, mFirPoint.y, mSecPoint.x, mSecPoint.y, mPaint);
        canvas.drawLine(mThiPoint.x, mThiPoint.y, mFourPoint.x, mFourPoint.y, mPaint);
        //短竖线
        canvas.drawLine(mFourPoint.x
                , mFourPoint.y
                , mFifPoint.x
                , mFifPoint.y, mPaint);


    }
}