public UdpSendUtils(ByteArrayRudpStorage byteArrayRudpStorage,
                     OutgoingMessagesStorage outgoingMessagesStorage, MessageFactory messageFactory)
 {
     rudpStorage                  = byteArrayRudpStorage;
     this.messageFactory          = messageFactory;
     this.outgoingMessagesStorage = outgoingMessagesStorage;
 }
 public MessageProcessor(InputEntitiesCreator inputEntitiesCreator, ExitEntitiesCreator exitEntitiesCreator,
                         ByteArrayRudpStorage byteArrayRudpStorage,
                         // UdpSendUtils udpSendUtils,
                         IpAddressesStorage ipAddressesStorage)
 {
     pingMessageHandler = new PingMessageHandler(ipAddressesStorage);
     // rudpConfirmationSender = new RudpConfirmationSender(udpSendUtils);
     inputMessageHandler     = new InputMessageHandler(inputEntitiesCreator);
     exitMessageHandler      = new PlayerExitMessageHandler(exitEntitiesCreator);
     rudpConfirmationHandler = new RudpConfirmationReceiver(byteArrayRudpStorage);
 }
Example #3
0
 public MatchRemover(MatchStorage matchStorage, ByteArrayRudpStorage byteArrayRudpStorage,
                     UdpSendUtils udpSendUtils, MatchmakerNotifier matchmakerNotifier, IpAddressesStorage ipAddressesStorage,
                     MessageIdFactory messageIdFactory, MessagesPackIdFactory messagesPackIdFactory)
 {
     this.messagesPackIdFactory = messagesPackIdFactory;
     this.matchStorage          = matchStorage;
     this.byteArrayRudpStorage  = byteArrayRudpStorage;
     this.matchmakerNotifier    = matchmakerNotifier;
     this.ipAddressesStorage    = ipAddressesStorage;
     this.messageIdFactory      = messageIdFactory;
     matchesToRemove            = new ConcurrentQueue <int>();
     playersMatchFinishNotifier = new PlayersMatchFinishNotifier(udpSendUtils, ipAddressesStorage);
 }
Example #4
0
 public RudpConfirmationReceiver(ByteArrayRudpStorage byteArrayRudpStorage)
 {
     this.byteArrayRudpStorage = byteArrayRudpStorage;
 }
Example #5
0
        public void Run()
        {
            if (matchmakerListenerCts != null)
            {
                throw new Exception("Сервер уже запущен");
            }

            //Старт уведомления матчмейкера о смертях игроков и окончании матчей
            MatchmakerNotifier notifier = new MatchmakerNotifier();

            matchmakerNotifierCts = notifier.StartThread();

            //Создание структур данных для матчей
            matchStorage = new MatchStorage();


            MessageIdFactory messageIdFactory = new MessageIdFactory();
            MessageFactory   messageFactory   = new MessageFactory(messageIdFactory);

            InputEntitiesCreator inputEntitiesCreator = new InputEntitiesCreator(matchStorage);
            ExitEntitiesCreator  exitEntitiesCreator  = new ExitEntitiesCreator(matchStorage);

            ByteArrayRudpStorage byteArrayRudpStorage = new ByteArrayRudpStorage();

            shittyUdpMediator = new ShittyUdpMediator();

            MessagesPackIdFactory   messagesPackIdFactory   = new MessagesPackIdFactory();
            IpAddressesStorage      ipAddressesStorage      = new IpAddressesStorage();
            SimpleMessagesPacker    simpleMessagesPacker    = new SimpleMessagesPacker(PackingHelper.Mtu, shittyUdpMediator, messagesPackIdFactory);
            OutgoingMessagesStorage outgoingMessagesStorage = new OutgoingMessagesStorage(simpleMessagesPacker, ipAddressesStorage);
            UdpSendUtils            udpSendUtils            = new UdpSendUtils(byteArrayRudpStorage, outgoingMessagesStorage, messageFactory);
            MessageProcessor        messageProcessor        = new MessageProcessor(inputEntitiesCreator, exitEntitiesCreator,
                                                                                   byteArrayRudpStorage,
                                                                                   // udpSendUtils,
                                                                                   ipAddressesStorage);

            shittyUdpMediator.SetProcessor(messageProcessor);

            matchRemover = new MatchRemover(matchStorage, byteArrayRudpStorage, udpSendUtils, notifier, ipAddressesStorage, messageIdFactory, messagesPackIdFactory);
            MatchFactory          matchFactory          = new MatchFactory(matchRemover, udpSendUtils, notifier, ipAddressesStorage, messageIdFactory, messagesPackIdFactory);
            MatchCreator          matchCreator          = new MatchCreator(matchFactory);
            MatchLifeCycleManager matchLifeCycleManager =
                new MatchLifeCycleManager(matchStorage, matchCreator, matchRemover);

            //Старт прослушки матчмейкера
            MatchModelMessageHandler matchModelMessageHandler = new MatchModelMessageHandler(matchCreator, matchStorage);
            MatchmakerListener       matchmakerListener       = new MatchmakerListener(matchModelMessageHandler, HttpPort);
            MonitorListener          monitorListener          = new MonitorListener(HttpPort);

            monitorListenerCts    = monitorListener.StartThread();
            matchmakerListenerCts = matchmakerListener.StartThread();


            //Старт прослушки игроков
            shittyUdpMediator
            .SetupConnection(UdpPort)
            .StartReceiveThread();

            RudpMessagesSender rudpMessagesSender = new RudpMessagesSender(byteArrayRudpStorage, matchStorage, udpSendUtils, ipAddressesStorage);
            GameEngineTicker   gameEngineTicker   = new GameEngineTicker(matchStorage, matchLifeCycleManager,
                                                                         inputEntitiesCreator, exitEntitiesCreator, rudpMessagesSender, outgoingMessagesStorage);

            //Старт тиков
            Chronometer chronometer = ChronometerFactory.Create(gameEngineTicker.Tick);

            chronometer.StartEndlessLoop();
        }