Example #1
0
        /// <summary>
        /// Agrega una Cuenta al a la sala que tenga ese Id
        /// </summary>
        /// <param name="Id">String</param>
        /// <param name="CuentaAAgregar">Cuenta</param>
        /// <param name="ActualCallback">IGameServiceCallback</param>
        /// <returns>EnumEstadoDeUnirseASala</returns>
        public EnumEstadoDeUnirseASala UnirseASalaConId(String Id, CuentaModel CuentaAAgregar, IGameServiceCallback ActualCallback,
                                                        String DireccionIpDelCliente)
        {
            EnumEstadoDeUnirseASala estadoDeUnirseASala = EnumEstadoDeUnirseASala.NoSeEncuentraEnSesion;

            if (ManejadorDeSesiones.VerificarCuentaLogeada(CuentaAAgregar))
            {
                estadoDeUnirseASala = EnumEstadoDeUnirseASala.SalaInexistente;
                CuentaAAgregar      = ManejadorDeSesiones.ObtenerCuentaCompleta(CuentaAAgregar);
                foreach (Sala sala in SalasCreadas)
                {
                    if (sala.Id == Id)
                    {
                        if (sala.UnirseASala(CuentaAAgregar, ActualCallback, DireccionIpDelCliente))
                        {
                            estadoDeUnirseASala = EnumEstadoDeUnirseASala.UnidoCorrectamente;
                            SeUnioASala?.Invoke(sala.Id);
                        }
                        else
                        {
                            estadoDeUnirseASala = EnumEstadoDeUnirseASala.SalaLlena;
                        }
                        break;
                    }
                }
            }

            return(estadoDeUnirseASala);
        }
Example #2
0
        /// <summary>
        /// Agrega una Cuenta a una sala completa, si no hay salas disponibles la crea
        /// </summary>
        /// <param name="Cuenta">CuentaModel</param>
        /// <param name="ActualCallback">IGameServiceCallback</param>
        /// <returns>Verdadero si la sala cuenta se unico correctamenete a la sala o falso si no</returns>
        public Boolean UnisrseASalaDisponible(CuentaModel Cuenta, IGameServiceCallback ActualCallback, String DireccionIpDelCliente)
        {
            Boolean seUnioASala = false;

            if (ManejadorDeSesiones.VerificarCuentaLogeada(Cuenta))
            {
                Cuenta = ManejadorDeSesiones.ObtenerCuentaCompleta(Cuenta);
                Sala SalaAUnirse = BuscarSalaIncompleta();
                if (SalaAUnirse != null)
                {
                    seUnioASala = SalaAUnirse.UnirseASala(Cuenta, ActualCallback, DireccionIpDelCliente);
                    SeUnioASala?.Invoke(SalaAUnirse.Id);
                }
                else
                {
                    Sala NuevaSala = CrearSalaConIdAleatorio(Cuenta, ActualCallback, DireccionIpDelCliente);
                    SalasCreadas.Add(NuevaSala);
                    SuscribirseAEventosDeSala(NuevaSala);
                    SalaCreada?.Invoke(NuevaSala);
                    seUnioASala = true;
                }
            }
            return(seUnioASala);
        }