コード例 #1
0
        public void AutoDelete()
        {
            NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.isSaved == false && ctd.CreatedAt < DateTime.Now.AddHours(-6));

            if (CharToDelete != null)
            {
                //Need to unravel the new character object and delete the character objects connected to it
                //Spell Associations - check
                //Feature Associations - check
                //playerClass - check
                //playerRace - check
                //playerStat - check
                //playerBG - check
                List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (SpellAssoc sa in SpellsAssocToDelete)
                {
                    _context.Spell_Associations.Remove(sa);
                }
                List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (FeatureAssoc fa in FeatAssocToDelete)
                {
                    _context.Feature_Associations.Remove(fa);
                }
                PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId);
                _context.PlayerClasses.Remove(PClassToDelete);
                PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId);
                _context.PlayerRaces.Remove(PRaceToDelete);
                PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId);
                _context.PlayerStats.Remove(PStatToDelete);
                PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId);
                _context.PlayerBGs.Remove(PGBToDelete);

                _context.NewCharacter.Remove(CharToDelete);
            }
        }
コード例 #2
0
        public IActionResult deleteChar(int characterid)
        {
            NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.CharacterId == characterid);

            if (CharToDelete != null)
            {
                List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (SpellAssoc sa in SpellsAssocToDelete)
                {
                    _context.Spell_Associations.Remove(sa);
                }
                List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (FeatureAssoc fa in FeatAssocToDelete)
                {
                    _context.Feature_Associations.Remove(fa);
                }
                PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId);
                _context.PlayerClasses.Remove(PClassToDelete);
                PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId);
                _context.PlayerRaces.Remove(PRaceToDelete);
                PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId);
                _context.PlayerStats.Remove(PStatToDelete);
                PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId);
                _context.PlayerBGs.Remove(PGBToDelete);

                _context.NewCharacter.Remove(CharToDelete);
            }
            _context.SaveChanges();
            int?SessionId = HttpContext.Session.GetInt32("UserId");

            return(RedirectToAction("Profile", new { ID = SessionId }));
        }
コード例 #3
0
        public IActionResult SpecificGeneration(string selectedrace, string selectedclass, string selectedlevel)
        {
            AutoDelete();
            int? SessionId   = HttpContext.Session.GetInt32("UserId");
            User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId);

            if (SessionUser == null)
            {
                return(View("UserLogin"));
            }
            int Level = Int32.Parse(selectedlevel);

            if (Level == 0) //Assign the base choice value as == 0
            {
                Level = rand.Next(1, 21);
            }
            //creating input for creation and modification of base in other functions
            PlayerStat playerStat = new PlayerStat(Level);

            // Run player stat through background
            PlayerBG playerBG = new PlayerBG();

            // Returns player Stat VVV
            playerBG.BGSelector(playerStat, playerBG);

            // Determines player Race and then run stats
            PlayerRace playerRace = new PlayerRace();

            // Returns player Stat VVV

            // Determine Player Class and run playerStat
            if (selectedrace != "Random")
            {
                playerRace.SpecificRaceSelector(Level, playerStat, playerRace, selectedrace);
            }
            else
            {
                playerRace.RaceSelector(Level, playerStat, playerRace);
            }
            PlayerClass playerClass = new PlayerClass(Level, playerStat);

            // Returns player Stat VVV
            if (selectedclass != "Random")
            {
                playerClass.SpecClassSelector(Level, playerStat, playerClass, selectedclass);
            }
            else
            {
                playerClass.ClassSelector(Level, playerStat, playerClass);
            }
            // reruns numbers based on updated proficiencies and skill increases
            playerStat.UpdatePro(playerStat);

            // create connection to all character objects within the character
            NewCharacter newPlayer = new NewCharacter(Level, playerStat, playerRace, playerClass, playerBG, SessionUser);

            _context.PlayerStats.Add(playerStat);
            _context.PlayerBGs.Add(playerBG);
            _context.PlayerClasses.Add(playerClass);
            _context.PlayerRaces.Add(playerRace);
            _context.NewCharacter.Add(newPlayer);

            // Feat Generation
            List <Feature> charFeatures = _context.Features.Where(f => ((f.FeatSource == playerClass.ClassName) && (f.FeatLevel <= Level)) || ((f.FeatSource == playerClass.SubClassName) && (f.FeatLevel <= Level))).ToList();

            foreach (Feature feat in charFeatures)
            {
                var Fassoc = new FeatureAssoc(newPlayer, feat);
                _context.Feature_Associations.Add(Fassoc);
                _context.SaveChanges();
            }

            List <Feature> Feats = _context.NewCharacter.Include(c => c.FeaturesList)
                                   .ThenInclude(fa => fa.FeatureA)
                                   .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId)
                                   .FeaturesList.Select(f => f.FeatureA)
                                   .OrderBy(f => f.FeatLevel)
                                   .ToList();


            List <Spell> ClassAvailbleSpells = _context.Spells.Where(s =>
                                                                     s.Source1 == newPlayer.playerClass.ClassName ||
                                                                     s.Source2 == newPlayer.playerClass.ClassName ||
                                                                     s.Source3 == newPlayer.playerClass.ClassName ||
                                                                     s.Source4 == newPlayer.playerClass.ClassName ||
                                                                     s.Source5 == newPlayer.playerClass.ClassName ||
                                                                     s.Source6 == newPlayer.playerClass.ClassName ||
                                                                     s.Source7 == newPlayer.playerClass.ClassName
                                                                     ).ToList();

            List <Spell> NonClassSpells = _context.Spells.Where(s =>
                                                                s.Source1 != newPlayer.playerClass.ClassName ||
                                                                s.Source2 != newPlayer.playerClass.ClassName ||
                                                                s.Source3 != newPlayer.playerClass.ClassName ||
                                                                s.Source4 != newPlayer.playerClass.ClassName ||
                                                                s.Source5 != newPlayer.playerClass.ClassName ||
                                                                s.Source6 != newPlayer.playerClass.ClassName ||
                                                                s.Source7 != newPlayer.playerClass.ClassName
                                                                ).ToList();

            Spell        FetchSpell           = new Spell();
            List <Spell> availableSpells      = FetchSpell.GetPossibleSpells(newPlayer, ClassAvailbleSpells, NonClassSpells);
            SpellAssoc   AlwaysPreppedChecker = new SpellAssoc();

            foreach (Spell s in availableSpells)
            {
                SpellAssoc a = new SpellAssoc(newPlayer, s);//always true
                AlwaysPreppedChecker.AlwaysPreppedChecker(newPlayer, s, a);
                _context.Spell_Associations.Add(a);
                _context.SaveChanges();
            }

            List <Spell> Spells = _context.NewCharacter
                                  .Include(c => c.SpellList)
                                  .ThenInclude(sa => sa.SpellA)
                                  .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId)
                                  .SpellList.Select(s => s.SpellA)
                                  .OrderBy(f => f.SpellLevel)
                                  .ThenBy(f => f.SpellName)
                                  .ToList();

            _context.SaveChanges();

            int passiveperception = 10 + newPlayer.playerStat.Perception;

            //Dynamic model with USer, Login, Character
            dynamic MyModel = new ExpandoObject();

            MyModel.User              = SessionUser;
            MyModel.Login             = new Login();
            MyModel.Character         = newPlayer;
            MyModel.Features          = Feats;
            MyModel.Spells            = Spells;
            MyModel.PassivePerception = passiveperception;
            return(View("Index", MyModel));
        }