Esempio n. 1
0
        private void OnPlayerJoined(CharacterJoinedPacket packet)
        {
            Debug.Log($"[Client] Player joined: {packet.UserName}");
            var clientCharacter = new ClientCharacter(packet.CharacterPacket.Id, packet.UserName);

            _clientManager.AddCharadcter(packet.CharacterPacket.Id, clientCharacter);
        }
        private void OnJoin(JoinPacket packet, NetPeer peer)
        {
            Debug.Log("[S] Join packet received: " + packet.UserName);

            var serverCharacter = new ServerCharacter(packet.UserName, peer, Gameconfig.StartingPoint[peer.Id]);

            _serverManager.AddCharadcter((byte)peer.Id, serverCharacter);

            //Send join accept
            var ja = new JoinAcceptPacket {
                Id = (byte)peer.Id, UserName = packet.UserName, ServerTick = _serverTick
            };

            peer.Send(WritePacket(ja), SendType.ReliableOrdered);

            // 들어온 친구한테 기존 정보 다 보내줌
            var pj = new CharacterJoinedPacket {
                UserName        = packet.UserName,
                NewCharacter    = true,
                CharacterPacket = serverCharacter.CharacterPacket,
                ServerTick      = _serverTick
            };

            _netManager.SendToAll(WritePacket(pj), SendType.ReliableOrdered, peer);

            // 이전 유저들에게 정보 다 보내줌
            pj.NewCharacter = false;
            foreach (var pair in _serverManager.Characters.Where(pair => pair.Key != (byte)peer.Id))
            {
                pj.UserName        = pair.Value._data.Name;
                pj.CharacterPacket = pair.Value.CharacterPacket;
                peer.Send(WritePacket(pj), SendType.ReliableOrdered);
            }
        }