/// <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); }
/// <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); }