#pragma once

class IModuleInterface
{
public:
    /**
     * Virtual destructor.
     */
    virtual ~IModuleInterface() = default;
public:
    /**
     * Called after the module has been loaded.
     */
    virtual void StartupModule() = 0;

    /**
     * Called before the module is unloaded.
     */
    virtual void ShutdownModule() = 0;
public:
    /**
     * Gets the name of the module.
     *
     * @return The name of the module.
     */
    virtual const char* GetName() = 0;
public:
    /**
     * Checks to see if the module is a game module.
     *
     * @return Whether or not the module is a game module.
     */
    virtual bool IsGameModule() const { return false; }
};