package de.fau.cs.mad.fly.profile; import java.util.HashMap; import java.util.Map; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.JsonReader; import com.badlogic.gdx.utils.JsonValue; import de.fau.cs.mad.fly.res.PlaneUpgrade; /** * Manages the Upgrades for the Planes * * @author Sebastian * */ public class PlaneUpgradeManager { private JsonReader reader = new JsonReader(); private Map<String, PlaneUpgrade> upgrades; private static PlaneUpgradeManager Instance = new PlaneUpgradeManager(); public static PlaneUpgradeManager getInstance() { return Instance; } /** * Getter for the UpgradeList * * @return A Map containing all Upgrades for the Planes */ public Map<String, PlaneUpgrade> getUpgradeList() { if (upgrades == null) { upgrades = new HashMap<String, PlaneUpgrade>(); FileHandle dirHandle = Gdx.files.internal("spaceships/upgrades/"); for (FileHandle file : dirHandle.list()) { JsonValue json = reader.parse(file); JsonValue upgradeJson; int size = json.size; for (int i = 0; i < size; i++) { upgradeJson = json.get(i); PlaneUpgrade upgrade = new PlaneUpgrade(); upgrade.name = upgradeJson.getString("name"); upgrade.timesAvailable = upgradeJson.getInt("times"); upgrade.type = upgradeJson.getInt("type"); upgrade.price = upgradeJson.getInt("price"); upgrade.upgradeValues = upgradeJson.get("values").asIntArray(); upgrades.put(upgrade.name, upgrade); } } } return upgrades; } /** * Returns the Upgrade specified by the name * * @param name * - The name of the Upgrade * @return The Upgrade with the given name */ public PlaneUpgrade getUpgrade(String name) { return getUpgradeList().get(name); } }