예제 #1
0
        /// <summary>
        /// Performs the captain's player pick.
        /// </summary>
        /// <param name="c">The command argument information.</param>
        /// <param name="team">The team on which the player should be placed.</param>
        /// <returns></returns>
        private async Task DoPlayerPick(Cmd c, Team team)
        {
            if (!_manager.AvailablePlayers.Contains(Helpers.GetArgVal(c, 1)))
            {
                StatusMessage = string.Format("^1[ERROR]^3 {0} is not an eligible player!",
                                              Helpers.GetArgVal(c, 1));
                await SendServerTell(c, StatusMessage);

                await _manager.DisplayAvailablePlayers();
                await ShowWhosePick(team);

                return;
            }
            await _sst.QlCommands.QlCmdSay(string.Format("^5[PICKUP] {0} ^7({1}{2}^7) picked {1}{3}",
                                                         ((team == Team.Red) ? "^1RED" : "^5BLUE"), ((team == Team.Red) ? "^1" : "^5"),
                                                         ((team == Team.Red) ? RedCaptain : BlueCaptain), Helpers.GetArgVal(c, 1)), false);

            if (team == Team.Red)
            {
                _manager.RemoveEligibility(Helpers.GetArgVal(c, 1));
                await _sst.QlCommands.CustCmdPutPlayer(Helpers.GetArgVal(c, 1), Team.Red);

                _manager.AddActivePickupPlayer(Helpers.GetArgVal(c, 1));
                await SetPickingTeam(Team.Blue);

                Log.Write(string.Format("RED captain picked player {0}",
                                        Helpers.GetArgVal(c, 1)), _logClassType, _logPrefix);
            }
            else if (team == Team.Blue)
            {
                _manager.RemoveEligibility(Helpers.GetArgVal(c, 1));
                await _sst.QlCommands.CustCmdPutPlayer(Helpers.GetArgVal(c, 1), Team.Blue);

                _manager.AddActivePickupPlayer(Helpers.GetArgVal(c, 1));
                await SetPickingTeam(Team.Red);

                Log.Write(string.Format("BLUE captain picked player {0}",
                                        Helpers.GetArgVal(c, 1)), _logClassType, _logPrefix);
            }

            // Notify player
            await _manager.NotifyNewPlayer(Helpers.GetArgVal(c, 1), team);

            // Teams are full, we are ready to start
            if (_manager.AreTeamsFull)
            {
                //At this point, add the game to the pickupgames table
                var pickupDb = new DbPickups();
                pickupDb.AddPickupGame(_manager.CreatePickupInfo());

                _manager.HasTeamSelectionStarted = false;
                await
                _sst.QlCommands.QlCmdSay(
                    "^5[PICKUP]^4 *** ^7TEAMS ARE ^3FULL.^7 PLEASE ^2*READY UP (F3)*^7 TO START THE GAME! ^4***", false);

                await
                _sst.QlCommands.QlCmdSay(
                    "^5[PICKUP]^7 Any unpicked players or late-adders will be automatically added to the substitutes list when the game starts!",
                    false);

                Log.Write("Teams are now full!", _logClassType, _logPrefix);
            }
        }