matteroverdrive.gui.element.ElementScanProgress.java Source code

Java tutorial

Introduction

Here is the source code for matteroverdrive.gui.element.ElementScanProgress.java

Source

/*
 * This file is part of Matter Overdrive
 * Copyright (c) 2015., Simeon Radivoev, All rights reserved.
 *
 * Matter Overdrive is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Matter Overdrive is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Matter Overdrive.  If not, see <http://www.gnu.org/licenses>.
 */

package matteroverdrive.gui.element;

import matteroverdrive.Reference;
import matteroverdrive.client.data.Color;
import matteroverdrive.gui.MOGuiBase;
import matteroverdrive.util.math.MOMathHelper;
import net.minecraft.util.MathHelper;
import org.lwjgl.opengl.GL11;

import java.util.List;
import java.util.Random;

/**
 * Created by Simeon on 3/18/2015.
 */
public class ElementScanProgress extends MOElementBase {
    Random random = new Random();
    int seed = 0;
    float progress;
    float[] values;
    private static float NoiseSize = 0.1f;

    public ElementScanProgress(MOGuiBase gui, int posX, int posY) {
        super(gui, posX, posY);
        this.setTexture(Reference.PATH_ELEMENTS + "screen.png", 117, 47);
        values = new float[26];
    }

    @Override
    public void updateInfo() {

    }

    @Override
    public void init() {

    }

    @Override
    public void addTooltip(List<String> var1, int mouseX, int mouseY) {

    }

    @Override
    public void drawBackground(int mouseX, int mouseY, float gameTicks) {
        GL11.glPushMatrix();
        GL11.glTranslatef(posX, posY, 0);

        gui.bindTexture(texture);
        this.drawTexturedModalRect(0, 0, 0, 0, 117, 47);
        Color color = new Color(191, 228, 230);

        random.setSeed(seed);
        int progress = MathHelper.floor_float(this.progress * 26);

        int marginsTop = 8;
        int marginsLeft = 7;
        int maxHeight = 32;

        for (int i = 0; i < 26; i++) {
            float newValue = 0;

            if (i < progress) {
                double noiseValue = ((MOMathHelper.noise(0, 0.05f * i, Math.pow(seed * 100, 2)) + 1.0) / 2.0);
                double contrastFactor = 2;
                noiseValue = contrastFactor * (noiseValue - 0.5) + 0.5;
                noiseValue = Math.pow(Math.min(noiseValue, 1), 2);
                noiseValue = noiseValue * 0.8 + random.nextDouble() * 0.2;

                newValue = (float) noiseValue;
                int height = Math.round(values[i] * maxHeight);
                int x1 = marginsLeft + i * 4;
                int y1 = maxHeight + marginsTop;
                int x2 = x1 + 2;
                int y2 = maxHeight - height + marginsTop;

                gui.drawSizedRect(x1, y1, x2, y2, color.getColor());
                gui.drawSizedRect(x1, y2 - 1, x2, y2 - 2, color.getColor());
            } else {
                newValue = 0;
            }

            values[i] = MOMathHelper.Lerp(values[i], newValue, 0.05f);
        }

        GL11.glPopMatrix();
        GL11.glColor3f(1, 1, 1);
    }

    public void setSeed(int seed) {
        this.seed = seed;
    }

    public void setProgress(float progress) {
        this.progress = progress;
    }

    @Override
    public void drawForeground(int mouseX, int mouseY) {

    }
}