Files
better-genshin-impact/BetterGenshinImpact/Service/Notification/NotificationHelper.cs

49 lines
1.8 KiB
C#

using System.Drawing;
using BetterGenshinImpact.Core.Config;
using BetterGenshinImpact.Core.Script.Group;
using BetterGenshinImpact.GameTask.AutoDomain;
using BetterGenshinImpact.GameTask.AutoGeniusInvokation.Model;
using BetterGenshinImpact.GameTask.Common;
using BetterGenshinImpact.Service.Notification.Builder;
using BetterGenshinImpact.Service.Notification.Model;
using BetterGenshinImpact.Service.Notification.Model.Base;
using BetterGenshinImpact.Service.Notification.Model.Enum;
namespace BetterGenshinImpact.Service.Notification;
public class NotificationHelper
{
public static void Notify(INotificationData notificationData)
{
if (NotificationService.Instance().Config.NotificationConfig.IncludeScreenShot)// TODO: 这个获取方式是否合理?
{
var screenShot = (Bitmap)TaskControl.CaptureToRectArea().SrcBitmap.Clone();
notificationData.Screenshot = screenShot;
}
NotificationService.Instance().NotifyAllNotifiers(notificationData);
}
}
public class NotificationBuilderFactory
{
public static ScriptNotificationBuilder CreateWith(ScriptGroupProject script)
{
return new ScriptNotificationBuilder().WithEvent(NotificationEvent.Script).WithScript(script);
}
public static TaskNotificationBuilder CreateWith(TaskDetails task)
{
return new TaskNotificationBuilder().WithEvent(NotificationEvent.Task).WithTask(task);
}
public static GeniusInvocationNotificationBuilder CreateWith(Duel geniusInvocation)
{
return new GeniusInvocationNotificationBuilder().WithEvent(NotificationEvent.GeniusInvocation).WithGeniusInvocation(geniusInvocation);
}
public static DomainNotificationBuilder CreateWith(AutoDomainParam domain)
{
return new DomainNotificationBuilder().WithEvent(NotificationEvent.Domain).WithDomain(domain);
}
}