Esempio n. 1
0
        public ActionResult Edit([Bind(Include = "ID,CharacterName,CharacterClass,Level,StatPointsAvailable,CurrentExperience,MaxExperienceForLevel,Health,Strength,Dexterity,Vitality,Luck,PlayerID,DuelsAvailable,DuelWins,DuelLosses,Damage,CritChance,Dodge,CharacterInfo,DuelInitiator,DuelsRequested,DuelHistory")] DuelViewModel duelInfoReturn)
        {
            //Get the last entry in table as that IDs go up by 1 and that will always be the highest number for random generation
            CharacterInfo lastPlayer = new CharacterInfo();

            lastPlayer = db.CharacterInfo.OrderByDescending(x => x.ID).First();
            //Apply the last player to the view model to send to the duel logic
            duelInfoReturn.PlayersTotal = lastPlayer.ID;
            duelInfoReturn = CalculateDuelResultCommand.Execute(duelInfoReturn, db);

            //Set the character to the viewmodel
            CharacterInfo characterInfoSet = duelInfoReturn.DuelInitiator;
            CharacterInfo duelTargetInfo   = duelInfoReturn.DuelTarget;

            //This is only a test
            TempData["message"] = duelInfoReturn.DuelTarget.CharacterName + "Was his namo" + characterInfoSet.CharacterName + "was the fighter Wins are: " + characterInfoSet.DuelWins + "Losses are: " + characterInfoSet.DuelLosses;
            //db.Entry(characterInfoSet).State = EntityState.Modified;
            db.Set <CharacterInfo>().AddOrUpdate(characterInfoSet);
            db.Set <CharacterInfo>().AddOrUpdate(duelTargetInfo);
            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
Esempio n. 2
0
        public ActionResult Create([Bind(Include = "ID,CharacterName,CharacterClass,Level,StatPointsAvailable,CurrentExperience,MaxExperienceForLevel,Health,Strength,Dexterity,Vitality,Luck,PlayerID")] CharacterInfo characterInfo)
        {
            if (ModelState.IsValid)
            {
                //Check if the name is taken, if it is ask them to retry, reloading page with their stats distributed already.
                var characterNameCheck = db.CharacterInfo.FirstOrDefault(x => x.CharacterName == characterInfo.CharacterName);
                //If characterNameCheck is null then there was no match for an existing name, so we continue to check if everything else is correct for creation
                if (characterNameCheck == null)
                {
                    //Every character upon creation must spend their 30 stat points, giving them a total of 34. If their total stats
                    //is greater than 34, we know they tampered with something and redirect them to create.
                    if ((characterInfo.Strength + characterInfo.Dexterity + characterInfo.Vitality + characterInfo.Luck) == 34)
                    {
                        characterInfo.Health      = characterInfo.CalculateHealth(characterInfo);
                        characterInfo.Damage      = characterInfo.CalculateDamage(characterInfo);
                        characterInfo.CritChance  = characterInfo.CalculateCritChance(characterInfo);
                        characterInfo.DodgeChance = characterInfo.CalculateDodgeChance(characterInfo);
                        db.CharacterInfo.Add(characterInfo);
                        db.SaveChanges();
                        return(RedirectToAction("Index", "CharacterInfo"));
                    }
                    else
                    {
                        TempData["message"] = "Invalid stat points.";
                        return(RedirectToAction("Create"));
                    }
                    //Might be redundant, but another check to see if the names are the same and send back an error
                }
                else if (characterNameCheck.CharacterName == characterInfo.CharacterName)
                {
                    TempData["message"] = "Character name already taken.";
                    return(View(characterInfo));
                }
            }

            return(View(characterInfo));
        }