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")); }
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)); }