Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
                        }
                    }
                }
            }
        }