コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }