예제 #1
0
 public static async Task SaveUnidentifiedArtifactAsync(UnidentifiedArtifact unidentifiedArtifact)
 {
     using (var db = new CypherContext())
     {
         db.UnidentifiedArtifacts.Add(unidentifiedArtifact);
         await db.SaveChangesAsync();
     }
 }
예제 #2
0
        public static async Task <List <UnidentifiedCypher> > GetAllUnidentifiedCyphersAsync()
        {
            using (var db = new CypherContext())
            {
                var cyList = await db.UnidentifiedCyphers.ToListAsync();

                return(cyList);
            }
        }
예제 #3
0
        public static async Task SaveUnidentifiedCypherAsync(UnidentifiedCypher unidentifiedCypher)
        {
            using (var db = new CypherContext())
            {
                db.UnidentifiedCyphers.Add(unidentifiedCypher);

                await db.SaveChangesAsync();
            }
        }
예제 #4
0
        public static async Task <List <Cypher> > GetAllCyphersAsync()
        {
            using (var db = new CypherContext())
            {
                var cyList = await db.Cyphers.Include(x => x.EffectOptions).Include(x => x.Forms).ToListAsync();

                return(cyList);
            }
        }
예제 #5
0
        public static async Task <List <ArtifactQuirk> > GetAllArtifactQuirksAsync()
        {
            using (var db = new CypherContext())
            {
                var artList = await db.ArtifactQuirks.ToListAsync();

                return(artList);
            }
        }
예제 #6
0
        public static async Task <List <UnidentifiedArtifact> > GetAllUnidentifiedArtifactsAsync()
        {
            using (var db = new CypherContext())
            {
                var artifacts = await db.UnidentifiedArtifacts.ToListAsync();

                return(artifacts);
            }
        }
예제 #7
0
        public static async Task <List <Oddity> > GetAllOdditysAsync()
        {
            using (var db = new CypherContext())
            {
                var oddList = await db.Oddities.ToListAsync();

                return(oddList);
            }
        }
예제 #8
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", false, true)
                          .AddJsonFile("secrets.json", true, true);

            Configuration = builder.Build();

            // Use this if you want App_Data off your project root folder
            string baseDir = Directory.GetCurrentDirectory();

            AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(baseDir, "DataFiles"));

            discord = new DiscordClient(new DiscordConfiguration
            {
                Token                 = Environment.GetEnvironmentVariable("DiscordAPIKey") ?? Configuration["token"],
                TokenType             = TokenType.Bot,
                UseInternalLogHandler = true,
                LogLevel              = LogLevel.Debug
            });

            commands = discord.UseCommandsNext(new CommandsNextConfiguration
            {
                StringPrefix  = Configuration["commandPrefix"],
                CaseSensitive = false
            });

            commands.RegisterCommands <Commands.DiceCommands>();
            commands.RegisterCommands <Commands.CypherCommands>();
            commands.RegisterCommands <Commands.AdminCommands>();

            interactivity = discord.UseInteractivity(new InteractivityConfiguration()
            {
            });

            //Initialize the database and migrate on start.
            var db = new CypherContext();

            db.Database.Migrate();

            if (Configuration["appInitialize"].ToLower() == "true")
            {
                Console.WriteLine("Initializing the database.");

                await Utilities.DatabaseHelper.InitializeDatabaseAsync();

                Console.WriteLine("Database Initialized, please set the appInitialize flag in appsettings.json to false in order to stop the database from being overridden again.");

                System.Threading.Thread.Sleep(3000);
            }

            await discord.ConnectAsync();

            await Task.Delay(-1);
        }
예제 #9
0
        public static async Task SaveCurrentCharacterAsync(string playerId, Character charToSave)
        {
            using (var db = new CypherContext())
            {
                var chr = db.Characters
                          .Include(x => x.Cyphers)
                          .Include(x => x.Inventory)
                          .Include(x => x.RecoveryRolls)
                          .FirstOrDefault(x => x.CharacterId == charToSave.CharacterId);

                if (chr == null)
                {
                    db.Characters.Add(charToSave);
                }
                else
                {
                    db.Entry(chr).CurrentValues.SetValues(charToSave);

                    foreach (var cy in chr.Cyphers)
                    {
                        if (!charToSave.Cyphers.Any(x => x.CypherId == cy.CypherId))
                        {
                            db.Remove(cy);
                        }
                    }

                    foreach (var inv in chr.Inventory)
                    {
                        if (!charToSave.Inventory.Any(x => x.InventoryId == inv.InventoryId))
                        {
                            db.Remove(inv);
                        }
                    }

                    foreach (var roll in chr.RecoveryRolls)
                    {
                        if (!charToSave.RecoveryRolls.Any(x => x.RecoveryRollId == roll.RecoveryRollId))
                        {
                            db.Remove(roll);
                        }
                    }
                }

                try
                {
                    await db.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw;
                }
            }
        }
예제 #10
0
 public static async Task RemoveUnidentifiedCypherAsync(int unidentifiedCypherID)
 {
     using (var db = new CypherContext())
     {
         var uCypherToRemove = new UnidentifiedCypher()
         {
             UnidentifiedCypherId = unidentifiedCypherID
         };
         db.UnidentifiedCyphers.Remove(uCypherToRemove);
         await db.SaveChangesAsync();
     }
 }
예제 #11
0
        public static async Task <List <Character> > GetCurrentPlayersCharactersAsync(CommandContext ctx)
        {
            using (var db = new CypherContext())
            {
                var chars = await db.Characters
                            .Include(x => x.Cyphers)
                            .Include(x => x.Inventory)
                            .Include(x => x.RecoveryRolls).Where(x => x.Player == ctx.Member.Username + ctx.Member.Discriminator).ToListAsync();

                return(chars);
            }
        }
예제 #12
0
 public static async Task RemoveUnidentifiedArtifactAsync(int unidentifiedArtifactID)
 {
     using (var db = new CypherContext())
     {
         var uArtifactToRemove = new UnidentifiedArtifact()
         {
             UnidentifiedArtifactId = unidentifiedArtifactID
         };
         db.UnidentifiedArtifacts.Remove(uArtifactToRemove);
         await db.SaveChangesAsync();
     }
 }
예제 #13
0
        /// <summary>
        /// Loads reference data from datafiles
        /// </summary>
        /// <returns></returns>
        public static async Task InitializeDatabaseAsync()
        {
            using (var db = new CypherContext())
            {
                try
                {
                    Console.WriteLine("Clearing Database...");
                    Console.WriteLine("Clearing Cyphers.");
                    db.Cyphers.RemoveRange(db.Cyphers.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Cyphers Cleared!");

                    Console.WriteLine("Clearing Artifacts.");
                    db.Artifacts.RemoveRange(db.Artifacts.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Artifacts Cleared!");

                    Console.WriteLine("Getting Cyphers from cyphers.json");
                    var cypherStrings = ""; //await Data.FileIO.GetFileString("cyphers");

                    Console.WriteLine("Parsing Cyphers.");
                    var cyphers = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Cypher> >(cypherStrings);

                    Console.WriteLine($"{cyphers.Count()} cyphers found! Adding.");
                    db.AddRange(cyphers);
                    await db.SaveChangesAsync();

                    Console.WriteLine("Getting Artifacts from artifacts.json");
                    var artifactStrings = ""; // await Data.FileIO.GetFileString("artifacts");

                    Console.WriteLine("Parsing Artifacts.");
                    var artifacts = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Artifact> >(artifactStrings);

                    Console.WriteLine($"{artifacts.Count()} artifacts found! Adding.");
                    db.AddRange(artifacts);
                    await db.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
예제 #14
0
 public CreaturesController(CypherContext context)
 {
     _context = context;
 }
예제 #15
0
        /// <summary>
        /// Loads reference data from datafiles
        /// </summary>
        public static async Task InitializeDatabaseAsync()
        {
            using (var db = new CypherContext())
            {
                try
                {
                    #region DatabaseClear
                    Console.WriteLine("Clearing Database...");

                    Console.WriteLine("Clearing Cyphers.");
                    db.Cyphers.RemoveRange(db.Cyphers.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Cyphers Cleared!");

                    Console.WriteLine("Clearing Artifacts.");
                    db.Artifacts.RemoveRange(db.Artifacts.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Artifacts Cleared!");

                    Console.WriteLine("Clearing Oddities.");
                    db.Oddities.RemoveRange(db.Oddities.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Oddities Cleared!");

                    Console.WriteLine("Clearing Artifact Quirks.");
                    db.ArtifactQuirks.RemoveRange(db.ArtifactQuirks.ToList());
                    await db.SaveChangesAsync();

                    Console.WriteLine("Artifact Quirks Cleared!");
                    #endregion

                    //Cyphers
                    #region CypherLoad
                    Console.WriteLine("Getting Cyphers from cyphers.json");
                    var cypherStrings = await Data.FileIO.GetFileString("cyphers");

                    Console.WriteLine("Parsing Cyphers.");
                    var cyphers = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Cypher> >(cypherStrings);

                    Console.WriteLine($"{cyphers.Count()} cyphers found! Adding.");
                    db.AddRange(cyphers);
                    await db.SaveChangesAsync();

                    #endregion

                    //Artifacts
                    #region ArtifactLoad
                    Console.WriteLine("Getting Artifacts from artifacts.json");
                    var artifactStrings = await Data.FileIO.GetFileString("artifacts");

                    Console.WriteLine("Parsing Artifacts.");
                    var artifacts = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Artifact> >(artifactStrings);

                    Console.WriteLine($"{artifacts.Count()} artifacts found! Adding.");
                    db.AddRange(artifacts);
                    await db.SaveChangesAsync();

                    #endregion

                    //Oddities
                    #region OddityLoad
                    Console.WriteLine("Getting Oddities from oddities.json");
                    var odditieStrings = await Data.FileIO.GetFileString("oddities");

                    Console.WriteLine("Parsing Artifacts.");
                    var oddities = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Oddity> >(odditieStrings);

                    Console.WriteLine($"{oddities.Count()} oddities found! Adding.");
                    db.AddRange(oddities);
                    await db.SaveChangesAsync();

                    #endregion

                    //Artifact Quirks
                    #region ArtifactQuirkLoad
                    Console.WriteLine("Getting Artifact Quirks from artifactquirks.json");
                    var artifactQuirkStrings = await Data.FileIO.GetFileString("artifactquirks");

                    Console.WriteLine("Parsing Artifacts.");
                    var artifactQuirks = Newtonsoft.Json.JsonConvert.DeserializeObject <List <ArtifactQuirk> >(artifactQuirkStrings);

                    Console.WriteLine($"{artifactQuirks.Count()} artifact quirks found! Adding.");
                    db.AddRange(artifactQuirks);
                    await db.SaveChangesAsync();

                    #endregion
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
예제 #16
0
 public CharacterController(CypherContext cypherContext)
 {
     this.cypherContext = cypherContext;
 }