Example #1
0
        public void ServiceLimboConnections()
        {
            foreach (PlayerConnectionState player in limboConnections)
            {
                if (player.HasNewData())
                {
                    List <BasePacket> packetList = player.RetrieveData();
                    foreach (BasePacket packet in packetList)
                    {
                        LoginCredentials lc = packet as LoginCredentials;
                        if (lc != null && loginServerSocket != null)
                        {
                            UserAccountRequest uar = IntrepidSerialize.TakeFromPool(PacketType.UserAccountRequest) as UserAccountRequest;
                            uar.connectionId = player.tempId;
                            uar.password.Copy(lc.password);
                            uar.product_name.Copy("hungry hippos"); // TODO, configure product name
                            uar.username.Copy(lc.playerName);

                            loginServerSocket.Send(uar);
                            break;
                        }
                    }
                    IntrepidSerialize.ReturnToPool(packetList);
                }
            }
        }
Example #2
0
        //------------------------------- events --------------------------
        private void Sock_OnConnect(IPacketSend sender)
        {
            if (socket != sender)
            {
                return;
            }

            ClientIdPacket clientId = (ClientIdPacket)IntrepidSerialize.TakeFromPool(PacketType.ClientIdPacket);

            clientId.Id = (int)applicationId;
            sender.Send(clientId);
        }
Example #3
0
        private void Sock_OnConnect(IPacketSend sender)
        {
            if (gatewaySocket != sender)
            {
                return;
            }

            ServerIdPacket serverId = (ServerIdPacket)IntrepidSerialize.TakeFromPool(PacketType.ServerIdPacket);

            serverId.Type  = ServerIdPacket.ServerType.Game;
            serverId.Id    = applicationId;
            serverId.MapId = 1;
            sender.Send(serverId);
        }
Example #4
0
 public void Send(BasePacket packet)
 {
     socket.Send(packet);
 }
        private void Sock_OnPacketsReceived(IPacketSend arg1, Queue <BasePacket> listOfPackets)
        {
            // all of these boolean checks should be replaced by a Strategy
            if (isBoundToGateway == true)
            {
                foreach (var packet in listOfPackets)
                {
                    numPacketsReceived++;
                    // normal processing

                    KeepAlive ka = packet as KeepAlive;
                    if (ka != null)
                    {
                        KeepAliveResponse kar = (KeepAliveResponse)IntrepidSerialize.TakeFromPool(PacketType.KeepAliveResponse);
                        socket.Send(kar);
                        continue;
                    }
                    WorldEntityPacket wep = packet as WorldEntityPacket;
                    if (wep != null)
                    {
                        foreach (var playerId in playerIds)
                        {
                            if (playerId.entityId == wep.entityId)
                            {
                                playerId.position = wep.position.Get();
                                playerId.rotation = wep.rotation.Get();

                                SendAllEntityPositions();
                            }
                        }
                        continue;
                    }

                    ServerConnectionHeader sch = packet as ServerConnectionHeader;
                    if (sch != null)
                    {
                        nextConnectionId = sch.connectionId;
                        continue;
                    }
                    PlayerSaveStatePacket pss = packet as PlayerSaveStatePacket;
                    if (pss != null)
                    {
                        HandlePlayerSaveState(pss);
                        continue;
                    }
                    if (packet is ServerPingHopperPacket)
                    {
                        HandleServerHopping(packet as ServerPingHopperPacket);
                        continue;
                    }
                }
            }
            else
            {
                foreach (var packet in listOfPackets)
                {
                    numPacketsReceived++;
                    if (packet is ServerIdPacket)
                    {
                        ServerIdPacket id = packet as ServerIdPacket;
                        if (id != null && id.Type == ServerIdPacket.ServerType.Gateway)
                        {
                            isBoundToGateway = true;
                            break;
                        }
                    }
                }
            }
        }