using Contexts; using Microsoft.EntityFrameworkCore; using Model.Immortal.BuildOrders; using Model.Immortal.Economy; using Model.Immortal.Entity; using Model.Immortal.MemoryTester; using Model.Website; using Model.Website.Enums; using Model.Work.Git; using Model.Work.Tasks; using Services.Immortal; namespace Services; public interface IWebsiteService { #if NO_SQL public List WebPageModels { get; set; } public List WebSectionModels { get; set; } #else public DbSet WebPageModels { get; } public DbSet WebSectionModels { get; } #endif public void Subscribe(Action action); public void Unsubscribe(Action action); public void Update(); #if NO_SQL public Task Load(); #else public Task Load(DatabaseContext database); #endif public bool IsLoaded(); } public interface IAgileService { #if NO_SQL public List SprintModels { get; set; } public List TaskModels { get; set; } #else public DbSet SprintModels { get; } public DbSet TaskModels { get; } #endif public void Subscribe(Action action); public void Unsubscribe(Action action); public void Update(); #if NO_SQL public Task Load(); #else public Task Load(DatabaseContext database); #endif public bool IsLoaded(); } public interface IGitService { #if NO_SQL public List ChangeModels { get; set; } public List PatchModels { get; set; } #else public DbSet ChangeModels { get; } public DbSet PatchModels { get; } #endif public void Subscribe(Action action); public void Unsubscribe(Action action); public void Update(); #if NO_SQL public Task Load(); #else public Task Load(DatabaseContext database); #endif public bool IsLoaded(); } public interface INavigationService { public void Subscribe(Action action); public void Unsubscribe(Action action); public void ChangeNavigationState(string newState); public string GetNavigationState(); public void Back(); public void SelectSection(int webSectionType); public void SelectPage(int pageType, Type webPageType); public NavSelectionType GetNavSelectionType(); public int GetWebPageId(); public int GetWebSectionId(); public Type GetRenderType(); } public interface IBuildComparisonService { public void SetBuilds(BuildComparisonModel buildComparison); public BuildComparisonModel Get(); public string BuildOrderAsYaml(); public string AsJson(); public bool LoadJson(string data); public void Subscribe(Action action); public void Unsubscribe(Action action); } public interface ITimingService { public int GetTiming(); public void SetTiming(int timing); public void Subscribe(Action action); public void Unsubscribe(Action action); } public interface IEconomyService { public List GetOverTime(); public EconomyModel GetEconomy(int atInterval); public void Calculate(IBuildOrderService buildOrder, ITimingService timing, int fromInterval); public void Subscribe(Action action); public void Unsubscribe(Action action); } public interface IEntityFilterService { public delegate void EntityFilterAction(EntityFilterEvent entityFilterEvent); public string GetFactionType(); public string GetImmortalType(); public string GetEntityType(); public string GetSearchText(); public List GetFactionChoices(); public List GetImmortalChoices(); public List GetEntityChoices(); public bool SelectFactionType(string factionType); public bool SelectImmortalType(string immortalType); public bool SelectEntityType(string entityType); public bool EnterSearchText(string searchText); public void Subscribe(EntityFilterAction action); public void Unsubscribe(EntityFilterAction action); } public interface IEntityService { public List GetEntities(); } public interface IImmortalSelectionService { public string GetFactionType(); public string GetImmortalType(); public bool SelectFactionType(string factionType); public bool SelectImmortalType(string immortalType); public void Subscribe(Action action); public void Unsubscribe(Action action); } public interface IKeyService { public List GetAllPressedKeys(); public string GetHotkey(); public string GetHotkeyGroup(); public bool IsHoldingSpace(); public bool AddPressedKey(string key); public bool RemovePressedKey(string key); public void Subscribe(Action action); public void Unsubscribe(Action action); } public interface IMemoryTesterService { public delegate void MemoryAction(MemoryTesterEvent memoryEvent); public List GetEntities(); public List GetQuestions(); void GenerateQuiz(); public void Update(MemoryQuestionModel question); public void Verify(); public void Subscribe(MemoryAction memoryAction); public void Unsubscribe(MemoryAction memoryAction); } public interface IBuildOrderService { public bool Add(EntityModel entity, IEconomyService withEconomy); public void Add(EntityModel entity, int atInterval); public void SetName(string Name); public string GetName(); public void SetNotes(string Notes); public string GetNotes(); public void SetColor(string Color); public string GetColor(); public bool MeetsRequirements(EntityModel entity, int interval); public Dictionary> GetOrders(); public List GetOrdersAt(int interval); public List GetCompletedAt(int interval); public List GetCompletedBefore(int interval); public List GetHarvestersCompletedBefore(int interval); public void RemoveLast(); public int GetLastRequestInterval(); public string BuildOrderAsYaml(); public string AsJson(); public void Subscribe(Action action); public void Unsubscribe(Action action); }