コード例 #1
0
 public ExtendedPlayer GetPlayerByAlias(string alias)
 {
     using (var db = new FoostatsContext())
     {
         var player = db.Players.First(x => x.DisplayName == alias);
         if (player == null)
         {
             throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)
             {
                 ReasonPhrase = string.Format("Player '{0}' could not be found.", alias)
             });
         }
         var trueskill = db.Trueskill.Include(x => x.Player).First(x => x.Player.DisplayName == alias);
         trueskill.Player = null;
         var winloss = db.WinLoss.Include(x => x.Player).First(x => x.Player.DisplayName == alias);
         winloss.Player = null;
         var extendedPlayer = new ExtendedPlayer()
         {
             Id                 = player.Id,
             DisplayName        = player.DisplayName,
             MutableDisplayName = player.MutableDisplayName,
             Password           = player.Password,
             Salt               = player.Salt,
             Trueskill          = trueskill,
             WinLoss            = winloss
         };
         return(extendedPlayer);
     }
 }
コード例 #2
0
 public void HandlePreviewBeatmapPacket(PreviewBeatmapPacket packet, ExtendedPlayer player)
 {
     if (Utilities.Utils.LevelIdToHash(packet.levelId) != null)
     {
         PreviewBeatmapStub preview = PreviewBeatmapManager.GetPreview(packet);
         if (!preview.isDownloaded)
         {
             BeatmapCharacteristicSO?characteristic = _beatmapCharacteristicCollection.GetBeatmapCharacteristicBySerializedName(packet.characteristic);
             HMMainThreadDispatcher.instance.Enqueue(() =>
             {
                 base.SetPlayerBeatmapLevel(player.userId, preview, packet.difficulty, characteristic);
             });
         }
     }
 }
コード例 #3
0
        public static void PrettyPrint(this ExtendedPlayer player, TextWriter outWriter = null)
        {
            if (outWriter == null)
            {
                outWriter = Console.Out;
            }

            outWriter.WriteLine("{0} ({1}):\n\tDisplay Name: {2}\n\tTrueskill: {3}\n\tWin - Loss: {4} - {5}",
                                player.Alias,
                                player.Id,
                                player.MutableDisplayName,
                                player.Trueskill.ConservativeRating,
                                player.WinLoss.Win,
                                player.WinLoss.Loss);
        }
コード例 #4
0
        /// <summary>
        /// Process action.
        /// </summary>
        /// <param name="protocol"></param>
        public void ProcessInput(Protocol.Protocol protocol, int playerId)
        {
            // Get player
            ExtendedPlayer player = _Players.FirstOrDefault(p => p.Player.Id == playerId);

            switch (protocol.Action)
            {
            case Protocol.Action.ACT_DOWN:
                if (player.Direction == Direction.Up)
                {
                    break;
                }
                player.Direction = Direction.Down;
                break;

            case Protocol.Action.ACT_JUMP:
                if (player.Jumping == 0)
                {
                    player.Jumping = _JumpLength;
                    player.Player.Position.Jumping = true;
                }
                break;

            case Protocol.Action.ACT_LEFT:
                if (player.Direction == Direction.Right)
                {
                    break;
                }
                player.Direction = Direction.Left;
                break;

            case Protocol.Action.ACT_RIGHT:
                if (player.Direction == Direction.Left)
                {
                    break;
                }
                player.Direction = Direction.Right;
                break;

            case Protocol.Action.ACT_UP:
                if (player.Direction == Direction.Down)
                {
                    break;
                }
                player.Direction = Direction.Up;
                break;
            }
        }
コード例 #5
0
        /// <summary>
        /// Reguster player.
        /// </summary>
        /// <returns>Start position.</returns>
        public void RegisterPlayer(Protocol.Player player)
        {
            ExtendedPlayer extendedPlayer = new ExtendedPlayer(player);

            extendedPlayer.Death  = false;
            extendedPlayer.Length = 0;

            Position position = new Position();
            int      halfSize = _FliedSize / 2;

            switch (_Starter)
            {
            case 0:
                position.X = halfSize + (_PlayerSize / 2);
                position.Y = 0;
                extendedPlayer.Direction = Direction.Up;
                break;

            case 1:
                position.X = _PlayerSize;
                position.Y = halfSize - (_PlayerSize / 2);
                extendedPlayer.Direction = Direction.Right;
                break;

            case 2:
                position.X = _FliedSize - _PlayerSize;
                position.Y = halfSize - (_PlayerSize / 2);
                extendedPlayer.Direction = Direction.Left;
                break;

            case 3:
                position.X = halfSize + (_PlayerSize / 2);
                position.Y = _FliedSize;
                extendedPlayer.Direction = Direction.Down;
                break;

            default:
                break;
            }
            _Starter++;
            player.Position = position;
            _Players.Add(extendedPlayer);
            return;
        }
コード例 #6
0
 private void HandleExtendedPlayerConnected(ExtendedPlayer player)
 => SetPlayerPlaceColor(player, player.playerColor);
コード例 #7
0
 private void HandlePlayerStateChanged(ExtendedPlayer player)
 {
     HarmonyPatches.GameServerPlayerTableColor.UpdateColor(player);
 }