/// <summary>
        /// 現在の状態をレポートし、必要であればユーザに書の使用を通知します
        /// </summary>
        /// <param name="warEvents"></param>
        /// <param name="isBookUsed"></param>
        /// <param name="keepDamage"></param>
        public void ReportCurrentStatusWithNotify(WarEvents warEvents, bool isBookUsed, KeepDamage keepDamage)
        {
            if (!IsEnabled)
            {
                return;
            }

            // 書を使用中なら通知の必要がないので対象外
            if (isBookUsed)
            {
                return;
            }

            // 戦争中じゃなければ通知対象外
            if (warEvents != WarEvents.WarStarted)
            {
                return;
            }

            // ゲージが一定以下でなければ通知対象外
            var min = Math.Min(keepDamage.AttackKeepDamage, keepDamage.DefenceKeepDamage);

            if (keepDamage.IsEmpty() || min > BookUseNotificationThreashold)
            {
                return;
            }

            // 初回の通知、または前回の通知から一定時間経過していれば通知する
            if (!_previousNotificateDateTime.HasValue ||
                (DateTime.Now - _previousNotificateDateTime.Value) > BookUseNoticationTimeSpan)
            {
                PlayNotifySound();

                _previousNotificateDateTime = DateTime.Now;
            }
        }
Esempio n. 2
0
 public KeepDamageUpdatedEventArgs(KeepDamage damage)
 {
     Damage = damage;
 }