public Caminho(Caminho origem) { for (int i = 0; i < origem.Count; i++) { this.Add(origem[i]); } Id = origem.Id; }
public Carro(string id, Caminho c, float aceleracao, float velocidadeLimite) { Id = id; Caminho = new Caminho(c); Posicao = 0; Aceleracao = aceleracao / 3.6f; VelocidadeLimite = velocidadeLimite; Dados = new DadosCarro(); }
public void Mover() { if (Caminho.RuaAtual == null || isIniciado == false) { return; } if (Posicao <= Caminho.RuaAtual.Tamanho) { AtualizarPosicao(); } else { _velocidade = 0; if (Caminho.RuaAtual.Semaforo == null || Caminho.RuaAtual.Semaforo.Estado == EstadoSemaforo.Aberto) { Rua anterior = Caminho.RuaAtual; if (Caminho.Avancar()) { anterior.CarrosNaRua.Remove(this); // tira o carro da rua anterior Caminho.RuaAtual.CarrosNaRua.Add(this); // coloca o carro na rua atual if (TrocaDeRua != null) { TrocaDeRua(this, anterior, Caminho.RuaAtual); } Posicao = 0; this.Status = StatusCarroEnum.EmMovimento; this.Dados.instantesTrocaRua.Add(TempoDoSistema.Valor); } else { anterior.CarrosNaRua.Remove(this); // tira o carro da rua anterior if (TerminoCaminho != null) { TerminoCaminho(this); } this.Status = StatusCarroEnum.CaminhoConcluido; this.Dados.instanteSaidaSistema = TempoDoSistema.Valor; } } else { // O carro está parado tempoInicio = -1; if (AguardandoSemaforo != null) { AguardandoSemaforo(this); } this.Status = StatusCarroEnum.ParadoSemaforo; this.Dados.tempoSemaforo += 1; } } }