SaneEconomy/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/economy/Currency.java

106 lines
3.2 KiB
Java
Raw Normal View History

2016-06-14 05:06:58 +02:00
package org.appledash.saneeconomy.economy;
import com.google.common.base.Strings;
import org.appledash.saneeconomy.utils.MessageUtils;
import org.bukkit.configuration.ConfigurationSection;
2016-06-14 05:06:58 +02:00
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
2016-06-14 05:06:58 +02:00
/**
* Created by AppleDash on 6/13/2016.
* Blackjack is still best pony.
*
* Represents an in-game currency.
*/
public class Currency {
2016-06-14 10:59:16 +02:00
private final String nameSingular;
private final String namePlural;
private final DecimalFormat format;
2017-06-08 00:38:48 +02:00
private final String formatBalance;
2016-06-14 05:06:58 +02:00
public Currency(String nameSingular, String namePlural, DecimalFormat format) {
2016-06-14 05:06:58 +02:00
this.nameSingular = nameSingular;
this.namePlural = namePlural;
this.format = format;
this.formatBalance = "{1} {2}";
2017-06-08 00:38:48 +02:00
}
public Currency(String nameSingular,String namePlural,DecimalFormat format,String formatBalance){
this.nameSingular = nameSingular;
this.namePlural = namePlural;
this.format = format;
this.formatBalance = formatBalance;
2016-06-14 05:06:58 +02:00
}
public static Currency fromConfig(ConfigurationSection config) {
DecimalFormat format = new DecimalFormat(config.getString("format", "0.00"));
if (config.getInt("grouping", 0) > 0) {
DecimalFormatSymbols symbols = format.getDecimalFormatSymbols();
if (symbols.getDecimalSeparator() == ',') { // French
symbols.setGroupingSeparator(' ');
} else {
symbols.setGroupingSeparator(',');
}
String groupingSeparator = config.getString("grouping-separator", null);
if (!Strings.isNullOrEmpty(groupingSeparator)) {
symbols.setGroupingSeparator(groupingSeparator.charAt(0));
}
format.setDecimalFormatSymbols(symbols);
format.setGroupingUsed(true);
format.setGroupingSize(3);
}
2016-06-14 05:06:58 +02:00
return new Currency(
config.getString("name.singular", "dollar"),
config.getString("name.plural", "dollars"),
2017-06-08 00:38:48 +02:00
format,
config.getString("balance-format","%s %s")
2016-06-14 05:06:58 +02:00
);
}
/**
* Format a money amount with this currency's format.
* @param amount Money amount.
* @return Formatted amount string.
*/
public String formatAmount(double amount) {
if (amount == 1) {
return MessageUtils.indexedFormat(formatBalance, format.format(amount), nameSingular);
// return String.format(formatBalance, format.format(amount), nameSingular);
2016-06-14 05:06:58 +02:00
}
return MessageUtils.indexedFormat(formatBalance, format.format(amount), namePlural);
// return String.format(formatBalance, format.format(amount), namePlural);
2016-06-14 05:06:58 +02:00
}
/**
* Get this currency's singular name.
* Example: "Dollar"
* @return Singular name.
*/
public String getSingularName() {
return nameSingular;
}
/**
* Get this currency's plural name.
* Example: "Dollars"
* @return Plural name.
*/
public String getPluralName() {
return namePlural;
}
/**
* Get this currency's number format.
* @return DecimalFormat instance
*/
public DecimalFormat getFormat() {
return format;
}
2016-06-14 05:06:58 +02:00
}