package pathgame.rendering;

import me.hammerle.snuviengine.api.Renderer;
import pathgame.gameplay.Level;

public class ScoreMenuRenderer
{
    public void renderTick(Renderer r, float lag, Level level)
    {
        float windowWidth = r.getViewWidth();
        float windowHeight = r.getViewHeight();
        float paddingX = 30;
        float paddingY = 50;
        r.setMixColorEnabled(false);
        r.setColorEnabled(true);
        r.setTextureEnabled(false);
        r.setBlendingEnabled(true);
        r.getColorRenderer().drawRectangle(paddingX, paddingY, windowWidth - paddingX, windowHeight - paddingY, 0x90000000);

        r.setTextureEnabled(true);
        r.translateTo(0.0f, 0.0f);
        float scale = scale(r, 1);

        String message;

        message = "&2" + String.valueOf(level.getPlayer().getEnergyUsed()) + "&f of &2"
                + String.valueOf(level.getPlayer().getEnergySupply()) + "&f Energy used";
        r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * 0.15f, message);

        System.out.println((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply());
        if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.5f)
        {
            message = "You were better than the algorithm!";
        }
        else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.6f)
        {
            message = "Only 20% more energy use than the algorithm!";
        }
        else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 0.75f)
        {
            message = "Only 50% more energy use than the algorithm!";
        }
        else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 1)
        {
            message = "Only twice the energy use of the algorithm!";
        }
        else if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() > 1)
        {
            message = "More than twice the energy use of the algorithm!";
        }

        r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2 - windowHeight * scale * 0.5f * (-0.15f), message);

        scale = scale(r, 2);
        if((float) level.getPlayer().getEnergyUsed() / level.getPlayer().getEnergySupply() < 1)
        {

            message = "Congratulations!";
        }
        else
        {
            message = "What a pity! Out of energy!";
        }
        r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - getHeight(r, message)) / 2, message);

        message = "OK!";
        r.getFontRenderer().drawString((windowWidth * scale - getWidth(r, message)) / 2, (windowHeight * scale - paddingY * scale - getHeight(r, message)) - 10, message);

    }

    private float getWidth(Renderer r, String s)
    {
        return r.getFontRenderer().getSize(s).getWidth();
    }

    private float getHeight(Renderer r, String s)
    {
        return r.getFontRenderer().getSize(s).getHeight();
    }

    private float scale(Renderer r, int scale)
    {
        r.scale(scale, scale);
        r.updateMatrix();
        return 1.0f / scale;
    }
}