mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-15 07:43:20 +08:00
Small refactor to NotificationHelper
This commit is contained in:
@@ -70,7 +70,7 @@ public class AutoDomainTask
|
||||
}
|
||||
|
||||
Init();
|
||||
NotificationHelper.NotifyUsing(t => t.Domain().Started().Build());
|
||||
NotificationHelper.SendTaskNotificationWithScreenshotUsing(b => b.Domain().Started().Build());
|
||||
var combatScenes = new CombatScenes().InitializeTeam(GetContentFromDispatcher());
|
||||
|
||||
// 前置进入秘境
|
||||
@@ -114,22 +114,22 @@ public class AutoDomainTask
|
||||
{
|
||||
Logger.LogInformation("体力已经耗尽,结束自动秘境");
|
||||
}
|
||||
NotificationHelper.NotifyUsing(t => t.Domain().Success().Build());
|
||||
NotificationHelper.SendTaskNotificationWithScreenshotUsing(b => b.Domain().Success().Build());
|
||||
break;
|
||||
}
|
||||
NotificationHelper.NotifyUsing(t => t.Domain().Progress().Build());
|
||||
NotificationHelper.SendTaskNotificationWithScreenshotUsing(b => b.Domain().Progress().Build());
|
||||
}
|
||||
}
|
||||
catch (NormalEndException e)
|
||||
{
|
||||
Logger.LogInformation("自动秘境中断:" + e.Message);
|
||||
NotificationHelper.NotifyUsing(t => t.Domain().Cancelled().Build());
|
||||
NotificationHelper.SendTaskNotificationWithScreenshotUsing(b => b.Domain().Cancelled().Build());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.LogError(e.Message);
|
||||
Logger.LogDebug(e.StackTrace);
|
||||
NotificationHelper.NotifyUsing(t => t.Domain().Failure().Build());
|
||||
NotificationHelper.SendTaskNotificationWithScreenshotUsing(b => b.Domain().Failure().Build());
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -74,7 +74,7 @@ public class Duel
|
||||
LogScreenResolution();
|
||||
_logger.LogInformation("========================================");
|
||||
_logger.LogInformation("→ {Text}", "全自动七圣召唤,启动!");
|
||||
NotificationHelper.NotifyUsing(t => t.GeniusInvocation().Started().Build());
|
||||
NotificationHelper.SendTaskNotificationUsing(b => b.GeniusInvocation().Started().WithScreenshot(taskParam.Dispatcher.GameCapture?.Capture()).Build());
|
||||
GeniusInvokationControl.GetInstance().Init(taskParam);
|
||||
SystemControl.ActivateWindow();
|
||||
|
||||
@@ -300,13 +300,13 @@ public class Duel
|
||||
catch (TaskCanceledException ex)
|
||||
{
|
||||
_logger.LogInformation(ex.Message);
|
||||
NotificationHelper.NotifyUsing(t => t.GeniusInvocation().Cancelled().Build());
|
||||
NotificationHelper.SendTaskNotificationUsing(b => b.GeniusInvocation().Cancelled().WithScreenshot(taskParam.Dispatcher.GameCapture?.Capture()).Build());
|
||||
}
|
||||
catch (NormalEndException ex)
|
||||
{
|
||||
_logger.LogInformation(ex.Message);
|
||||
_logger.LogInformation("对局结束");
|
||||
NotificationHelper.NotifyUsing(t => t.GeniusInvocation().Success().Build());
|
||||
NotificationHelper.SendTaskNotificationUsing(b => b.GeniusInvocation().Success().WithScreenshot(taskParam.Dispatcher.GameCapture?.Capture()).Build());
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
@@ -316,7 +316,7 @@ public class Duel
|
||||
{
|
||||
_logger.LogError(ex.StackTrace);
|
||||
}
|
||||
NotificationHelper.NotifyUsing(t => t.GeniusInvocation().Failure().Build());
|
||||
NotificationHelper.SendTaskNotificationUsing(b => b.GeniusInvocation().Failure().WithScreenshot(taskParam.Dispatcher.GameCapture?.Capture()).Build());
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
|
||||
namespace BetterGenshinImpact.Service.Notification.Builder;
|
||||
|
||||
public interface INotificationDataBuilder
|
||||
public interface INotificationDataBuilder<TNotificationData> where TNotificationData : INotificationData
|
||||
{
|
||||
INotificationData Build();
|
||||
|
||||
void Send();
|
||||
TNotificationData Build();
|
||||
}
|
||||
|
||||
@@ -1,26 +1,13 @@
|
||||
using System.Drawing;
|
||||
using BetterGenshinImpact.Service.Notification.Model;
|
||||
using BetterGenshinImpact.Service.Notification.Model.Enum;
|
||||
using BetterGenshinImpact.Service.Notification.Model;
|
||||
|
||||
namespace BetterGenshinImpact.Service.Notification.Builder;
|
||||
|
||||
public class LifecycleNotificationBuilder : INotificationDataBuilder
|
||||
public class LifecycleNotificationBuilder : INotificationDataBuilder<LifecycleNotificationData>
|
||||
{
|
||||
private LifecycleNotificationData _notificationData = new();
|
||||
private readonly LifecycleNotificationData _notificationData = new();
|
||||
|
||||
public LifecycleNotificationBuilder AddPayload(string payload)
|
||||
{
|
||||
_notificationData.Payload = payload;
|
||||
return this;
|
||||
}
|
||||
|
||||
public INotificationData Build()
|
||||
public LifecycleNotificationData Build()
|
||||
{
|
||||
return _notificationData;
|
||||
}
|
||||
|
||||
public void Send()
|
||||
{
|
||||
NotificationService.Instance().NotifyAllNotifiers(Build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,23 +4,23 @@ using BetterGenshinImpact.Service.Notification.Model.Enum;
|
||||
|
||||
namespace BetterGenshinImpact.Service.Notification.Builder;
|
||||
|
||||
public class TaskNotificationBuilder : INotificationDataBuilder
|
||||
public class TaskNotificationBuilder : INotificationDataBuilder<TaskNotificationData>
|
||||
{
|
||||
private TaskNotificationData _notificationData = new();
|
||||
private readonly TaskNotificationData _notificationData = new();
|
||||
|
||||
public TaskNotificationBuilder AddEvent(NotificationEvent notificationEvent)
|
||||
public TaskNotificationBuilder WithEvent(NotificationEvent notificationEvent)
|
||||
{
|
||||
_notificationData.Event = notificationEvent;
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder AddAction(NotificationAction notificationAction)
|
||||
public TaskNotificationBuilder WithAction(NotificationAction notificationAction)
|
||||
{
|
||||
_notificationData.Action = notificationAction;
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder AddConclusion(NotificationConclusion? conclusion)
|
||||
public TaskNotificationBuilder WithConclusion(NotificationConclusion? conclusion)
|
||||
{
|
||||
_notificationData.Conclusion = conclusion;
|
||||
return this;
|
||||
@@ -28,48 +28,48 @@ public class TaskNotificationBuilder : INotificationDataBuilder
|
||||
|
||||
public TaskNotificationBuilder GeniusInvocation()
|
||||
{
|
||||
return AddEvent(NotificationEvent.GeniusInvocation);
|
||||
return WithEvent(NotificationEvent.GeniusInvocation);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Domain()
|
||||
{
|
||||
return AddEvent(NotificationEvent.Domain);
|
||||
return WithEvent(NotificationEvent.Domain);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Started()
|
||||
{
|
||||
return AddAction(NotificationAction.Started);
|
||||
return WithAction(NotificationAction.Started);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Completed()
|
||||
{
|
||||
return AddAction(NotificationAction.Completed);
|
||||
return WithAction(NotificationAction.Completed);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Progress()
|
||||
{
|
||||
return AddAction(NotificationAction.Progress);
|
||||
return WithAction(NotificationAction.Progress);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Success()
|
||||
{
|
||||
return AddAction(NotificationAction.Completed)
|
||||
.AddConclusion(NotificationConclusion.Success);
|
||||
return WithAction(NotificationAction.Completed)
|
||||
.WithConclusion(NotificationConclusion.Success);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Failure()
|
||||
{
|
||||
return AddAction(NotificationAction.Completed)
|
||||
.AddConclusion(NotificationConclusion.Failure);
|
||||
return WithAction(NotificationAction.Completed)
|
||||
.WithConclusion(NotificationConclusion.Failure);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder Cancelled()
|
||||
{
|
||||
return AddAction(NotificationAction.Completed)
|
||||
.AddConclusion(NotificationConclusion.Cancelled);
|
||||
return WithAction(NotificationAction.Completed)
|
||||
.WithConclusion(NotificationConclusion.Cancelled);
|
||||
}
|
||||
|
||||
public TaskNotificationBuilder AddScreenshot(Image screenshot)
|
||||
public TaskNotificationBuilder WithScreenshot(Image? screenshot)
|
||||
{
|
||||
_notificationData.Screenshot = screenshot;
|
||||
return this;
|
||||
@@ -81,13 +81,8 @@ public class TaskNotificationBuilder : INotificationDataBuilder
|
||||
return this;
|
||||
}
|
||||
|
||||
public INotificationData Build()
|
||||
public TaskNotificationData Build()
|
||||
{
|
||||
return _notificationData;
|
||||
}
|
||||
|
||||
public void Send()
|
||||
{
|
||||
NotificationService.Instance().NotifyAllNotifiers(Build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,6 @@ public record LifecycleNotificationData : INotificationData
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public NotificationEvent Event { get; set; }
|
||||
|
||||
public object? Payload { get; set; }
|
||||
|
||||
public static LifecycleNotificationData Test()
|
||||
{
|
||||
return new LifecycleNotificationData() { Event = NotificationEvent.Test };
|
||||
|
||||
@@ -13,9 +13,16 @@ public class NotificationHelper
|
||||
NotificationService.Instance().NotifyAllNotifiers(notificationData);
|
||||
}
|
||||
|
||||
public static void NotifyUsing(Func<TaskNotificationBuilder, INotificationData> func)
|
||||
public static void SendTaskNotificationUsing(Func<TaskNotificationBuilder, INotificationData> builderFunc)
|
||||
{
|
||||
var builder = new TaskNotificationBuilder();
|
||||
Notify(builderFunc(builder));
|
||||
}
|
||||
|
||||
public static void SendTaskNotificationWithScreenshotUsing(Func<TaskNotificationBuilder, INotificationData> builderFunc)
|
||||
{
|
||||
var builder = new TaskNotificationBuilder();
|
||||
var screenShot = (Bitmap)TaskControl.GetContentFromDispatcher().SrcBitmap.Clone();
|
||||
Notify(func(new TaskNotificationBuilder().AddScreenshot(screenShot)));
|
||||
Notify(builderFunc(builder.WithScreenshot(screenShot)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user