예제 #1
0
        public void 戦争開始したか()
        {
            var str = "";

            recognizer.WarStarted += (s, e) => str = "WarStarted";

            using (var startBitmap = new Bitmap("TestImages\\WarStarted.png"))
            {
                recognizer.Report(startBitmap);

                // イベントが発火したかどうかチェック
                Assert.AreEqual("WarStarted", str);
            }
        }
        private bool Analyze()
        {
            using (var screenShot = _screenShotStorage.Shoot())
            {
                // 解析可能か確認
                if (!_preRecognizer.Recognize(screenShot.Image))
                {
                    return(false);
                }

                // 戦争の状況を登録
                _warStateRecognizer.Report(screenShot.Image);

                // 現在のPow・スキル・デバフ・キープダメージ・倍書の使用状況を取得
                var pow        = _powRecognizer.Recognize(screenShot.Image);
                var hp         = _hpRecognizer.Recognize(screenShot.Image);
                var skills     = _skillArrayRecognizer.Recognize(screenShot.Image);
                var powDebuffs = _powDebuffArrayRecognizer.Recognize(screenShot.Image);
                var keepDamage = _keepDamageRecognizer.Recognize(screenShot.Image);
                var isBookUsed = _bookUseRecognizer.Recognize(screenShot.Image);

                // 取得失敗していれば終了
                //   キープダメージ・倍書の使用状況は取得有無がスキル使用に影響がないためチェックしない
                if (hp == HpRecognizer.InvalidHp ||
                    pow == PowRecognizer.InvalidPow ||
                    powDebuffs == PowDebuffArrayRecognizer.InvalidPowDebuffs)
                {
                    return(false);
                }

                // スキルを使ったかどうかチェック
                var usedSkill = _skillCountAlgorithm.RecognizeUsedSkill(
                    screenShot.TimeStamp,
                    pow,
                    skills,
                    powDebuffs);

                // スキルを使っていれば更新通知
                if (usedSkill != null)
                {
                    SkillUsed?.BeginInvoke(
                        this,
                        new SkillUsedEventArgs(usedSkill),
                        null,
                        null);
                }
            }

            return(true);
        }