Beispiel #1
0
        public PacketHandler(World world)
        {
            this.playerManager     = world.PlayerManager;
            defaultPacketProcessor = new DefaultServerPacketProcessor(playerManager);

            Dictionary <Type, object> ProcessorArguments = new Dictionary <Type, object>
            {
                { typeof(World), world },
                { typeof(PlayerData), world.PlayerData },
                { typeof(BaseData), world.BaseData },
                { typeof(VehicleData), world.VehicleData },
                { typeof(InventoryData), world.InventoryData },
                { typeof(GameData), world.GameData },
                { typeof(PDAStateData), world.GameData.PDAState },
                { typeof(PlayerManager), playerManager },
                { typeof(TimeKeeper), world.TimeKeeper },
                { typeof(SimulationOwnershipData), world.SimulationOwnershipData },
                { typeof(EscapePodManager), world.EscapePodManager },
                { typeof(EntityManager), new EntityManager(world.EntityData, world.BatchEntitySpawner) },
                { typeof(EntitySimulation), new EntitySimulation(world.EntityData, world.SimulationOwnershipData, world.PlayerManager) }
            };

            authenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(AuthenticatedPacketProcessor <>));

            unauthenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(UnauthenticatedPacketProcessor <>));
        }
        public Server(ServerSettings settings)
        {
            // Attempt to load world
            if (!File.Exists(settings.SavePath))
            {
                throw new FileNotFoundException("Save file not found.");
            }

            string         worldData      = File.ReadAllText(settings.SavePath);
            WorldStateData worldStateData = new WorldStateData(worldData);

            this.settings = settings;
            SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
            processorContext = new ServerProcessorContext(this);

            router = new PacketRouter(processorContext);
            foreach (PacketProcessor packetProcessor in PacketProcessor.GetProcessors())
            {
                router.RegisterPacketProcessor(packetProcessor);
            }

            playerConnections        = new Dictionary <Guid, long>();
            playerManager            = new PlayerManager(this);
            simulationManager        = new SimulationManager(this);
            worldStateManager        = new WorldStateManager(this, settings.SavePath, worldStateData);
            worldRequestQueueManager = new WorldRequestQueueManager(this);
            timeManager        = new TimeManager(this);
            environmentManager = new EnvironmentManager(this);
            disasterManager    = new DisasterManager(this);
            Initialize();
        }
 private void InitializeProcessors()
 {
     router = new PacketRouter(processorContext);
     foreach (PacketProcessor packetProcessor in PacketProcessor.GetProcessors())
     {
         router.RegisterPacketProcessor(packetProcessor);
     }
 }
Beispiel #4
0
        public PacketHandler(TcpServer tcpServer, TimeKeeper timeKeeper)
        {
            this.defaultPacketProcessor = new DefaultServerPacketProcessor(tcpServer);

            var ProcessorArguments = new Dictionary <Type, object>
            {
                { typeof(TcpServer), tcpServer },
                { typeof(TimeKeeper), timeKeeper },
            };

            authenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(AuthenticatedPacketProcessor <>));

            unauthenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(UnauthenticatedPacketProcessor <>));
        }
Beispiel #5
0
        public PacketHandler(PlayerManager playerManager, TimeKeeper timeKeeper, SimulationOwnership simulationOwnership)
        {
            this.playerManager     = playerManager;
            defaultPacketProcessor = new DefaultServerPacketProcessor(playerManager);

            Dictionary <Type, object> ProcessorArguments = new Dictionary <Type, object>
            {
                { typeof(PlayerManager), playerManager },
                { typeof(TimeKeeper), timeKeeper },
                { typeof(SimulationOwnership), simulationOwnership },
                { typeof(EscapePodManager), new EscapePodManager() },
                { typeof(EntityManager), new EntityManager(new EntitySpawner(), simulationOwnership) }
            };

            authenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(AuthenticatedPacketProcessor <>));

            unauthenticatedPacketProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(UnauthenticatedPacketProcessor <>));
        }
 static Multiplayer()
 {
     packetProcessorsByType = PacketProcessor.GetProcessors(ProcessorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(ClientPacketProcessor <>));
 }
Beispiel #7
0
 static Multiplayer()
 {
     Log.Info("Initializing Multiplayer Client...");
     PacketProcessorsByType = PacketProcessor.GetProcessors(processorArguments, p => p.BaseType.IsGenericType && p.BaseType.GetGenericTypeDefinition() == typeof(ClientPacketProcessor <>));
     Log.Info("Multiplayer Client Initialized...");
 }