public ActionResult Simulate(string mode = "easy") { AspNetUser user = CSharpDbDAL.GetContextUser(User.Identity.Name); if (TempData["Monstars"] is null) { //Generate monstars based on Easy, Normal, or Hard TempData["Monstars"] = GenerateMonstarByMode(mode); } if (TempData["MyTeam"] is null) { TempData["MyTeam"] = CSharpDbDAL.GetTeamAsUserPlayer(user.Id); } List <UserPlayer> myTeam = (List <UserPlayer>)TempData["MyTeam"]; if (myTeam.Count < 5) { string noun = (5 - myTeam.Count) > 1 ? "players" : "player"; TempData["Message"] = $"You need {5 - myTeam.Count} more {noun} before you battle the Monstars"; return(View("Battle")); } var match = Arena(); CSharpDbDAL.UpdateTeamStats(user.Id, match.Item1); ViewBag.Message = match.Item2; return(View()); }
public ActionResult Battle() { TempData["Message"] = ""; TempData["Monstars"] = CSharpDbDAL.GetTeamAsUserPlayer(MONSTAR_OWNER_ID); AspNetUser user = CSharpDbDAL.GetContextUser(User.Identity.Name); TempData["MyTeam"] = CSharpDbDAL.GetTeamAsUserPlayer(user.Id); return(View()); }
public Tuple <bool, string> Arena() { AspNetUser currentUser = CSharpDbDAL.GetContextUser(User.Identity.Name); List <UserPlayer> monstarsDown = new List <UserPlayer>(); List <UserPlayer> monstars = CSharpDbDAL.GetTeamAsUserPlayer(MONSTAR_OWNER_ID); List <UserPlayer> myTeam = CSharpDbDAL.GetTeamAsUserPlayer(currentUser.Id); List <UserPlayer> myTeamDown = new List <UserPlayer>(); List <UserPlayer> HeadToHead = new List <UserPlayer>(); while (myTeam.Count >= 1 && monstars.Count >= 1) { //Players are picked at random from each team to go against each other int myTeamIndex = new Random().Next(0, myTeam.Count); int monstarIndex = new Random().Next(0, monstars.Count); HeadToHead = new List <UserPlayer> { myTeam[myTeamIndex], monstars[monstarIndex] }; //One player from each team goes against each other MatchUp(HeadToHead); //If my team player has no health if (HeadToHead[0].Health <= 0) { RemoveDownedPlayer(myTeam, myTeamDown, myTeamIndex); } //If monstar player is downed if (HeadToHead[1].Health <= 0) { RemoveDownedPlayer(monstars, monstarsDown, monstarIndex); } } if (myTeam.Count >= 1) { return(Tuple.Create(true, $"You won {myTeam.Count}-{monstars.Count}")); } string message = $"The Monstars won {monstars.Count}-{myTeam.Count}"; //Tuple to return win as bool and a custom message return(Tuple.Create(false, message)); }
private List <UserPlayer> GenerateMonstarByMode(string mode) { List <UserPlayer> monstars = CSharpDbDAL.GetTeamAsUserPlayer(MONSTAR_OWNER_ID); //Default is database set attributes switch (mode) { case "easy": SetModeAttributes(monstars, PlayerFactory.GetPlayer(PlayerType.Weak)); break; case "normal": SetModeAttributes(monstars, PlayerFactory.GetPlayer(PlayerType.Normal)); break; } return(monstars); }