aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/SignCalculator.java
blob: cf621ca70697864af32b1e48068379fd2d45110e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package de.hysky.skyblocker.skyblock;

import de.hysky.skyblocker.skyblock.dungeon.puzzle.waterboard.Switch;
import de.hysky.skyblocker.utils.Calculator;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Util;

import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SignCalculator {

    private static final MinecraftClient CLIENT = MinecraftClient.getInstance();

    private static final  DecimalFormat FORMATTER = new DecimalFormat("#,###.##");

    private static String lastInput;
    private static String input;
    private static Double output;

    public static void renderSign(DrawContext context, String[] messages){
        input = messages[0];


        //only update output if new input
        if (!input.equals(lastInput)) { //
            try {
                output = Calculator.calculate(input);
            } catch (Exception e){
                output = null; //todo log
            }
        }

        render(context);

        lastInput = input;
    }

    public static String getNewValue(Boolean isPrice) {
        if (output == null) {
            return "";
        }
        //price can except decimals and exponents
        if (isPrice) {
            return output.toString();
        }
        //amounts want an integer number so round
        return Long.toString(Math.round(output));
    }

    private static void render(DrawContext context) {
        Text text;
        if (output == null) {
            text = Text.literal("Invalid Equation").formatted(Formatting.RED);
        }
        else {
            text = Text.literal(input +" = " + FORMATTER.format(output)).formatted(Formatting.GREEN);
        }

        context.drawCenteredTextWithShadow(CLIENT.textRenderer, text,context.getScaledWindowWidth() /2 , 55,0xFFFFFFFF);
    }
}