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 }); //} }
private void RoomList(IPackage package) { ManagerRoom = Owner as IManagerRoom; var client_id = package.Sender_Passport; IGamer gamer = ManagerRoom.GetGamerByGuid(client_id); SendRoomList(gamer.RemoteEndPoint); }
private void ConfirmJoinToRoom(IPackage package) { IConfirmJoinToRoom confirmJoinData = package.Data as IConfirmJoinToRoom; ManagerRoom = Owner as IManagerRoom; var client_passport = package.Sender_Passport; IGamer gamer = ManagerRoom.GetGamerByGuid(client_passport); var room_passport = confirmJoinData.RoomPassport; var room = ManagerRoom.GetRoomByGuid(room_passport); if (room != null) { if (room.Gamers.Count() < room.GameSetings.MaxPlayersCount) { ManagerRoom.MooveGamerToRoom(gamer, room_passport); //(room as IGameRoom).NotifyGameRoomForEvent(new NotifyJoinedPlayerData() { JoinedAddresssee = gamer }); //// инициировать начало игры //if (room.Gamers.Count() == room.GameSetings.MaxPlayersCount) //{ // IPackage pack = new Package() // { // MesseggeType = MesseggeType.StartGame, // Data = null, // }; // Owner.Sender.SendMessage(pack, room.Gamers); //Управляющая комната отсылает участникам игровой комнаты // //уведомляем игровую комнату о начале: // (room as IGameRoom).NotifyGameRoomForEvent(new NotifyStartGameData() { EnforceStartGame = true }); //} } else { Owner.Sender.SendMessage(new Package() { Data = "Room is full", MesseggeType = MesseggeType.Error }, gamer.RemoteEndPoint); } } else { Owner.Sender.SendMessage(new Package() { Data = "Room is not exist", MesseggeType = MesseggeType.Error }, gamer.RemoteEndPoint); } }
public void RemoveGamer(IGamer delGamer) { lock (_locker) { _gamers.Remove(delGamer); OnRemoveAddresssee?.Invoke(this, new RemoveAddressseeData() { removeddresssee = delGamer }); //if (GameSetings != null && _gamers.Count == GameSetings.MaxPlayersCount) // OnAddressseeHolderFull?.Invoke(this, new AddressseeHolderFullData() { isFull = true }); } }
public IGamer GetGamerByGuid(Guid gamerGuid) { IGamer foundGamer = null; var g = (from G in Gamers where G.Passport == gamerGuid select G); if (g.Count() > 1) { throw new Exception("Rooms ID not unique"); } foundGamer = g.FirstOrDefault(); return(foundGamer); }
public void RemoveGamerFromRoom(IGamer gamer, Guid TargetRoomId) { IRoom targetRoom; var selRoom = from r in Rooms where r.Passport == TargetRoomId select r; targetRoom = selRoom.First(); try { targetRoom.AddGamer(gamer); } catch (Exception ex) { throw ex; } }
public IPEndPoint MooveGamerToRoom(IGamer gamer, Guid TargetRoomId) { IRoom targetRoom; var selRoom = from r in Rooms where r.Passport == TargetRoomId select r; targetRoom = selRoom.First(); try { targetRoom.AddGamer(gamer); return(targetRoom.Reciever.LockalEndPoint); } catch (Exception ex) { throw ex; } }
// Нужно вызывать эту чепуху при новом игроке в комнате, метод ниже мне не подходит, по причине - мне не нужен ендпоинт, мне нужен гуид /// <summary> /// Метод интегрирующий нового игрока на игровое поле /// </summary> /// <param name="gamer"> Новый игрок</param> public void NewGamer(IGamer gamer) { var obj = new GameObjectFactory().CreateTank(); //var obj = new Tank(); var room = Owner as IRoom; obj.Size = room.GameSetings.ObjectsSize; obj.Tank_ID = gamer.Passport; obj.Name = gamer.Name; obj.Lives = 1; obj.HelthPoints = 5; //obj.Is_Alive = true; obj.Can_Be_Destroyed = true; obj.Can_Shoot = true; obj.Direction = Direction.Up; obj.Position = this.Reload(); tanks.Add(obj); //objects.Add(obj); }
public void RemoveGamer(Guid delGamerId) { IGamer gmr = null; lock (_locker) { var found = from g in _gamers where g.Passport == delGamerId select g; if (found == null) { throw new Exception("Gamer .." + delGamerId.ToString() + " not found in room " + Passport.ToString()); } if (found.Count() > 1) { throw new Exception("Not Unique gamer passport " + delGamerId.ToString() + " in room " + Passport.ToString()); } gmr = found.First(); } RemoveGamer(gmr); }
public virtual void AddGamer(IGamer newGamer) { if (GameSetings != null && _gamers.Count == GameSetings.MaxPlayersCount) { throw new RoomIsFullException(); } _gamers.Add(newGamer); OnNewAddresssee?.Invoke(this, new NewAddressseeData() { newAddresssee = newGamer }); if (GameSetings != null && _gamers.Count == GameSetings.MaxPlayersCount) { OnAddressseeHolderFull?.Invoke(this, new AddressseeHolderFullData() { isFull = true }); } }
public void RemoveGamerFromRoom(IGamer gamer, Guid TargetRoomId) { IManagerRoomOwner mO = Owner as IManagerRoomOwner; mO.RemoveGamerFromRoom(gamer, TargetRoomId); }
public IPEndPoint MooveGamerToRoom(IGamer gamer, Guid TargetRoomId) { IManagerRoomOwner mO = Owner as IManagerRoomOwner; return(mO.MooveGamerToRoom(gamer, TargetRoomId)); }
private void RoomConnect(IPackage package) { ManagerRoom = Owner as IManagerRoom; var cd = (IConectionData)package.Data; var name = cd.PlayerName; var client_passport = package.Sender_Passport; IGamer gamer = ManagerRoom.GetGamerByGuid(client_passport); gamer.SetId(name, client_passport); var room_passport = cd.RoomPasport; var room = ManagerRoom.GetRoomByGuid(room_passport); var map_Size = room.GameSetings.MapSize; if (room != null) { if (room.Gamers.Count() < room.GameSetings.MaxPlayersCount) { //IPEndPoint room_ipendpoint = ManagerRoom.MooveGamerToRoom(gamer, room_passport); - Это будет делаться по отдельному сообщению ConfirmJoinToRoom IPEndPoint room_ipendpoint = room.Reciever.LockalEndPoint; Addresssee addres = new Addresssee(room_ipendpoint); var roominfo = new RoomInfo() { RoomPassport = room_passport, roomEndpoint = addres, mapSize = map_Size }; Owner.Sender.SendMessage(new Package() { Data = roominfo, MesseggeType = MesseggeType.RoomInfo }, gamer); //gamer.RemoteEndPoint // Это будет делаться по отдельному сообщению ConfirmJoinToRoom //(room as IGameRoom).NotifyGameRoomForEvent(new NotifyJoinedPlayerData() { JoinedAddresssee = gamer }); //// инициировать начало игры //if (room.Gamers.Count() == room.GameSetings.MaxPlayersCount) //{ // IPackage pack = new Package() // { // MesseggeType = MesseggeType.StartGame, // Data = null, // }; // Owner.Sender.SendMessage(pack, room.Gamers); //Управляющая комната отсылает участникам игровой комнаты // //уведомляем игровую комнату о начале: // (room as IGameRoom).NotifyGameRoomForEvent(new NotifyStartGameData() { EnforceStartGame = true }); //} } else { Owner.Sender.SendMessage(new Package() { Data = "Room is full", MesseggeType = MesseggeType.Error }, gamer.RemoteEndPoint); } } else { Owner.Sender.SendMessage(new Package() { Data = "Room is not exist", MesseggeType = MesseggeType.Error }, gamer.RemoteEndPoint); } }
public void Update(IGamer player, int Id) { }
public void Add(IGamer player) { players.Add(player); Console.WriteLine("{0} {1}, isimli oyuncu sisteme eklendi.", player.GamerName, player.GamerSurname); }
public Score(IGamer gamer) { this.points = 0; this.CurrentGamer = gamer; this.topGamersRanklist = new SortedDictionary <int, string>(); }