示例#1
0
        private void AppendEnemyCaptureString(string str, MATCH_STATUS matchStatus)
        {
            Color popBackColorEnemyUnique      = txtEnemyCaptureUnique.BackColor;
            Color popSelectionColorEnemyUnique = txtEnemyCaptureUnique.SelectionColor;

            switch (matchStatus)
            {
            case MATCH_STATUS.GOOD:
                txtEnemyCaptureUnique.BackColor      = Color.LightGreen;
                txtEnemyCaptureUnique.SelectionColor = Color.Green;
                break;

            case MATCH_STATUS.BAD:
                txtEnemyCaptureUnique.BackColor      = Color.LightSalmon;
                txtEnemyCaptureUnique.SelectionColor = Color.Red;
                break;
            }

            if (txtEnemyCaptureLast15.Text.Length > 0 && txtEnemyCaptureLast15.Lines.Length > 15)
            {
                txtEnemyCaptureLast15.Text = txtEnemyCaptureLast15.Text.Substring(txtEnemyCaptureLast15.Text.IndexOf('\n') + 1);
            }
            txtEnemyCaptureLast15.AppendText(str + "\r\n");

            string[] lines = txtEnemyCaptureUnique.Text.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            foreach (string line in lines)
            {
                if (line == str)
                {
                    txtEnemyCaptureUnique.BackColor      = popBackColorEnemyUnique;
                    txtEnemyCaptureUnique.SelectionColor = popSelectionColorEnemyUnique;
                    return;
                }
            }

            txtEnemyCaptureUnique.AppendText(str + "\r\n");

            txtEnemyCaptureUnique.BackColor      = popBackColorEnemyUnique;
            txtEnemyCaptureUnique.SelectionColor = popSelectionColorEnemyUnique;
        }
示例#2
0
        private async Task CaptureEnemyData()
        {
            Stopwatch s = Stopwatch.StartNew();

            await enemyData.Capture(ocr);

            if (enemyData.LastResult.Lines.Count == 0)
            {
                AppendEnemyCaptureString("(nothing)", MATCH_STATUS.NOTHING);

                if (enemyData.IsStale)
                {
                    ClearEnemyUI();
                }
            }
            else
            {
                // grab text from OcrLines
                IEnumerable <string> lines = enemyData.LastResult.Lines
                                             .Select(x => regexEnemy.Replace(x.Text.ToLower().Trim(), ""))
                                             .Where(x => x.Length > 0 && !x.Contains("forwar")); // filter out fast forwards

                foreach (string line in lines)
                {
                    Enemy        enemy       = Enemies.Find(x => x.MatchStrings.Contains(line));
                    MATCH_STATUS matchStatus = enemy != null ? MATCH_STATUS.GOOD : MATCH_STATUS.BAD;
                    AppendEnemyCaptureString(line, matchStatus);

                    // if all enemy slots currently full, no need to process
                    if (enemy1 != null && enemy2 != null && enemy3 != null)
                    {
                        continue;
                    }

                    if (enemy != null)
                    {
                        // edge cases (ghost/ghast, milon battle, ghost battle)
                        if (enemy.Name == "Milon" &&
                            ((enemy1 != null && enemy1.Name == "Milon Z.") ||
                             (enemy2 != null && enemy2.Name == "Milon Z.") ||
                             (enemy3 != null && enemy3.Name == "Milon Z.")))
                        {
                            continue;
                        }
                        if (enemy.Name == "Dr. Lugae" && enemy1 != null && enemy1.Name == "Lugaeborg")
                        {
                            continue;
                        }

                        if (enemy == enemy1)
                        {
                            continue;
                        }
                        if (enemy == enemy2)
                        {
                            continue;
                        }
                        if (enemy == enemy3)
                        {
                            continue;
                        }

                        if (pbEnemy1.Image == null)
                        {
                            enemy1 = enemy;
                            SetEnemy(enemy, pbEnemy1, txtEnemy1);
                        }
                        else if (pbEnemy2.Image == null)
                        {
                            enemy2 = enemy;
                            SetEnemy(enemy, pbEnemy2, txtEnemy2);
                        }
                        else if (pbEnemy3.Image == null)
                        {
                            enemy3 = enemy;
                            SetEnemy(enemy, pbEnemy3, txtEnemy3);
                        }
                    }
                }
            }

            s.Stop();
            lblEnemyCaptureTime.Text = s.ElapsedMilliseconds.ToString() + " ms";
        }