// GET: CharacterInfo/Details/5 public ActionResult Duel(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CharacterInfo characterInfo = db.CharacterInfo.Find(id); if (characterInfo == null) { return(HttpNotFound()); } var user = UserManager.FindById(User.Identity.GetUserId()); if (characterInfo.PlayerID == user.Id) { DuelViewModel model = new DuelViewModel(); model.DuelInitiator = characterInfo; model.WinPercent = model.CalculateWinPercent(model.DuelInitiator); model.DuelInitiator.DuelsAvailable = 50; model.DuelInitiator.DuelHistory = db.DuelHistory.Where(x => x.CharacterInfoID == model.DuelInitiator.ID).ToList(); return(View(model)); } else { TempData["message"] = "Unable to access other player's characters."; return(RedirectToAction("Index", "CharacterInfo")); } }
public static DuelViewModel Execute(DuelViewModel duelCharacterInfo, CharacterClassContext db) { int totalPlayers = duelCharacterInfo.PlayersTotal; //Duel the amount of times requested for (int i = 0; i < duelCharacterInfo.DuelsRequested; i++) { int idToFind = -1; //As long as the player info is null, we want to repeat and select a new one, it would be null because the random number generated belongs to a deleted account while (idToFind <= 0) { idToFind = CheckIfPlayerExists(totalPlayers, db, duelCharacterInfo.DuelInitiator); }
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")); }