Example #1
0
        public Caminho(Caminho origem)
        {
            for (int i = 0; i < origem.Count; i++)
            {
                this.Add(origem[i]);
            }

            Id = origem.Id;
        }
Example #2
0
 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();
 }
Example #3
0
        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;
                }
            }
        }