using System;

namespace Celeste.Mod.membrane;

public class membraneModule : EverestModule {
    public static membraneModule Instance { get; private set; }

    public override Type SettingsType => typeof(membraneModuleSettings);
    public static membraneModuleSettings Settings => (membraneModuleSettings) Instance._Settings;

    public override Type SessionType => typeof(membraneModuleSession);
    public static membraneModuleSession Session => (membraneModuleSession) Instance._Session;

    public override Type SaveDataType => typeof(membraneModuleSaveData);
    public static membraneModuleSaveData SaveData => (membraneModuleSaveData) Instance._SaveData;

    public membraneModule() {
        Instance = this;
#if DEBUG
        // debug builds use verbose logging
        Logger.SetLogLevel(nameof(membraneModule), LogLevel.Verbose);
#else
        // release builds use info logging to reduce spam in log files
        Logger.SetLogLevel(nameof(membraneModule), LogLevel.Info);
#endif
    }

    public override void Load() {
        // TODO: apply any hooks that should always be active
    }

    public override void Unload() {
        // TODO: unapply any hooks applied in Load()
    }
}