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); } } }
//------------------------------- 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); }
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); }
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; } } } } }