package com.walrusone.skywars.controllers;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.walrusone.skywars.SkyWarsReloaded;
import com.walrusone.skywars.utilities.Messaging;
import com.walrusone.skywars.utilities.ParticleItem;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class ParticleController {
private final Map<String, ParticleItem> particleMap = Maps.newHashMap();
private final List<String> effects = Arrays.asList("water", "flame", "smoke", "critical", "slime", "snow", "magic",
"music", "happy", "angry", "potion", "poison", "alphabet", "lava", "lava_drip", "heart", "redstone", "sparks", "portal", "clouds");
public ParticleController() {
load();
}
public void load() {
particleMap.clear();
File particleFile = new File(SkyWarsReloaded.get().getDataFolder(), "particleeffects.yml");
if (!particleFile.exists()) {
SkyWarsReloaded.get().saveResource("particleeffects.yml", false);
}
if (particleFile.exists()) {
FileConfiguration storage = YamlConfiguration.loadConfiguration(particleFile);
if (storage.contains("effects")) {
for (String item : storage.getStringList("effects")) {
List<String> itemData = new LinkedList<String>(Arrays.asList(item.split(" ")));
int cost = Integer.parseInt(itemData.get(1));
String effect = itemData.get(0).toLowerCase();
String name = null;
if (effects.contains(effect)) {
name = new Messaging.MessageFormatter().format("effects." + effect);
}
if (name != null) {
particleMap.put(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)), new ParticleItem(effect, name, cost));
}
}
}
}
}
public ParticleItem getByName(String name) {
return particleMap.get(name);
}
public List<ParticleItem> getParticleItems() {
return Lists.newArrayList(particleMap.values());
}
public ParticleItem getByEffect(String effect) {
for (ParticleItem pItem: particleMap.values()) {
if (pItem.getEffect().equalsIgnoreCase(effect)) {
return pItem;
}
}
return null;
}
}