public Robo(string id, IVisao <Img, VtoERobo, PlaceToDraw> visao, IEstrategia <VtoERobo, EtoCRobo, VtoEBola, VtoECampo> estrategia, IComunicacao <EtoCRobo> comunicacao) { this.id = id; infoEstrat = default(VtoERobo); infoExped = default(EtoCRobo); this.visao = visao; this.estrategia = estrategia; this.comunicacao = comunicacao; }
public void defineCustomRobo( string id, IVisao <Bitmap, InfoVtoERobo, PictureBox> visao, IEstrategia <InfoVtoERobo, InfoEtoCRobo, InfoVtoEBola, InfoVtoECampo> estrategia, IComunicacao <InfoEtoCRobo> comunicacao, ref PictureBox placeToDraw) { //visao.defineLugarDesenho(ref placeToDraw); controle.defineRobo(id, visao, estrategia, comunicacao); if (placeToDraw != null) { controle.defineLugarDesenhoRobo(id, ref placeToDraw); } }
/// <summary> /// Cria um novo robô/Atualiza suas propriedades, também chama o método de conexão para estabelece-la /// </summary> /// <param name="id">Identificador único do robô</param> /// <param name="visao">Classe que processa Imagem</param> /// <param name="estrategia">Processa Estratégia</param> /// <param name="comunicacao">Comunicação sem fio</param> public void defineRobo( string id, IVisao <Img, VtoERobo, PlaceToDraw> visao, IEstrategia <VtoERobo, EtoCRobo, VtoEBola, VtoECampo> estrategia, IComunicacao <EtoCRobo> comunicacao) { foreach (var x in robos) { if (x.Value.Visao == visao || x.Value.Comunicacao == comunicacao || x.Value.Estrategia == estrategia) { throw new Exception("Componentes de Visão, Estratégia e Expedidor devem ser Instâncias Distintas"); } } var robo = new Robo <Img, VtoERobo, EtoCRobo, VtoEBola, VtoECampo, PlaceToDraw>(id, visao, estrategia, comunicacao); lock (robos) if (robos.ContainsKey(id)) { if (visao != null) { robos[id].Visao = visao; } if (estrategia != null) { robos[id].Estrategia = estrategia; } if (comunicacao != null) { robos[id].Comunicacao.desconectar(); robos[id].Comunicacao = comunicacao; robos[id].Comunicacao.conectar(); } } else { robos.Add(id, robo); robos[id].Comunicacao.conectar(); } }
public void definirBola(IVisao <Img, VtoEBola, PlaceToDraw> visaoBola) { bola.Visao = visaoBola; }
public void definirCampo(IVisao <Img, VtoECampo, PlaceToDraw> visaoCampo) { campo.Visao = visaoCampo; }