/// <summary> /// Crea una Sala personalizada /// </summary> /// <param name="Id">String</param> /// <param name="EsSalaPublica">Boolean</param> /// <param name="Cuenta">CuentaModel</param> /// <param name="ActualCallback">IGameServiceCallback</param> /// <returns>EnumEstadoCrearSalaConId</returns> public EnumEstadoCrearSalaConId CrearSala(string Id, Boolean EsSalaPublica, CuentaModel Cuenta, IGameServiceCallback ActualCallback, String DireccionIpDelCliente) { EnumEstadoCrearSalaConId EstadoDeCreacionDeSala = EnumEstadoCrearSalaConId.NoSeEncuentraEnSesion; if (ManejadorDeSesiones.VerificarCuentaLogeada(Cuenta)) { Cuenta = ManejadorDeSesiones.ObtenerCuentaCompleta(Cuenta); if (!EstaElIdDeSalaEnUso(Id)) { Sala SalaAAgregar = new Sala(Id, EsSalaPublica, Cuenta, ActualCallback, DireccionIpDelCliente); SalasCreadas.Add(SalaAAgregar); SuscribirseAEventosDeSala(SalaAAgregar); SalaCreada?.Invoke(SalaAAgregar); EstadoDeCreacionDeSala = EnumEstadoCrearSalaConId.CreadaCorrectamente; } else { EstadoDeCreacionDeSala = EnumEstadoCrearSalaConId.IdYaExistente; } } return(EstadoDeCreacionDeSala); }
/// <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); }