PandacraftUtils/src/net/mc_pandacraft/java/util/bukkit/TextProgressBar.java
2014-11-22 17:18:10 +01:00

74 lines
2.0 KiB
Java

package net.mc_pandacraft.java.util.bukkit;
import org.bukkit.ChatColor;
import org.bukkit.util.NumberConversions;
public class TextProgressBar {
private static String pattern_start = "[";
private static String pattern_end = "]";
private static ChatColor color_empty = ChatColor.DARK_GRAY;
private static ChatColor color_decoration = ChatColor.GOLD;
private static ChatColor color_default = ChatColor.RESET;
private static String pattern_empty = ".";
private static String pattern_full = "|";
public static String progressBar(double[] values, ChatColor[] colors, double total, int nbCar)
{
int[] sizes = new int[values.length];
int max_size = nbCar - pattern_start.length() - pattern_end.length();
for (int i=0; i<values.length; i++)
{
double sum_values_before = 0;
for (int j = i ; j>=0; j--)
sum_values_before += values[j];
int car_position = NumberConversions.round(max_size * sum_values_before / total);
// évite les barre de progressions plus grandes que la taille demandée
if (car_position > max_size) car_position = max_size;
int sum_sizes_before = 0;
for (int j = i-1 ; j>=0; j--)
sum_sizes_before += sizes[j];
sizes[i] = car_position - sum_sizes_before;
}
int sum_sizes = 0;
String bar = color_decoration+pattern_start;
for (int i=0; i<sizes.length; i++)
{
sum_sizes += sizes[i];
ChatColor color = color_default;
if (colors != null && i < colors.length && colors[i] != null)
color = colors[i];
bar = bar + color;
for (int j=0; j<sizes[i]; j++)
bar = bar + pattern_full;
}
bar = bar + color_empty;
for (int j=0; j<(max_size-sum_sizes); j++)
bar = bar + pattern_empty;
bar = bar + color_decoration + pattern_end;
return bar;
}
public static String progressBar(double value, ChatColor color, double max, int nbCar)
{
double[] d = new double[1]; d[0] = value;
ChatColor[] c = new ChatColor[1]; c[0] = color;
return progressBar(d, c, max, nbCar);
}
}