using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
namespace Awperative;
///
/// Initiating class of Awperative. Call Start() to start the kernel.
///
/// Avery Norris
public static class Awperative
{
///
/// Bottom class of Awperative. Contains the MonoGame instance.
///
public static Base Base { get; internal set; }
///
/// Handles graphics settings through MonoGame.
///
public static GraphicsDeviceManager GraphicsDeviceManager { get; internal set; }
///
/// Handles drawing sprites to the screen through MonoGame.
///
public static SpriteBatch SpriteBatch { get; internal set; }
///
/// Handles loading content through MonoGame.
///
public static ContentManager ContentManager { get; internal set; }
///
/// List of all scenes currently loaded in the kernel.
///
public static List LoadedScenes => _loadedScenes.ToList();
internal static HashSet _loadedScenes { get; private set; }= [];
///
/// List of all event hooks currently loaded in the kernel.
///
public static List EventHooks => _eventHooks.ToList();
internal static HashSet _eventHooks { get; private set; } = [];
///
/// Start() begins the game; and begins communication with all event hooks.
///
/// List of all event hooks you wish to use.
/// You cannot add new hooks later; so make sure to register all of them in the Start() method.
public static void Start(List __hooks) {
_eventHooks = new HashSet(__hooks);
Base = new Base();
Base.Run();
}
}