Exemple #1
0
 // Use this for initialization
 void Start()
 {
     index          = 0;
     gameController = FindObjectOfType <GameController>();
     tCPReceiver    = gameController.tCPReceiver;
     tCPSender      = gameController.tCPSender;
     //SendClientId();
 }
        /// <summary>
        /// Инкапсулирует GameController. Расшифровывает сообщения с TCP-сервера и передает их игре
        /// </summary>
        public ClientGameAdapter()
        {
            Game     = new ClientGameController();
            Sender   = new TCPSender(8010);
            Receiver = new TCPReceiver(8020);

            // При выполнении пользовательских действий в игре отправляется TCP-сообщение серверу
            (Game as ClientGameController).GameEvent += Send;

            // На случай появления команд от клиента, запускаем поток, слушающий TCP-сообщения
            listener = new Thread(Listen);
            listener.Start();
            listener.IsBackground = false;
        }
        /// <summary>
        /// Отвечает за взаимодействие по TCP игрового движка с клиентом
        /// </summary>
        public ServerGameAdapter()
        {
            Game     = new ServerGameEngine();
            Sender   = new TCPSender(8020);
            Receiver = new TCPReceiver(8010);

            // На случай появления команд от клиента, запускаем поток, слушающий TCP-сообщения
            listener = new Thread(Listen);
            listener.Start();
            listener.IsBackground = false;

            // При появлении внутриигровых событий, влияющих на интерфейс, генерируется единое событие GameEvent...
            Game.ChangeHpEvent += (object sender, ChangeHpEventArgs args) =>
                                  GameEvent?.Invoke(this, new GameEventArgs(new ChangeHpCommand(args.Hp_new)));
            Game.LoseEvent    += Stop;
            Game.RiseNewEvent += (object sender, RiseNewEventArgs args) =>
                                 GameEvent?.Invoke(this, new GameEventArgs(new RiseNewCommand(args.Places)));
            Game.RiseProgressEvent += (object sender, RiseProgressEventArgs args) =>
                                      GameEvent?.Invoke(this, new GameEventArgs(new RiseProgressCommand(args.Place, args.Stage_new)));

            // ... которое затем отправляется клиенту
            GameEvent += Send;
        }
 private void AddReceiverThread()
 {
     receiver = new TCPReceiver(client, this);
     worker   = new Thread(new ThreadStart(receiver.Start));
     worker.Start();
 }
Exemple #5
0
 // Use this for initialization
 void Start()
 {
     DontDestroyOnLoad(gameObject);
     tCPSender   = GetComponent <TCPSender>();
     tCPReceiver = GetComponent <TCPReceiver>();
 }