use of au.com.mineauz.minigames.stats.StatSettings in project Minigames by AddstarMC.
the class MySQLBackend method saveStatSettings.
@Override
public void saveStatSettings(Minigame minigame, Collection<StatSettings> settings) {
ConnectionHandler handler = null;
try {
handler = pool.getConnection();
handler.beginTransaction();
int minigameId = getMinigameId(handler, minigame);
for (StatSettings setting : settings) {
handler.batchUpdate(saveStatSettings, minigameId, setting.getStat().getName(), setting.getDisplayName(), setting.getFormat().name().toUpperCase());
}
handler.executeBatch(saveStatSettings);
handler.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
handler.endTransactionFail();
} finally {
if (handler != null) {
handler.release();
}
}
}
use of au.com.mineauz.minigames.stats.StatSettings in project Minigames by AddstarMC.
the class SQLiteBackend method loadStatSettings.
@Override
public Map<MinigameStat, StatSettings> loadStatSettings(Minigame minigame) {
ConnectionHandler handler = null;
try {
handler = pool.getConnection();
int minigameId = getMinigameId(handler, minigame);
ResultSet rs = handler.executeQuery(loadStatSettings, minigameId);
Map<MinigameStat, StatSettings> settings = Maps.newHashMap();
try {
while (rs.next()) {
String statName = rs.getString("stat");
String rawFormat = rs.getString("format");
String displayName = rs.getString("display_name");
MinigameStat stat = MinigameStats.getStat(statName);
if (stat == null) {
// Just ignore it
continue;
}
// Decode format
StatFormat format = null;
for (StatFormat f : StatFormat.values()) {
if (f.name().equalsIgnoreCase(rawFormat)) {
format = f;
break;
}
}
if (format == null) {
format = stat.getFormat();
}
StatSettings setting = new StatSettings(stat, format, displayName);
settings.put(stat, setting);
}
return settings;
} finally {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
return Collections.emptyMap();
} finally {
if (handler != null) {
handler.release();
}
}
}
use of au.com.mineauz.minigames.stats.StatSettings in project Minigames by AddstarMC.
the class MySQLBackend method loadStatSettings.
@Override
public Map<MinigameStat, StatSettings> loadStatSettings(Minigame minigame) {
ConnectionHandler handler = null;
try {
handler = pool.getConnection();
int minigameId = getMinigameId(handler, minigame);
ResultSet rs = handler.executeQuery(loadStatSettings, minigameId);
Map<MinigameStat, StatSettings> settings = Maps.newHashMap();
try {
while (rs.next()) {
String statName = rs.getString("stat");
String rawFormat = rs.getString("format");
String displayName = rs.getString("display_name");
MinigameStat stat = MinigameStats.getStat(statName);
if (stat == null) {
// Just ignore it
continue;
}
// Decode format
StatFormat format = null;
for (StatFormat f : StatFormat.values()) {
if (f.name().equalsIgnoreCase(rawFormat)) {
format = f;
break;
}
}
if (format == null) {
format = stat.getFormat();
}
StatSettings setting = new StatSettings(stat, format, displayName);
settings.put(stat, setting);
}
return settings;
} finally {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
return Collections.emptyMap();
} finally {
if (handler != null) {
handler.release();
}
}
}
use of au.com.mineauz.minigames.stats.StatSettings in project Minigames by AddstarMC.
the class ScoreboardDisplay method displayMenu.
public void displayMenu(MinigamePlayer player) {
final Menu setupMenu = new Menu(3, "Setup Scoreboard", player);
StatSettings settings = minigame.getSettings(stat);
final MenuItemCustom statisticChoice = new MenuItemCustom("Statistic", Material.BOOK_AND_QUILL);
statisticChoice.setDescription(Arrays.asList(ChatColor.GREEN + settings.getDisplayName()));
final MenuItemCustom fieldChoice = new MenuItemCustom("Statistic Field", Material.PAPER);
fieldChoice.setDescription(Arrays.asList(ChatColor.GREEN + field.getTitle()));
statisticChoice.setClick(new InteractionInterface() {
@Override
public Object interact(Object object) {
Menu childMenu = MinigameStats.createStatSelectMenu(setupMenu, new Callback<MinigameStat>() {
@Override
public MinigameStat getValue() {
throw new UnsupportedOperationException();
}
@Override
public void setValue(MinigameStat value) {
stat = value;
StatSettings settings = minigame.getSettings(stat);
statisticChoice.setDescription(Arrays.asList(ChatColor.GREEN + settings.getDisplayName()));
// Check that the field is valid
StatValueField first = null;
boolean valid = false;
for (StatValueField sfield : settings.getFormat().getFields()) {
if (first == null) {
first = sfield;
}
if (sfield == field) {
valid = true;
break;
}
}
// Update the field
if (!valid) {
field = first;
fieldChoice.setDescription(Arrays.asList(ChatColor.GREEN + value.toString()));
}
}
});
childMenu.displayMenu(setupMenu.getViewer());
return null;
}
});
fieldChoice.setClick(new InteractionInterface() {
@Override
public Object interact(Object object) {
StatSettings settings = minigame.getSettings(stat);
Menu childMenu = MinigameStats.createStatFieldSelectMenu(setupMenu, settings.getFormat(), new Callback<StatValueField>() {
@Override
public StatValueField getValue() {
throw new UnsupportedOperationException();
}
@Override
public void setValue(StatValueField value) {
field = value;
fieldChoice.setDescription(Arrays.asList(ChatColor.GREEN + value.getTitle()));
}
});
childMenu.displayMenu(setupMenu.getViewer());
return null;
}
});
setupMenu.addItem(statisticChoice);
setupMenu.addItem(fieldChoice);
List<String> sbotypes = new ArrayList<String>();
for (ScoreboardOrder o : ScoreboardOrder.values()) {
sbotypes.add(o.toString().toLowerCase());
}
setupMenu.addItem(new MenuItemList("Scoreboard Order", Material.ENDER_PEARL, new Callback<String>() {
@Override
public void setValue(String value) {
order = ScoreboardOrder.valueOf(value.toUpperCase());
}
@Override
public String getValue() {
return order.toString().toLowerCase();
}
}, sbotypes));
setupMenu.addItem(new MenuItemScoreboardSave("Create Scoreboard", Material.REDSTONE_TORCH_ON, this), setupMenu.getSize() - 1);
setupMenu.displayMenu(player);
}
Aggregations