public Time(CentralEventos central, string nome) : base(central) { Nome = nome; central.OfType <ApitoInicio>() .Subscribe( ini => Console.WriteLine($"{Nome}: Vamos lá pessoal, pra cima deles!") ); central.OfType <ApitoGol>() // Gol contra o time .Where(gol => !gol.TimeEmCampo.Equals(this)) .Subscribe( gol => Console.WriteLine($"{Nome}: Ânimo pessoal!!! Vamos marcar mais forte") ); central.OfType <ApitoGol>() // Gol do Time .Where(gol => gol.TimeEmCampo.Equals(this)) .Subscribe( gol => Console.WriteLine($"{Nome}: Muito bem pessoal!!!") ); central.OfType <ApitoFalta>() //Falta do outro time .Where(falta => !falta.TimeEmCampo.Equals(this)) .Subscribe( falta => Console.WriteLine($"{Nome}: pô seu juiz, cadê o cartão?") ); central.OfType <ApitoFalta>() //Falta do time .Where(falta => falta.TimeEmCampo.Equals(this)) .Subscribe( falta => Console.WriteLine($"{Nome}: foi na bola seu juiz, que injusto!") ); central.OfType <Derrota>() // derrota por faltas do time .Where(falta => falta.TimeEmCampo.Equals(this)) .Subscribe( falta => Console.WriteLine($"{Nome}: Esse nr de faltas bem que poderia ser maior :(") ); central.OfType <Derrota>() // derrota por faltas do outro time .Where(falta => !falta.TimeEmCampo.Equals(this)) .Subscribe( falta => Console.WriteLine($"{Nome}: Jogar com violência da nisso!") ); central.OfType <Vitoria>() // vitoria do time .Where(v => v.TimeEmCampo.Equals(this)) .Subscribe( vit => Console.WriteLine($"{Nome}: Viva o {Nome}!") ); central.OfType <Vitoria>() // vitoria do outro time .Where(v => !v.TimeEmCampo.Equals(this)) .Subscribe( vit => Console.WriteLine($"{Nome}: Na próxima {vit.TimeEmCampo.Nome} vocês vão ver!") ); central.OfType <ApitoFinal>() .Subscribe( fim => central.Parar() ); }
public Juiz(CentralEventos central, Regras regras) : base(central) { _regras = regras; central.OfType <GolMarcado>() .Timeout(TimeSpan.FromSeconds(regras.LimiteTempo)) .Subscribe( e => ApitarGol(e.TimeEmCampo, e.GolsMarcados), ex => FinalizarPorTempo(ex) ); central.OfType <FaltaCometida>() .Timeout(TimeSpan.FromSeconds(regras.LimiteTempo)) .Subscribe( e => ApitarFalta(e.TimeEmCampo, e.Faltas), ex => FinalizarPorTempo(ex) ); }
public Ator(CentralEventos central) { this.central = central ?? throw new ArgumentNullException(paramName: nameof(central)); }