using System.IO;

namespace MyNes.Core
{
    public class EmuSettings : ISettings
    {
    	public string SnapsFolder = "Snaps";

    	public string WavesFolder = "SoundRecords";

    	public string SnapsFormat = ".png";

    	public bool SnapsReplace;

    	public int RegionSetting;

    	public string StateFolder = "States";

    	public string GameGenieFolder = "GMCodes";

    	public string SRAMFolder = "Srams";

    	public bool SaveSRAMAtEmuShutdown = true;

    	public EmuSettings(string path)
    		: base(path)
    	{
    	}

    	public override void LoadSettings()
    	{
    		base.LoadSettings();
    		if (MyNesMain.WorkingFolder == null)
    		{
    			MyNesMain.MakeWorkingFolder();
    		}
    		if (SnapsFolder == "Snaps")
    		{
    			SnapsFolder = Path.Combine(MyNesMain.WorkingFolder, "Snaps");
    		}
    		if (StateFolder == "States")
    		{
    			StateFolder = Path.Combine(MyNesMain.WorkingFolder, "States");
    		}
    		if (GameGenieFolder == "GMCodes")
    		{
    			GameGenieFolder = Path.Combine(MyNesMain.WorkingFolder, "GMCodes");
    		}
    		if (SRAMFolder == "Srams")
    		{
    			SRAMFolder = Path.Combine(MyNesMain.WorkingFolder, "Srams");
    		}
    		if (WavesFolder == "SoundRecords")
    		{
    			WavesFolder = Path.Combine(MyNesMain.WorkingFolder, "SoundRecords");
    		}
    		try
    		{
    			Directory.CreateDirectory(WavesFolder);
    		}
    		catch
    		{
    			Tracer.WriteError("Cannot create sound records folder !!");
    		}
    		try
    		{
    			Directory.CreateDirectory(SnapsFolder);
    		}
    		catch
    		{
    			Tracer.WriteError("Cannot create snaps folder !!");
    		}
    		try
    		{
    			Directory.CreateDirectory(StateFolder);
    		}
    		catch
    		{
    			Tracer.WriteError("Cannot create states folder !!");
    		}
    		try
    		{
    			Directory.CreateDirectory(SRAMFolder);
    		}
    		catch
    		{
    			Tracer.WriteError("Cannot create srams folder !!");
    		}
    		try
    		{
    			Directory.CreateDirectory(GameGenieFolder);
    		}
    		catch
    		{
    			Tracer.WriteError("Cannot create game genie codes folder !!");
    		}
    		StateHandler.StateFolder = StateFolder;
    	}
    }
}