コード例 #1
0
        public static void ServerSteamNetTick(MultiplayerServer server)
        {
            foreach (var packet in ReadPackets())
            {
                if (packet.joinPacket)
                {
                    ClearChannel(0);
                }

                var player = server.players.FirstOrDefault(p => p.conn is SteamBaseConn conn && conn.remoteId == packet.remote);

                if (packet.joinPacket && player == null)
                {
                    IConnection conn = new SteamServerConn(packet.remote);
                    conn.State  = ConnectionStateEnum.ServerJoining;
                    player      = server.OnConnected(conn);
                    player.type = PlayerType.Steam;

                    player.steamId          = (ulong)packet.remote;
                    player.steamPersonaName = SteamFriends.GetFriendPersonaName(packet.remote);
                    if (player.steamPersonaName.Length == 0)
                    {
                        player.steamPersonaName = "[unknown]";
                    }

                    conn.Send(Packets.Server_SteamAccept);
                }

                if (!packet.joinPacket && player != null)
                {
                    player.HandleReceive(packet.data, packet.reliable);
                }
            }
        }