using Echo.UserInterface.Backend;
using SDL2Demo.Forms;
using skyscraper5.Skyscraper;
using skyscraper5.Skyscraper.Gps;
using skyscraper5.Skyscraper.IO;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.Skyscraper.Scraper.Storage;
using skyscraper8.Skyscraper.Plugins;
using skyscraper8.Skyscraper.Scraper.Storage;
using SkyscraperUI;

namespace SDL2Demo
{
    internal class JobContext
    {
        public Random RNG { get; set; }
        public Thread Thread { get; set; }
        public bool ReadyForNextJob { get; set; }
        public IJob Job { get; set; }

        public Queue<MessageWindow> MessageQueue { get; set; }
        public CharSet[] Puppets { get; set; }
        public PluginAppenderEx ScraperEventLogger { get; set; }
        public DataStorage DataStorage { get; set; }
        public ObjectStorage ObjectStorage { get; set; }
        public bool CanCancel { get; set; }
        public List<IRenderable> Renderables { get; set; }

        public List<IPressurePlate> PressurePlates { get; set; }
        //public LogWindow LogWindow { get; set; }
        public bool MemorySaverMode { get; set; }
        public IStreamReader StreamReader { get; set; }
        public Ini Ini { get; set; }
        public ImGuiDevice ImgUiDevice { get; internal set; }
        public IGpsReceiver Gps { get; set; }
    }
}
