public static Busca obterInstancia() { if (Busca.objColeta == null) { Busca.objColeta = new Busca(); } return(Busca.objColeta); }
public bool acaoIniciarBatalha() { System.Threading.Thread.Sleep(1000); System.Windows.Forms.SendKeys.SendWait(" "); System.Threading.Thread.Sleep(4000); try { Size bounds = Proporcao.obterProporcao(); if (ImagemCaptura.obterInstancia().objBitmap != null) { ImagemCaptura.obterInstancia().objBitmap.Dispose(); } Bitmap objBitmap = ImagemCaptura.obterInstancia().obterImagemTela(true); int eixoHorizontal = 275; int eixoVertical = 405; //Acrescentado 21 pixels na altura/largura do retangulo do personagem e gato, estava cortando no meio do retangulo do número. int larguraEAlturaRetangulo = 107 + 21; Rectangle retanguloPersonagem = new Rectangle(eixoHorizontal, eixoVertical, larguraEAlturaRetangulo, larguraEAlturaRetangulo); eixoHorizontal = 448; Rectangle retanguloGato = new Rectangle(eixoHorizontal, eixoVertical, larguraEAlturaRetangulo, larguraEAlturaRetangulo); Dictionary <int, Model.Match> MatchesGato = new Dictionary <int, Model.Match>(); AntiBOT objAntiBOT = new AntiBOT(); for (int numeroMatch = 1; numeroMatch <= 8; numeroMatch++) { MatchesGato.Add(numeroMatch, ImagemBusca.obterInstancia().buscarImagemPorTemplateRotacionado( objAntiBOT.numerosMatch["Numero" + numeroMatch], Imagem.EnumRegiaoImagem.RETANGULO, retanguloGato ) ); } Application.DoEvents(); List <Model.Match> Verificar = new List <Model.Match>(); List <Model.Match> NaoEncontrados = new List <Model.Match>(); //Buscar os números até encontrar pelo menos 3 do lado do gato Verificar.Clear(); foreach (Model.Match m in MatchesGato.Values) { if (m.Semelhanca > 0) { Verificar.Add(m); } else { NaoEncontrados.Add(m); } } List <Model.Match> Clicar = new List <Model.Match>(); bool conflito = false; if (Verificar.Count > 3) { for (int i = 0; i < Verificar.Count; i++) { conflito = false; for (int j = 0; j < Verificar.Count; j++) { if (i == j) { continue; } if (new Rectangle(Verificar[i].Location, new Size(24, 24)).Contains(Verificar[j].Location)) { conflito = true; if (Verificar[i].Semelhanca > Verificar[j].Semelhanca) { Clicar.Add(Verificar[i]); } else { Clicar.Add(Verificar[j]); } } } if (!conflito) { Clicar.Add(Verificar[i]); } } } else { Clicar.AddRange(Verificar); } System.Threading.Thread.Sleep(1100); foreach (Model.Match objMatch in Clicar) { //System.Threading.Thread.Sleep(2000); Model.Match matchClicar = ImagemBusca.obterInstancia().buscarImagemPorTemplateRotacionado(objAntiBOT.numerosMatch["Numero" + objMatch.Numero.ToString()], Imagem.EnumRegiaoImagem.RETANGULO, retanguloPersonagem); System.Windows.Forms.SendKeys.SendWait("1"); System.Threading.Thread.Sleep(800); Common.Lib.Win32.clicarBotaoEsquerdo(matchClicar.Location.X, matchClicar.Location.Y); } Application.DoEvents(); System.Threading.Thread.Sleep(5000); Busca.obterInstancia().validarFechamentoMensagens(); } catch (Exception objException) { MessageBox.Show(objException.Message); } return(true); }
private void checkBoxCacadorPixelsLigado_CheckedChanged(object sender, EventArgs e) { try { if (!String.IsNullOrEmpty(comboBoxTipoBusca.SelectedValue.ToString())) { CheckBox objCheckBox = (CheckBox)sender; this.checkBoxCacadorPixelsLigado.Checked = objCheckBox.Checked; this.checkBoxCacadorPixelsLigado.BackColor = Color.Gray; if (objCheckBox.Checked == true) { this.checkBoxCacadorPixelsLigado.BackColor = Color.Green; ImagemCaptura.obterInstancia().isUtilizarMascaraLuminosidade = checkBoxMascaraLuminosidade.Checked; Common.Lib.Win32.clicarBotaoEsquerdo(Screen.PrimaryScreen.Bounds.Width / 2, Screen.PrimaryScreen.Bounds.Height / 2); Camera.obterInstancia().padronizarDistanciaCamera(); // Modificar esse trecho utilizado para teste, porque está sendo validado somente por 'coleta'. Quem sabe um switch não caia melhor? if (EnumUtil.ParseEnum <EnumTipoBusca>(comboBoxTipoBusca.SelectedValue.ToString()) == EnumTipoBusca.Coleta) { ServiceRecurso objRecurso = ServiceRecurso.obterInstancia(); ServiceBotaoAcao objServiceBotaoAcao = ServiceBotaoAcao.obterInstancia(); Service.Busca objServiceBusca = Service.Busca.obterInstancia(); objServiceBusca.isAtivarModoBaixoConsumo = checkBoxAtivarBaixoConsumo.Checked; bool isMovimentarAleatoriamente = checkBoxMovimentarAleatoriamente.Checked; EnumProfissoes objEnumProfissao = EnumUtil.ParseEnum <EnumProfissoes>(comboBoxProfissao.SelectedValue.ToString()); List <AViewModelColeta> listaColetas = new List <AViewModelColeta>(); for (int indice = 0; indice < this.IndiceUltimaAcao; indice++) { ComboBox comboboxRecurso = (ComboBox)this.obterControlPorName(this, "comboBoxRecurso_" + indice.ToString()); ComboBox comboboxAcao = (ComboBox)this.obterControlPorName(this, "comboBoxAcao_" + indice.ToString()); string nomeRecurso = ((KeyValuePair <string, string>)comboboxRecurso.SelectedItem).Key; string nomeAcao = ((KeyValuePair <string, string>)comboboxAcao.SelectedItem).Key; ABotaoAcao botaAcao = objServiceBotaoAcao.obterBotaoAcao(nomeAcao); AViewModelColeta objAViewModelColeta = new Colheita(); if (botaAcao != null && botaAcao is IPlantio) { objAViewModelColeta = new Plantio(); } objAViewModelColeta.objRecurso = objRecurso.obterRecurso(nomeRecurso, objEnumProfissao); objAViewModelColeta.objABotaoAcao = botaAcao; listaColetas.Add(objAViewModelColeta); } // Responsável por permitir que o loop consiga ser encerrado utilizando as hotkeys ou clique no botão. Task.Factory.StartNew(() => { while (this.checkBoxCacadorPixelsLigado.Checked) { bool isSucessoNaColeta = true; foreach (AViewModelColeta objAViewModelColeta in listaColetas) { isSucessoNaColeta = true; while (isSucessoNaColeta && this.checkBoxCacadorPixelsLigado.Checked) { isSucessoNaColeta = objServiceBusca.buscar(objAViewModelColeta); } } if (!isSucessoNaColeta && isMovimentarAleatoriamente && this.checkBoxCacadorPixelsLigado.Checked) { Personagem.obterInstancia().movimentarAleatoriamente(); Thread.Sleep(800); } } }); } } } else { MessageBox.Show("Preencha os campos obrigatórios."); } } catch (Exception objException) { MessageBox.Show(objException.Message); } }