package com.gmail.nossr50.config;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.sounds.SoundType;

public class SoundConfig extends BukkitConfig {
    private static SoundConfig instance;

    public SoundConfig() {
        super("sounds.yml");
        validate();
        instance = this;
    }

    public static SoundConfig getInstance() {
        if (instance == null)
            return new SoundConfig();

        return instance;
    }

    @Override
    protected void loadKeys() {

    }

    @Override
    protected boolean validateKeys() {
        for (SoundType soundType : SoundType.values()) {
            if (config.getDouble("Sounds." + soundType.toString() + ".Volume") < 0) {
                mcMMO.p.getLogger().info("[mcMMO] Sound volume cannot be below 0 for " + soundType);
                return false;
            }

            //Sounds with custom pitching don't use pitch values
            if (!soundType.usesCustomPitch()) {
                if (config.getDouble("Sounds." + soundType + ".Pitch") < 0) {
                    mcMMO.p.getLogger().info("[mcMMO] Sound pitch cannot be below 0 for " + soundType);
                    return false;
                }
            }
        }
        return true;
    }

    public float getMasterVolume() {
        return (float) config.getDouble("Sounds.MasterVolume", 1.0);
    }

    public float getVolume(SoundType soundType) {
        String key = "Sounds." + soundType.toString() + ".Volume";
        return (float) config.getDouble(key);
    }

    public float getPitch(SoundType soundType) {
        String key = "Sounds." + soundType.toString() + ".Pitch";
        return (float) config.getDouble(key);
    }

    public boolean getIsEnabled(SoundType soundType) {
        String key = "Sounds." + soundType.toString() + ".Enabled";
        return config.getBoolean(key, true);
    }
}
