Skip to content

Commit aa03395

Browse files
committed
[修改]1. 修改事件参数为GameEventArgs
1 parent 646ccac commit aa03395

File tree

10 files changed

+154
-371
lines changed

10 files changed

+154
-371
lines changed
Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
1-
using GameFrameX.Utility;
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
26

37
namespace GameFrameX.Core.Abstractions.Events;
48

59
/// <summary>
6-
/// 事件参数
10+
/// 事件参数基类
711
/// </summary>
8-
public struct GameEventArgs
12+
public abstract class GameEventArgs : EventArgs
913
{
10-
/// <summary>
11-
/// 默认事件
12-
/// </summary>
13-
public static readonly GameEventArgs Default = new GameEventArgs();
14-
15-
/// <summary>
16-
/// 事件id
17-
/// </summary>
18-
public int EventId;
19-
20-
/// <summary>
21-
/// 事件参数
22-
/// </summary>
23-
public Param Data;
2414
}

GameFrameX.Core/Events/EventDispatcher.cs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using GameFrameX.Core.Abstractions.Events;
22
using GameFrameX.Core.Actors;
33
using GameFrameX.Core.Hotfix;
4-
using GameFrameX.Utility;
54
using GameFrameX.Utility.Extensions;
65
using GameFrameX.Foundation.Logger;
76

@@ -18,15 +17,8 @@ public static class EventDispatcher
1817
/// <param name="actorId">目标Actor的唯一标识符,如果为无效值则分发到全局监听器</param>
1918
/// <param name="eventId">要分发的事件ID</param>
2019
/// <param name="eventArgs">事件携带的参数数据,可以为null</param>
21-
public static void Dispatch(long actorId, int eventId, Param eventArgs = null)
20+
public static void Dispatch(long actorId, int eventId, GameEventArgs eventArgs = null)
2221
{
23-
// 构造事件参数对象
24-
var gameEventArgs = new GameEventArgs
25-
{
26-
EventId = eventId,
27-
Data = eventArgs,
28-
};
29-
3022
// 尝试获取目标Actor
3123
var actor = ActorManager.GetActor(actorId);
3224
if (actor != null)
@@ -51,7 +43,7 @@ async Task Work()
5143
try
5244
{
5345
// 调用监听器的事件处理方法
54-
await listener.HandleEvent(comp, gameEventArgs);
46+
await listener.HandleEvent(comp, eventArgs);
5547
}
5648
catch (Exception exception)
5749
{
@@ -84,7 +76,7 @@ async Task Work()
8476
try
8577
{
8678
// 调用监听器的事件处理方法
87-
await listener.HandleEvent(gameEventArgs);
79+
await listener.HandleEvent(eventArgs);
8880
}
8981
catch (Exception exception)
9082
{

GameFrameX.Core/Hotfix/Agent/BaseComponentAgent.cs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using GameFrameX.Core.Abstractions;
22
using GameFrameX.Core.Abstractions.Agent;
3+
using GameFrameX.Core.Abstractions.Events;
34
using GameFrameX.Core.Components;
45
using GameFrameX.Core.Timer;
56
using GameFrameX.Core.Timer.Handler;
6-
using GameFrameX.Utility;
77

88
namespace GameFrameX.Core.Hotfix.Agent;
99

@@ -211,14 +211,14 @@ public void Unscheduled(long id)
211211
/// 延迟执行定时任务,在指定的时间点执行一次任务
212212
/// </summary>
213213
/// <param name="time">指定执行任务的具体时间点</param>
214-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
214+
/// <param name="eventArgs">传递给定时任务处理器的自定义参数对象</param>
215215
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
216216
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
217217
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
218-
public long Delay<T>(DateTime time, Param param = null, long unScheduleId = 0) where T : ITimerHandler
218+
public long Delay<T>(DateTime time, GameEventArgs eventArgs = null, long unScheduleId = 0) where T : ITimerHandler
219219
{
220220
Unscheduled(unScheduleId);
221-
var scheduleId = QuartzTimer.Delay<T>(ActorId, time - DateTime.Now, param);
221+
var scheduleId = QuartzTimer.Delay<T>(ActorId, time - DateTime.Now, eventArgs);
222222
ScheduleIdSet.Add(scheduleId);
223223
return scheduleId;
224224
}
@@ -227,14 +227,14 @@ public long Delay<T>(DateTime time, Param param = null, long unScheduleId = 0) w
227227
/// 延迟执行定时任务,将时间戳转换为DateTime后在指定时间点执行一次任务
228228
/// </summary>
229229
/// <param name="time">Unix时间戳,将被转换为DateTime类型的执行时间点</param>
230-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
230+
/// <param name="eventArgs">传递给定时任务处理器的自定义参数对象</param>
231231
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
232232
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
233233
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
234-
public long Delay<T>(long time, Param param = null, long unScheduleId = 0) where T : ITimerHandler
234+
public long Delay<T>(long time, GameEventArgs eventArgs = null, long unScheduleId = 0) where T : ITimerHandler
235235
{
236236
Unscheduled(unScheduleId);
237-
var scheduleId = QuartzTimer.Delay<T>(ActorId, new DateTime(time) - DateTime.Now, param);
237+
var scheduleId = QuartzTimer.Delay<T>(ActorId, new DateTime(time) - DateTime.Now, eventArgs);
238238
ScheduleIdSet.Add(scheduleId);
239239
return scheduleId;
240240
}
@@ -243,14 +243,14 @@ public long Delay<T>(long time, Param param = null, long unScheduleId = 0) where
243243
/// 延迟执行定时任务,在指定的时间间隔后执行一次任务
244244
/// </summary>
245245
/// <param name="delay">从当前时间开始延迟执行的时间间隔</param>
246-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
246+
/// <param name="eventArgs">传递给定时任务处理器的自定义参数对象</param>
247247
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
248248
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
249249
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
250-
public long Delay<T>(TimeSpan delay, Param param = null, long unScheduleId = 0) where T : ITimerHandler
250+
public long Delay<T>(TimeSpan delay, GameEventArgs eventArgs = null, long unScheduleId = 0) where T : ITimerHandler
251251
{
252252
Unscheduled(unScheduleId);
253-
var scheduleId = QuartzTimer.Delay<T>(ActorId, delay, param);
253+
var scheduleId = QuartzTimer.Delay<T>(ActorId, delay, eventArgs);
254254
ScheduleIdSet.Add(scheduleId);
255255
return scheduleId;
256256
}
@@ -260,15 +260,15 @@ public long Delay<T>(TimeSpan delay, Param param = null, long unScheduleId = 0)
260260
/// </summary>
261261
/// <param name="delay">首次执行前的延迟时间</param>
262262
/// <param name="interval">连续执行之间的时间间隔</param>
263-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
263+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
264264
/// <param name="repeatCount">任务重复执行的次数,小于0表示无限重复执行</param>
265265
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
266266
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
267267
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
268-
public long Schedule<T>(TimeSpan delay, TimeSpan interval, Param param = null, int repeatCount = -1, long unScheduleId = 0) where T : ITimerHandler
268+
public long Schedule<T>(TimeSpan delay, TimeSpan interval, GameEventArgs gameEventArgs = null, int repeatCount = -1, long unScheduleId = 0) where T : ITimerHandler
269269
{
270270
Unscheduled(unScheduleId);
271-
var scheduleId = QuartzTimer.Schedule<T>(ActorId, delay, interval, param, repeatCount);
271+
var scheduleId = QuartzTimer.Schedule<T>(ActorId, delay, interval, gameEventArgs, repeatCount);
272272
ScheduleIdSet.Add(scheduleId);
273273
return scheduleId;
274274
}
@@ -278,14 +278,14 @@ public long Schedule<T>(TimeSpan delay, TimeSpan interval, Param param = null, i
278278
/// </summary>
279279
/// <param name="hour">每天执行的小时数(0-23)</param>
280280
/// <param name="minute">每天执行的分钟数(0-59)</param>
281-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
281+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
282282
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
283283
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
284284
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
285-
public long Daily<T>(int hour = 0, int minute = 0, Param param = null, long unScheduleId = 0) where T : ITimerHandler
285+
public long Daily<T>(int hour = 0, int minute = 0, GameEventArgs gameEventArgs = null, long unScheduleId = 0) where T : ITimerHandler
286286
{
287287
Unscheduled(unScheduleId);
288-
var scheduleId = QuartzTimer.Daily<T>(ActorId, hour, minute, param);
288+
var scheduleId = QuartzTimer.Daily<T>(ActorId, hour, minute, gameEventArgs);
289289
ScheduleIdSet.Add(scheduleId);
290290
return scheduleId;
291291
}
@@ -296,14 +296,14 @@ public long Daily<T>(int hour = 0, int minute = 0, Param param = null, long unSc
296296
/// <param name="dayOfWeek">指定每周执行的星期几(周日到周六)</param>
297297
/// <param name="hour">执行的小时数(0-23)</param>
298298
/// <param name="minute">执行的分钟数(0-59)</param>
299-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
299+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
300300
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
301301
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
302302
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
303-
public long Weekly<T>(DayOfWeek dayOfWeek, int hour = 0, int minute = 0, Param param = null, long unScheduleId = 0) where T : ITimerHandler
303+
public long Weekly<T>(DayOfWeek dayOfWeek, int hour = 0, int minute = 0, GameEventArgs gameEventArgs = null, long unScheduleId = 0) where T : ITimerHandler
304304
{
305305
Unscheduled(unScheduleId);
306-
var scheduleId = QuartzTimer.Weekly<T>(ActorId, dayOfWeek, hour, minute, param);
306+
var scheduleId = QuartzTimer.Weekly<T>(ActorId, dayOfWeek, hour, minute, gameEventArgs);
307307
ScheduleIdSet.Add(scheduleId);
308308
return scheduleId;
309309
}
@@ -313,13 +313,13 @@ public long Weekly<T>(DayOfWeek dayOfWeek, int hour = 0, int minute = 0, Param p
313313
/// </summary>
314314
/// <param name="hour">执行的小时数(0-23)</param>
315315
/// <param name="minute">执行的分钟数(0-59)</param>
316-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
316+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
317317
/// <param name="dayOfWeeks">指定要执行的多个星期几,可变参数数组</param>
318318
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
319319
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
320-
public long WithDayOfWeeks<T>(int hour, int minute, Param param, params DayOfWeek[] dayOfWeeks) where T : ITimerHandler
320+
public long WithDayOfWeeks<T>(int hour, int minute, GameEventArgs gameEventArgs, params DayOfWeek[] dayOfWeeks) where T : ITimerHandler
321321
{
322-
var scheduleId = QuartzTimer.WithDayOfWeeks<T>(ActorId, hour, minute, param, dayOfWeeks);
322+
var scheduleId = QuartzTimer.WithDayOfWeeks<T>(ActorId, hour, minute, gameEventArgs, dayOfWeeks);
323323
ScheduleIdSet.Add(scheduleId);
324324
return scheduleId;
325325
}
@@ -330,14 +330,14 @@ public long WithDayOfWeeks<T>(int hour, int minute, Param param, params DayOfWee
330330
/// <param name="dayOfMonth">指定每月执行的日期(1-31)</param>
331331
/// <param name="hour">执行的小时数(0-23)</param>
332332
/// <param name="minute">执行的分钟数(0-59)</param>
333-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
333+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
334334
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
335335
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
336336
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
337-
public long Monthly<T>(int dayOfMonth, int hour = 0, int minute = 0, Param param = null, long unScheduleId = 0) where T : ITimerHandler
337+
public long Monthly<T>(int dayOfMonth, int hour = 0, int minute = 0, GameEventArgs gameEventArgs = null, long unScheduleId = 0) where T : ITimerHandler
338338
{
339339
Unscheduled(unScheduleId);
340-
var scheduleId = QuartzTimer.Monthly<T>(ActorId, dayOfMonth, hour, minute, param);
340+
var scheduleId = QuartzTimer.Monthly<T>(ActorId, dayOfMonth, hour, minute, gameEventArgs);
341341
ScheduleIdSet.Add(scheduleId);
342342
return scheduleId;
343343
}
@@ -346,14 +346,14 @@ public long Monthly<T>(int dayOfMonth, int hour = 0, int minute = 0, Param param
346346
/// 使用Cron表达式创建定时任务,提供更灵活的定时任务调度
347347
/// </summary>
348348
/// <param name="cronExpression">标准的Cron表达式,用于定义复杂的执行计划</param>
349-
/// <param name="param">传递给定时任务处理器的自定义参数对象</param>
349+
/// <param name="gameEventArgs">传递给定时任务处理器的自定义参数对象</param>
350350
/// <param name="unScheduleId">需要取消的已存在的定时任务ID,如果大于0则会先取消该任务</param>
351351
/// <typeparam name="T">实现了ITimerHandler接口的定时任务处理器类型</typeparam>
352352
/// <returns>新创建的定时任务ID,可用于后续取消该任务</returns>
353-
public long WithCronExpression<T>(string cronExpression, Param param = null, long unScheduleId = 0) where T : ITimerHandler
353+
public long WithCronExpression<T>(string cronExpression, GameEventArgs gameEventArgs = null, long unScheduleId = 0) where T : ITimerHandler
354354
{
355355
Unscheduled(unScheduleId);
356-
var scheduleId = QuartzTimer.WithCronExpression<T>(ActorId, cronExpression, param);
356+
var scheduleId = QuartzTimer.WithCronExpression<T>(ActorId, cronExpression, gameEventArgs);
357357
ScheduleIdSet.Add(scheduleId);
358358
return scheduleId;
359359
}
Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
using GameFrameX.Core.Abstractions.Agent;
2-
using GameFrameX.Utility;
3-
4-
namespace GameFrameX.Core.Timer.Handler;
5-
6-
/// <summary>
7-
/// 计时器处理器接口
8-
/// </summary>
9-
public interface ITimerHandler
10-
{
11-
/// <summary>
12-
/// 内部计时器处理器调用函数
13-
/// </summary>
14-
/// <param name="agent">组件代理对象,用于与系统其他部分交互</param>
15-
/// <param name="param">传递给处理器的参数</param>
16-
/// <returns>一个任务,表示异步操作的结果</returns>
17-
Task InnerHandleTimer(IComponentAgent agent, Param param);
1+
using GameFrameX.Core.Abstractions.Agent;
2+
using GameFrameX.Core.Abstractions.Events;
3+
4+
namespace GameFrameX.Core.Timer.Handler;
5+
6+
/// <summary>
7+
/// 计时器处理器接口
8+
/// </summary>
9+
public interface ITimerHandler
10+
{
11+
/// <summary>
12+
/// 内部计时器处理器调用函数
13+
/// </summary>
14+
/// <param name="agent">组件代理对象,用于与系统其他部分交互</param>
15+
/// <param name="gameEventArgs">传递给处理器的参数</param>
16+
/// <returns>一个任务,表示异步操作的结果</returns>
17+
Task InnerHandleTimer(IComponentAgent agent, GameEventArgs gameEventArgs);
1818
}
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
using GameFrameX.Utility;
2-
using Quartz;
3-
4-
namespace GameFrameX.Core.Timer.Handler;
5-
6-
/// <summary>
7-
/// 非热更程序集的计时器处理器,不需要热更时间更新
8-
/// </summary>
9-
public abstract class NotHotfixTimerHandler : IJob
10-
{
11-
/// <summary>
12-
/// 内部计时器处理器调用函数
13-
/// </summary>
14-
/// <param name="context">Quartz 作业执行上下文,包含作业执行所需的信息</param>
15-
/// <returns>一个任务,表示异步操作的结果</returns>
16-
public Task Execute(IJobExecutionContext context)
17-
{
18-
var param = context.JobDetail.JobDataMap.Get(QuartzTimer.ParamKey) as Param;
19-
return HandleTimer(param);
20-
}
21-
22-
/// <summary>
23-
/// 计时器处理函数
24-
/// </summary>
25-
/// <param name="param">传递给处理器的参数</param>
26-
/// <returns>一个任务,表示异步操作的结果</returns>
27-
protected abstract Task HandleTimer(Param param);
1+
using GameFrameX.Core.Abstractions.Events;
2+
using Quartz;
3+
4+
namespace GameFrameX.Core.Timer.Handler;
5+
6+
/// <summary>
7+
/// 非热更程序集的计时器处理器,不需要热更时间更新
8+
/// </summary>
9+
public abstract class NotHotfixTimerHandler : IJob
10+
{
11+
/// <summary>
12+
/// 内部计时器处理器调用函数
13+
/// </summary>
14+
/// <param name="context">Quartz 作业执行上下文,包含作业执行所需的信息</param>
15+
/// <returns>一个任务,表示异步操作的结果</returns>
16+
public Task Execute(IJobExecutionContext context)
17+
{
18+
var param = context.JobDetail.JobDataMap.Get(QuartzTimer.ParamKey) as GameEventArgs;
19+
return HandleTimer(param);
20+
}
21+
22+
/// <summary>
23+
/// 计时器处理函数
24+
/// </summary>
25+
/// <param name="gameEventArgs">传递给处理器的参数</param>
26+
/// <returns>一个任务,表示异步操作的结果</returns>
27+
protected abstract Task HandleTimer(GameEventArgs gameEventArgs);
2828
}

0 commit comments

Comments
 (0)