Exemple #1
0
        private void CreatRoom(IPackage package)
        {
            var conectionData   = (IConectionData)package.Data;
            var client_passport = package.Sender_Passport;
            var newGameSettings = conectionData.GameSetings;
            var player_name     = conectionData.PlayerName;

            // получить Gamer по id из списка ожидающих
            IGamer gamer = ManagerRoom.GetGamerByGuid(client_passport);

            gamer.SetId(player_name, client_passport);

            // создать комнату
            IRoom newGameRoom = ManagerRoom.AddRoom(newGameSettings, client_passport);

            newGameRoom.CreatorPassport = gamer.Passport;

            (newGameRoom as IGameRoom).OnNotifyMustRemoveRoom += OnNotifyMustRemoveRoom_EventHandler;

            newGameRoom.RUN();

            // добавить в нее игрока
            //var room_endpoint = ManagerRoom.MooveGamerToRoom(gamer, newGameRoom.Passport);
            var        room_endpoint = newGameRoom.Reciever.LockalEndPoint;
            Addresssee addres        = new Addresssee(room_endpoint);


            var roominfo = new RoomInfo()
            {
                RoomPassport = newGameRoom.Passport,
                roomEndpoint = addres,
                mapSize      = newGameSettings.MapSize
            };

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


            //newGameRoom.RUN();
            //(newGameRoom as IGameRoom).NotifyGameRoomForEvent(new NotifyJoinedPlayerData() { JoinedAddresssee = gamer });

            // инициировать начало игры (по крайней мере для теста - если создатель указывает колич.игроков =1 при создании)
            //if (newGameRoom.Gamers.Count() == newGameRoom.GameSetings.MaxPlayersCount)
            //{
            //    IPackage pack = new Package()
            //    {
            //        MesseggeType = MesseggeType.StartGame,
            //        Data = null,
            //    };
            //    Owner.Sender.SendMessage(pack, newGameRoom.Gamers); //Управляющая комната отсылает участникам игровой комнаты

            //    //уведомляем игровую комнату о начале:
            //    (newGameRoom as IGameRoom).NotifyGameRoomForEvent(new NotifyStartGameData() { EnforceStartGame = true });
            //}
        }