예제 #1
0
        public override void OnNewAddresssee_Handler(object sender, NewAddressseeData evntData)
        {
            var gamer = evntData.newAddresssee as IGamer;

            if (gamer != null)
            {
                var conectdata = new initialConectionData()
                {
                    passport           = gamer.Passport,
                    manageRoomEndpoint = new Addresssee((sender as IRoom).Reciever.LockalEndPoint)
                };

                Owner.Sender.SendMessage(new Package()
                {
                    Data         = conectdata,
                    MesseggeType = MesseggeType.Passport
                }, gamer.RemoteEndPoint);

                SendRoomList(gamer.RemoteEndPoint);
            }
            else
            {
                throw new Exception("Empty new gamer");
            }
        }
예제 #2
0
        /// <summary>
        /// Обработка события добавления нового игрока
        /// </summary>
        /// <param name="Sender">Объект вызвавший добавление нового игрока</param>
        /// <param name="evntData">Данные о подключении</param>
        public override void OnNewAddresssee_Handler(object Sender, NewAddressseeData evntData)
        {
            if (_shut_down_room_enforced)
            {
                return;
            }

            _ready_proc_msg.Reset();
            _ready_proc_newGamer.WaitOne();


            if (this.mapgen == false)
            {
                this.GenerateMap();
            }
            var room  = Owner as IRoom;
            var gamer = evntData.newAddresssee as IGamer;

            //var gamer = room.Gamers.FirstOrDefault(t => t.RemoteEndPoint == evntData.newAddresssee.RemoteEndPoint);
            this.NewGamer(gamer);
            this.Send();

            //обработка присоденившихся в ходе идущей игры (когда статус не WaitForStart)
            // .. когда стаус WaitForStart - старт игры рассылается всем при заполнении комнаты в обработчике OnAddressseeHolderFull_Handler
            if (status == GameStatus.Start)
            {
                this.SendStartGame(gamer);
            }
            if (status == GameStatus.EndGame)
            {
                this.SendEndGame(gamer);
            }

            _ready_proc_msg.Set();
        }
예제 #3
0
        /// <summary>
        /// Обработка события добавления нового игрока
        /// </summary>
        /// <param name="Sender">Объект вызвавший добавление нового игрока</param>
        /// <param name="evntData">Данные о подключении</param>
        public override void OnNewAddresssee_Handler(object Sender, NewAddressseeData evntData)
        {
            if (this.mapgen == false)
            {
                this.GenerateMap();
            }
            var room  = Owner as IRoom;
            var gamer = evntData.newAddresssee as IGamer;

            //var gamer = room.Gamers.FirstOrDefault(t => t.RemoteEndPoint == evntData.newAddresssee.RemoteEndPoint);
            this.NewGamer(gamer);
            //this.Send();
        }
예제 #4
0
 }                                                                                      // не нужен, требует EngineAbs
 public override void OnNewAddresssee_Handler(object Sender, NewAddressseeData evntData)
 {
 }                                                                                                   // не нужен, требует EngineAbs
예제 #5
0
 public abstract void OnNewAddresssee_Handler(object Sender, NewAddressseeData evntData);