public void RemoveUser(ServerUser su) { var id = su.User.Id; var seat = su.User.Seat; if (seat == Seat.Spectator) { Users.Remove(id); Room.RemoveSpectator(su.User); Server.Send(SetSeatS2C.LeaveRoom(id)); } else if (Room.Players.Count() == 1) { Server.RemoveRoom(this); } else { if (game != null) { OnGameStop(id, GameStopReason.PlayerStop); } else { UnPrepare(su); } Users.Remove(id); Room[seat] = null; Server.Send(SetSeatS2C.LeaveRoom(id)); } }
public void ChangeSeat(ServerUser su, Seat seat) { var user = su.User; if (game == null && Room.IsValidSeat(seat) && user.Seat != seat && Room[seat] == null) { if (user.Seat == Seat.Spectator) { Room[seat] = user; } else if (seat != Seat.Spectator) { UnPrepare(su); Room[seat] = su.User; } else if (Room.Players.Count() != 1) { UnPrepare(su); Room.AddSpectator(user); } else { return; } Server.Send(SetSeatS2C.InRoom(user)); } }
public void AddUser(ServerUser su, Seat seat) { var user = su.User; if (user.Room == null && Room.IsValidSeat(seat) && Room[seat] == null) { if (seat == Seat.Spectator) { Room.AddSpectator(user); } else { Room[seat] = user; } Users.Add(user.Id, su); Server.Send(SetSeatS2C.InRoom(user)); if (game != null) { su.Send(new GameStartS2C(game.GetFragment())); } else if (initingGame != null) { if (IsPrepared(Seat.Player00)) { su.Send(new SetPrepareS2C(Seat.Player00, true)); } if (IsPrepared(Seat.Player10)) { su.Send(new SetPrepareS2C(Seat.Player10, true)); } if (Room.Settings.Mode.PlayersPerTeam() == 2) { if (IsPrepared(Seat.Player01)) { su.Send(new SetPrepareS2C(Seat.Player01, true)); } if (IsPrepared(Seat.Player11)) { su.Send(new SetPrepareS2C(Seat.Player11, true)); } } } } }