添加插件加载器和事件触发方法组 (#54)

* Add PluginLoader

* 删除event返回值

* 添加插件触发器(方法组)

* 删除冗余方法

* 将typeof(GetType())改写为this is

* 删除无用引用
This commit is contained in:
milimoe 2023-09-24 13:06:10 +08:00 committed by GitHub
parent eb0bb86f38
commit 082ce3b6f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1124 additions and 438 deletions

695
Api/Utility/PluginLoader.cs Normal file
View File

@ -0,0 +1,695 @@
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Common.Plugin;
using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Api.Utility
{
public class PluginLoader
{
public Dictionary<string, BasePlugin> Plugins { get; } = new();
private PluginLoader()
{
}
public static PluginLoader LoadPlugins()
{
PluginLoader loader = new();
PluginManager.LoadPlugins(loader.Plugins);
return loader;
}
public void OnBeforeConnectEvent(ConnectEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeConnectEvent(e);
});
}
public void OnAfterConnectEvent(ConnectEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterConnectEvent(e);
});
}
public void OnSucceedConnectEvent(ConnectEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedConnectEvent(e);
});
}
public void OnFailedConnectEvent(ConnectEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedConnectEvent(e);
});
}
public void OnBeforeDisconnectEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeDisconnectEvent(e);
});
}
public void OnAfterDisconnectEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterDisconnectEvent(e);
});
}
public void OnSucceedDisconnectEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedDisconnectEvent(e);
});
}
public void OnFailedDisconnectEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedDisconnectEvent(e);
});
}
public void OnBeforeLoginEvent(LoginEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeLoginEvent(e);
});
}
public void OnAfterLoginEvent(LoginEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterLoginEvent(e);
});
}
public void OnSucceedLoginEvent(LoginEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedLoginEvent(e);
});
}
public void OnFailedLoginEvent(LoginEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedLoginEvent(e);
});
}
public void OnBeforeLogoutEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeLogoutEvent(e);
});
}
public void OnAfterLogoutEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterLogoutEvent(e);
});
}
public void OnSucceedLogoutEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedLogoutEvent(e);
});
}
public void OnFailedLogoutEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedLogoutEvent(e);
});
}
public void OnBeforeRegEvent(RegisterEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeRegEvent(e);
});
}
public void OnAfterRegEvent(RegisterEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterRegEvent(e);
});
}
public void OnSucceedRegEvent(RegisterEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedRegEvent(e);
});
}
public void OnFailedRegEvent(RegisterEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedRegEvent(e);
});
}
public void OnBeforeIntoRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeIntoRoomEvent(e);
});
}
public void OnAfterIntoRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterIntoRoomEvent(e);
});
}
public void OnSucceedIntoRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedIntoRoomEvent(e);
});
}
public void OnFailedIntoRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedIntoRoomEvent(e);
});
}
public void OnBeforeSendTalkEvent(SendTalkEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeSendTalkEvent(e);
});
}
public void OnAfterSendTalkEvent(SendTalkEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterSendTalkEvent(e);
});
}
public void OnSucceedSendTalkEvent(SendTalkEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedSendTalkEvent(e);
});
}
public void OnFailedSendTalkEvent(SendTalkEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedSendTalkEvent(e);
});
}
public void OnBeforeCreateRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeCreateRoomEvent(e);
});
}
public void OnAfterCreateRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterCreateRoomEvent(e);
});
}
public void OnSucceedCreateRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedCreateRoomEvent(e);
});
}
public void OnFailedCreateRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedCreateRoomEvent(e);
});
}
public void OnBeforeQuitRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeQuitRoomEvent(e);
});
}
public void OnAfterQuitRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterQuitRoomEvent(e);
});
}
public void OnSucceedQuitRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedQuitRoomEvent(e);
});
}
public void OnFailedQuitRoomEvent(RoomEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedQuitRoomEvent(e);
});
}
public void OnBeforeChangeRoomSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeChangeRoomSettingEvent(e);
});
}
public void OnAfterChangeRoomSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterChangeRoomSettingEvent(e);
});
}
public void OnSucceedChangeRoomSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedChangeRoomSettingEvent(e);
});
}
public void OnFailedChangeRoomSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedChangeRoomSettingEvent(e);
});
}
public void OnBeforeStartMatchEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeStartMatchEvent(e);
});
}
public void OnAfterStartMatchEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterStartMatchEvent(e);
});
}
public void OnSucceedStartMatchEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedStartMatchEvent(e);
});
}
public void OnFailedStartMatchEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedStartMatchEvent(e);
});
}
public void OnBeforeStartGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeStartGameEvent(e);
});
}
public void OnAfterStartGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterStartGameEvent(e);
});
}
public void OnSucceedStartGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedStartGameEvent(e);
});
}
public void OnFailedStartGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedStartGameEvent(e);
});
}
public void OnBeforeChangeProfileEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeChangeProfileEvent(e);
});
}
public void OnAfterChangeProfileEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterChangeProfileEvent(e);
});
}
public void OnSucceedChangeProfileEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedChangeProfileEvent(e);
});
}
public void OnFailedChangeProfileEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedChangeProfileEvent(e);
});
}
public void OnBeforeChangeAccountSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeChangeAccountSettingEvent(e);
});
}
public void OnAfterChangeAccountSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterChangeAccountSettingEvent(e);
});
}
public void OnSucceedChangeAccountSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedChangeAccountSettingEvent(e);
});
}
public void OnFailedChangeAccountSettingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedChangeAccountSettingEvent(e);
});
}
public void OnBeforeOpenInventoryEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeOpenInventoryEvent(e);
});
}
public void OnAfterOpenInventoryEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterOpenInventoryEvent(e);
});
}
public void OnSucceedOpenInventoryEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedOpenInventoryEvent(e);
});
}
public void OnFailedOpenInventoryEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedOpenInventoryEvent(e);
});
}
public void OnBeforeSignInEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeSignInEvent(e);
});
}
public void OnAfterSignInEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterSignInEvent(e);
});
}
public void OnSucceedSignInEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedSignInEvent(e);
});
}
public void OnFailedSignInEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedSignInEvent(e);
});
}
public void OnBeforeOpenStoreEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeOpenStoreEvent(e);
});
}
public void OnAfterOpenStoreEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterOpenStoreEvent(e);
});
}
public void OnSucceedOpenStoreEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedOpenStoreEvent(e);
});
}
public void OnFailedOpenStoreEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedOpenStoreEvent(e);
});
}
public void OnBeforeBuyItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeBuyItemEvent(e);
});
}
public void OnAfterBuyItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterBuyItemEvent(e);
});
}
public void OnSucceedBuyItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedBuyItemEvent(e);
});
}
public void OnFailedBuyItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedBuyItemEvent(e);
});
}
public void OnBeforeShowRankingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeShowRankingEvent(e);
});
}
public void OnAfterShowRankingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterShowRankingEvent(e);
});
}
public void OnSucceedShowRankingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedShowRankingEvent(e);
});
}
public void OnFailedShowRankingEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedShowRankingEvent(e);
});
}
public void OnBeforeUseItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeUseItemEvent(e);
});
}
public void OnAfterUseItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterUseItemEvent(e);
});
}
public void OnSucceedUseItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedUseItemEvent(e);
});
}
public void OnFailedUseItemEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedUseItemEvent(e);
});
}
public void OnBeforeEndGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnBeforeEndGameEvent(e);
});
}
public void OnAfterEndGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnAfterEndGameEvent(e);
});
}
public void OnSucceedEndGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnSucceedEndGameEvent(e);
});
}
public void OnFailedEndGameEvent(GeneralEventArgs e)
{
Parallel.ForEach(Plugins.Values, plugin =>
{
plugin.OnFailedEndGameEvent(e);
});
}
}
}

View File

@ -1,12 +1,14 @@
namespace Milimoe.FunGame.Core.Interface
{
public interface IPlugin
public interface IPlugin : IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler,
ICreateRoomEventHandler, IQuitRoomEventHandler, IChangeRoomSettingEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IChangeProfileEventHandler, IChangeAccountSettingEventHandler,
IOpenInventoryEventHandler, ISignInEventHandler, IOpenStoreEventHandler, IBuyItemEventHandler, IShowRankingEventHandler, IUseItemEventHandler, IEndGameEventHandler
{
public string Name { get; }
public string Description { get; }
public string Version { get; }
public string Author { get; }
public void Load();
public bool Load();
}
}

View File

@ -1,5 +1,4 @@
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Interface
{
@ -8,28 +7,28 @@ namespace Milimoe.FunGame.Core.Interface
/// </summary>
public interface IEventHandler
{
public delegate EventResult BeforeEventHandler(object sender, GeneralEventArgs e);
public delegate EventResult AfterEventHandler(object sender, GeneralEventArgs e);
public delegate EventResult SucceedEventHandler(object sender, GeneralEventArgs e);
public delegate EventResult FailedEventHandler(object sender, GeneralEventArgs e);
public delegate void BeforeEventHandler(object sender, GeneralEventArgs e);
public delegate void AfterEventHandler(object sender, GeneralEventArgs e);
public delegate void SucceedEventHandler(object sender, GeneralEventArgs e);
public delegate void FailedEventHandler(object sender, GeneralEventArgs e);
}
public interface IConnectEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, ConnectEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, ConnectEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, ConnectEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, ConnectEventArgs e);
public new delegate void BeforeEventHandler(object sender, ConnectEventArgs e);
public new delegate void AfterEventHandler(object sender, ConnectEventArgs e);
public new delegate void SucceedEventHandler(object sender, ConnectEventArgs e);
public new delegate void FailedEventHandler(object sender, ConnectEventArgs e);
public event BeforeEventHandler? BeforeConnect;
public event AfterEventHandler? AfterConnect;
public event SucceedEventHandler? SucceedConnect;
public event FailedEventHandler? FailedConnect;
public EventResult OnBeforeConnectEvent(ConnectEventArgs e);
public EventResult OnAfterConnectEvent(ConnectEventArgs e);
public EventResult OnSucceedConnectEvent(ConnectEventArgs e);
public EventResult OnFailedConnectEvent(ConnectEventArgs e);
public void OnBeforeConnectEvent(ConnectEventArgs e);
public void OnAfterConnectEvent(ConnectEventArgs e);
public void OnSucceedConnectEvent(ConnectEventArgs e);
public void OnFailedConnectEvent(ConnectEventArgs e);
}
public interface IDisconnectEventHandler : IEventHandler
@ -39,28 +38,28 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedDisconnect;
public event FailedEventHandler? FailedDisconnect;
public EventResult OnBeforeDisconnectEvent(GeneralEventArgs e);
public EventResult OnAfterDisconnectEvent(GeneralEventArgs e);
public EventResult OnSucceedDisconnectEvent(GeneralEventArgs e);
public EventResult OnFailedDisconnectEvent(GeneralEventArgs e);
public void OnBeforeDisconnectEvent(GeneralEventArgs e);
public void OnAfterDisconnectEvent(GeneralEventArgs e);
public void OnSucceedDisconnectEvent(GeneralEventArgs e);
public void OnFailedDisconnectEvent(GeneralEventArgs e);
}
public interface ILoginEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, LoginEventArgs e);
public new delegate void BeforeEventHandler(object sender, LoginEventArgs e);
public new delegate void AfterEventHandler(object sender, LoginEventArgs e);
public new delegate void SucceedEventHandler(object sender, LoginEventArgs e);
public new delegate void FailedEventHandler(object sender, LoginEventArgs e);
public event BeforeEventHandler? BeforeLogin;
public event AfterEventHandler? AfterLogin;
public event SucceedEventHandler? SucceedLogin;
public event FailedEventHandler? FailedLogin;
public EventResult OnBeforeLoginEvent(LoginEventArgs e);
public EventResult OnAfterLoginEvent(LoginEventArgs e);
public EventResult OnSucceedLoginEvent(LoginEventArgs e);
public EventResult OnFailedLoginEvent(LoginEventArgs e);
public void OnBeforeLoginEvent(LoginEventArgs e);
public void OnAfterLoginEvent(LoginEventArgs e);
public void OnSucceedLoginEvent(LoginEventArgs e);
public void OnFailedLoginEvent(LoginEventArgs e);
}
public interface ILogoutEventHandler : IEventHandler
@ -70,100 +69,100 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedLogout;
public event FailedEventHandler? FailedLogout;
public EventResult OnBeforeLogoutEvent(GeneralEventArgs e);
public EventResult OnAfterLogoutEvent(GeneralEventArgs e);
public EventResult OnSucceedLogoutEvent(GeneralEventArgs e);
public EventResult OnFailedLogoutEvent(GeneralEventArgs e);
public void OnBeforeLogoutEvent(GeneralEventArgs e);
public void OnAfterLogoutEvent(GeneralEventArgs e);
public void OnSucceedLogoutEvent(GeneralEventArgs e);
public void OnFailedLogoutEvent(GeneralEventArgs e);
}
public interface IRegEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RegisterEventArgs e);
public new delegate void BeforeEventHandler(object sender, RegisterEventArgs e);
public new delegate void AfterEventHandler(object sender, RegisterEventArgs e);
public new delegate void SucceedEventHandler(object sender, RegisterEventArgs e);
public new delegate void FailedEventHandler(object sender, RegisterEventArgs e);
public event BeforeEventHandler? BeforeReg;
public event AfterEventHandler? AfterReg;
public event SucceedEventHandler? SucceedReg;
public event FailedEventHandler? FailedReg;
public EventResult OnBeforeRegEvent(RegisterEventArgs e);
public EventResult OnAfterRegEvent(RegisterEventArgs e);
public EventResult OnSucceedRegEvent(RegisterEventArgs e);
public EventResult OnFailedRegEvent(RegisterEventArgs e);
public void OnBeforeRegEvent(RegisterEventArgs e);
public void OnAfterRegEvent(RegisterEventArgs e);
public void OnSucceedRegEvent(RegisterEventArgs e);
public void OnFailedRegEvent(RegisterEventArgs e);
}
public interface IIntoRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public new delegate void BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate void AfterEventHandler(object sender, RoomEventArgs e);
public new delegate void SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate void FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeIntoRoom;
public event AfterEventHandler? AfterIntoRoom;
public event SucceedEventHandler? SucceedIntoRoom;
public event FailedEventHandler? FailedIntoRoom;
public EventResult OnBeforeIntoRoomEvent(RoomEventArgs e);
public EventResult OnAfterIntoRoomEvent(RoomEventArgs e);
public EventResult OnSucceedIntoRoomEvent(RoomEventArgs e);
public EventResult OnFailedIntoRoomEvent(RoomEventArgs e);
public void OnBeforeIntoRoomEvent(RoomEventArgs e);
public void OnAfterIntoRoomEvent(RoomEventArgs e);
public void OnSucceedIntoRoomEvent(RoomEventArgs e);
public void OnFailedIntoRoomEvent(RoomEventArgs e);
}
public interface ISendTalkEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, SendTalkEventArgs e);
public new delegate void BeforeEventHandler(object sender, SendTalkEventArgs e);
public new delegate void AfterEventHandler(object sender, SendTalkEventArgs e);
public new delegate void SucceedEventHandler(object sender, SendTalkEventArgs e);
public new delegate void FailedEventHandler(object sender, SendTalkEventArgs e);
public event BeforeEventHandler? BeforeSendTalk;
public event AfterEventHandler? AfterSendTalk;
public event SucceedEventHandler? SucceedSendTalk;
public event FailedEventHandler? FailedSendTalk;
public EventResult OnBeforeSendTalkEvent(SendTalkEventArgs e);
public EventResult OnAfterSendTalkEvent(SendTalkEventArgs e);
public EventResult OnSucceedSendTalkEvent(SendTalkEventArgs e);
public EventResult OnFailedSendTalkEvent(SendTalkEventArgs e);
public void OnBeforeSendTalkEvent(SendTalkEventArgs e);
public void OnAfterSendTalkEvent(SendTalkEventArgs e);
public void OnSucceedSendTalkEvent(SendTalkEventArgs e);
public void OnFailedSendTalkEvent(SendTalkEventArgs e);
}
public interface ICreateRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public new delegate void BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate void AfterEventHandler(object sender, RoomEventArgs e);
public new delegate void SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate void FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeCreateRoom;
public event AfterEventHandler? AfterCreateRoom;
public event SucceedEventHandler? SucceedCreateRoom;
public event FailedEventHandler? FailedCreateRoom;
public EventResult OnBeforeCreateRoomEvent(RoomEventArgs e);
public EventResult OnAfterCreateRoomEvent(RoomEventArgs e);
public EventResult OnSucceedCreateRoomEvent(RoomEventArgs e);
public EventResult OnFailedCreateRoomEvent(RoomEventArgs e);
public void OnBeforeCreateRoomEvent(RoomEventArgs e);
public void OnAfterCreateRoomEvent(RoomEventArgs e);
public void OnSucceedCreateRoomEvent(RoomEventArgs e);
public void OnFailedCreateRoomEvent(RoomEventArgs e);
}
public interface IQuitRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public new delegate void BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate void AfterEventHandler(object sender, RoomEventArgs e);
public new delegate void SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate void FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeQuitRoom;
public event AfterEventHandler? AfterQuitRoom;
public event SucceedEventHandler? SucceedQuitRoom;
public event FailedEventHandler? FailedQuitRoom;
public EventResult OnBeforeQuitRoomEvent(RoomEventArgs e);
public EventResult OnAfterQuitRoomEvent(RoomEventArgs e);
public EventResult OnSucceedQuitRoomEvent(RoomEventArgs e);
public EventResult OnFailedQuitRoomEvent(RoomEventArgs e);
public void OnBeforeQuitRoomEvent(RoomEventArgs e);
public void OnAfterQuitRoomEvent(RoomEventArgs e);
public void OnSucceedQuitRoomEvent(RoomEventArgs e);
public void OnFailedQuitRoomEvent(RoomEventArgs e);
}
public interface IChangeRoomSettingEventHandler : IEventHandler
@ -173,10 +172,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedChangeRoomSetting;
public event FailedEventHandler? FailedChangeRoomSetting;
public EventResult OnBeforeChangeRoomSettingEvent(GeneralEventArgs e);
public EventResult OnAfterChangeRoomSettingEvent(GeneralEventArgs e);
public EventResult OnSucceedChangeRoomSettingEvent(GeneralEventArgs e);
public EventResult OnFailedChangeRoomSettingEvent(GeneralEventArgs e);
public void OnBeforeChangeRoomSettingEvent(GeneralEventArgs e);
public void OnAfterChangeRoomSettingEvent(GeneralEventArgs e);
public void OnSucceedChangeRoomSettingEvent(GeneralEventArgs e);
public void OnFailedChangeRoomSettingEvent(GeneralEventArgs e);
}
public interface IStartMatchEventHandler : IEventHandler
@ -186,10 +185,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedStartMatch;
public event FailedEventHandler? FailedStartMatch;
public EventResult OnBeforeStartMatchEvent(GeneralEventArgs e);
public EventResult OnAfterStartMatchEvent(GeneralEventArgs e);
public EventResult OnSucceedStartMatchEvent(GeneralEventArgs e);
public EventResult OnFailedStartMatchEvent(GeneralEventArgs e);
public void OnBeforeStartMatchEvent(GeneralEventArgs e);
public void OnAfterStartMatchEvent(GeneralEventArgs e);
public void OnSucceedStartMatchEvent(GeneralEventArgs e);
public void OnFailedStartMatchEvent(GeneralEventArgs e);
}
public interface IStartGameEventHandler : IEventHandler
@ -199,10 +198,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedStartGame;
public event FailedEventHandler? FailedStartGame;
public EventResult OnBeforeStartGameEvent(GeneralEventArgs e);
public EventResult OnAfterStartGameEvent(GeneralEventArgs e);
public EventResult OnSucceedStartGameEvent(GeneralEventArgs e);
public EventResult OnFailedStartGameEvent(GeneralEventArgs e);
public void OnBeforeStartGameEvent(GeneralEventArgs e);
public void OnAfterStartGameEvent(GeneralEventArgs e);
public void OnSucceedStartGameEvent(GeneralEventArgs e);
public void OnFailedStartGameEvent(GeneralEventArgs e);
}
public interface IChangeProfileEventHandler : IEventHandler
@ -212,10 +211,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedChangeProfile;
public event FailedEventHandler? FailedChangeProfile;
public EventResult OnBeforeChangeProfileEvent(GeneralEventArgs e);
public EventResult OnAfterChangeProfileEvent(GeneralEventArgs e);
public EventResult OnSucceedChangeProfileEvent(GeneralEventArgs e);
public EventResult OnFailedChangeProfileEvent(GeneralEventArgs e);
public void OnBeforeChangeProfileEvent(GeneralEventArgs e);
public void OnAfterChangeProfileEvent(GeneralEventArgs e);
public void OnSucceedChangeProfileEvent(GeneralEventArgs e);
public void OnFailedChangeProfileEvent(GeneralEventArgs e);
}
public interface IChangeAccountSettingEventHandler : IEventHandler
@ -225,10 +224,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedChangeAccountSetting;
public event FailedEventHandler? FailedChangeAccountSetting;
public EventResult OnBeforeChangeAccountSettingEvent(GeneralEventArgs e);
public EventResult OnAfterChangeAccountSettingEvent(GeneralEventArgs e);
public EventResult OnSucceedChangeAccountSettingEvent(GeneralEventArgs e);
public EventResult OnFailedChangeAccountSettingEvent(GeneralEventArgs e);
public void OnBeforeChangeAccountSettingEvent(GeneralEventArgs e);
public void OnAfterChangeAccountSettingEvent(GeneralEventArgs e);
public void OnSucceedChangeAccountSettingEvent(GeneralEventArgs e);
public void OnFailedChangeAccountSettingEvent(GeneralEventArgs e);
}
public interface IOpenInventoryEventHandler : IEventHandler
@ -238,10 +237,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedOpenInventory;
public event FailedEventHandler? FailedOpenInventory;
public EventResult OnBeforeOpenInventoryEvent(GeneralEventArgs e);
public EventResult OnAfterOpenInventoryEvent(GeneralEventArgs e);
public EventResult OnSucceedOpenInventoryEvent(GeneralEventArgs e);
public EventResult OnFailedOpenInventoryEvent(GeneralEventArgs e);
public void OnBeforeOpenInventoryEvent(GeneralEventArgs e);
public void OnAfterOpenInventoryEvent(GeneralEventArgs e);
public void OnSucceedOpenInventoryEvent(GeneralEventArgs e);
public void OnFailedOpenInventoryEvent(GeneralEventArgs e);
}
public interface ISignInEventHandler : IEventHandler
@ -251,10 +250,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedSignIn;
public event FailedEventHandler? FailedSignIn;
public EventResult OnBeforeSignInEvent(GeneralEventArgs e);
public EventResult OnAfterSignInEvent(GeneralEventArgs e);
public EventResult OnSucceedSignInEvent(GeneralEventArgs e);
public EventResult OnFailedSignInEvent(GeneralEventArgs e);
public void OnBeforeSignInEvent(GeneralEventArgs e);
public void OnAfterSignInEvent(GeneralEventArgs e);
public void OnSucceedSignInEvent(GeneralEventArgs e);
public void OnFailedSignInEvent(GeneralEventArgs e);
}
public interface IOpenStoreEventHandler : IEventHandler
@ -264,10 +263,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedOpenStore;
public event FailedEventHandler? FailedOpenStore;
public EventResult OnBeforeOpenStoreEvent(GeneralEventArgs e);
public EventResult OnAfterOpenStoreEvent(GeneralEventArgs e);
public EventResult OnSucceedOpenStoreEvent(GeneralEventArgs e);
public EventResult OnFailedOpenStoreEvent(GeneralEventArgs e);
public void OnBeforeOpenStoreEvent(GeneralEventArgs e);
public void OnAfterOpenStoreEvent(GeneralEventArgs e);
public void OnSucceedOpenStoreEvent(GeneralEventArgs e);
public void OnFailedOpenStoreEvent(GeneralEventArgs e);
}
public interface IBuyItemEventHandler : IEventHandler
@ -277,10 +276,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedBuyItem;
public event FailedEventHandler? FailedBuyItem;
public EventResult OnBeforeBuyItemEvent(GeneralEventArgs e);
public EventResult OnAfterBuyItemEvent(GeneralEventArgs e);
public EventResult OnSucceedBuyItemEvent(GeneralEventArgs e);
public EventResult OnFailedBuyItemEvent(GeneralEventArgs e);
public void OnBeforeBuyItemEvent(GeneralEventArgs e);
public void OnAfterBuyItemEvent(GeneralEventArgs e);
public void OnSucceedBuyItemEvent(GeneralEventArgs e);
public void OnFailedBuyItemEvent(GeneralEventArgs e);
}
public interface IShowRankingEventHandler : IEventHandler
@ -290,10 +289,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedShowRanking;
public event FailedEventHandler? FailedShowRanking;
public EventResult OnBeforeShowRankingEvent(GeneralEventArgs e);
public EventResult OnAfterShowRankingEvent(GeneralEventArgs e);
public EventResult OnSucceedShowRankingEvent(GeneralEventArgs e);
public EventResult OnFailedShowRankingEvent(GeneralEventArgs e);
public void OnBeforeShowRankingEvent(GeneralEventArgs e);
public void OnAfterShowRankingEvent(GeneralEventArgs e);
public void OnSucceedShowRankingEvent(GeneralEventArgs e);
public void OnFailedShowRankingEvent(GeneralEventArgs e);
}
public interface IUseItemEventHandler : IEventHandler
@ -303,10 +302,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedUseItem;
public event FailedEventHandler? FailedUseItem;
public EventResult OnBeforeUseItemEvent(GeneralEventArgs e);
public EventResult OnAfterUseItemEvent(GeneralEventArgs e);
public EventResult OnSucceedUseItemEvent(GeneralEventArgs e);
public EventResult OnFailedUseItemEvent(GeneralEventArgs e);
public void OnBeforeUseItemEvent(GeneralEventArgs e);
public void OnAfterUseItemEvent(GeneralEventArgs e);
public void OnSucceedUseItemEvent(GeneralEventArgs e);
public void OnFailedUseItemEvent(GeneralEventArgs e);
}
public interface IEndGameEventHandler : IEventHandler
@ -316,9 +315,9 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedEndGame;
public event FailedEventHandler? FailedEndGame;
public EventResult OnBeforeEndGameEvent(GeneralEventArgs e);
public EventResult OnAfterEndGameEvent(GeneralEventArgs e);
public EventResult OnSucceedEndGameEvent(GeneralEventArgs e);
public EventResult OnFailedEndGameEvent(GeneralEventArgs e);
public void OnBeforeEndGameEvent(GeneralEventArgs e);
public void OnAfterEndGameEvent(GeneralEventArgs e);
public void OnSucceedEndGameEvent(GeneralEventArgs e);
public void OnFailedEndGameEvent(GeneralEventArgs e);
}
}

View File

@ -1,5 +1,4 @@
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Interface
{
@ -8,169 +7,169 @@ namespace Milimoe.FunGame.Core.Interface
/// </summary>
public interface IConnectEvent
{
public EventResult BeforeConnectEvent(object sender, ConnectEventArgs e);
public EventResult AfterConnectEvent(object sender, ConnectEventArgs e);
public EventResult SucceedConnectEvent(object sender, ConnectEventArgs e);
public EventResult FailedConnectEvent(object sender, ConnectEventArgs e);
public void BeforeConnectEvent(object sender, ConnectEventArgs e);
public void AfterConnectEvent(object sender, ConnectEventArgs e);
public void SucceedConnectEvent(object sender, ConnectEventArgs e);
public void FailedConnectEvent(object sender, ConnectEventArgs e);
}
public interface IDisconnectEvent
{
public EventResult BeforeDisconnectEvent(object sender, GeneralEventArgs e);
public EventResult AfterDisconnectEvent(object sender, GeneralEventArgs e);
public EventResult SucceedDisconnectEvent(object sender, GeneralEventArgs e);
public EventResult FailedDisconnectEvent(object sender, GeneralEventArgs e);
public void BeforeDisconnectEvent(object sender, GeneralEventArgs e);
public void AfterDisconnectEvent(object sender, GeneralEventArgs e);
public void SucceedDisconnectEvent(object sender, GeneralEventArgs e);
public void FailedDisconnectEvent(object sender, GeneralEventArgs e);
}
public interface ILoginEvent
{
public EventResult BeforeLoginEvent(object sender, LoginEventArgs e);
public EventResult AfterLoginEvent(object sender, LoginEventArgs e);
public EventResult SucceedLoginEvent(object sender, LoginEventArgs e);
public EventResult FailedLoginEvent(object sender, LoginEventArgs e);
public void BeforeLoginEvent(object sender, LoginEventArgs e);
public void AfterLoginEvent(object sender, LoginEventArgs e);
public void SucceedLoginEvent(object sender, LoginEventArgs e);
public void FailedLoginEvent(object sender, LoginEventArgs e);
}
public interface ILogoutEvent
{
public EventResult BeforeLogoutEvent(object sender, GeneralEventArgs e);
public EventResult AfterLogoutEvent(object sender, GeneralEventArgs e);
public EventResult SucceedLogoutEvent(object sender, GeneralEventArgs e);
public EventResult FailedLogoutEvent(object sender, GeneralEventArgs e);
public void BeforeLogoutEvent(object sender, GeneralEventArgs e);
public void AfterLogoutEvent(object sender, GeneralEventArgs e);
public void SucceedLogoutEvent(object sender, GeneralEventArgs e);
public void FailedLogoutEvent(object sender, GeneralEventArgs e);
}
public interface IRegEvent
{
public EventResult BeforeRegEvent(object sender, RegisterEventArgs e);
public EventResult AfterRegEvent(object sender, RegisterEventArgs e);
public EventResult SucceedRegEvent(object sender, RegisterEventArgs e);
public EventResult FailedRegEvent(object sender, RegisterEventArgs e);
public void BeforeRegEvent(object sender, RegisterEventArgs e);
public void AfterRegEvent(object sender, RegisterEventArgs e);
public void SucceedRegEvent(object sender, RegisterEventArgs e);
public void FailedRegEvent(object sender, RegisterEventArgs e);
}
public interface IIntoRoomEvent
{
public EventResult BeforeIntoRoomEvent(object sender, RoomEventArgs e);
public EventResult AfterIntoRoomEvent(object sender, RoomEventArgs e);
public EventResult SucceedIntoRoomEvent(object sender, RoomEventArgs e);
public EventResult FailedIntoRoomEvent(object sender, RoomEventArgs e);
public void BeforeIntoRoomEvent(object sender, RoomEventArgs e);
public void AfterIntoRoomEvent(object sender, RoomEventArgs e);
public void SucceedIntoRoomEvent(object sender, RoomEventArgs e);
public void FailedIntoRoomEvent(object sender, RoomEventArgs e);
}
public interface ISendTalkEvent
{
public EventResult BeforeSendTalkEvent(object sender, SendTalkEventArgs e);
public EventResult AfterSendTalkEvent(object sender, SendTalkEventArgs e);
public EventResult SucceedSendTalkEvent(object sender, SendTalkEventArgs e);
public EventResult FailedSendTalkEvent(object sender, SendTalkEventArgs e);
public void BeforeSendTalkEvent(object sender, SendTalkEventArgs e);
public void AfterSendTalkEvent(object sender, SendTalkEventArgs e);
public void SucceedSendTalkEvent(object sender, SendTalkEventArgs e);
public void FailedSendTalkEvent(object sender, SendTalkEventArgs e);
}
public interface ICreateRoomEvent
{
public EventResult BeforeCreateRoomEvent(object sender, RoomEventArgs e);
public EventResult AfterCreateRoomEvent(object sender, RoomEventArgs e);
public EventResult SucceedCreateRoomEvent(object sender, RoomEventArgs e);
public EventResult FailedCreateRoomEvent(object sender, RoomEventArgs e);
public void BeforeCreateRoomEvent(object sender, RoomEventArgs e);
public void AfterCreateRoomEvent(object sender, RoomEventArgs e);
public void SucceedCreateRoomEvent(object sender, RoomEventArgs e);
public void FailedCreateRoomEvent(object sender, RoomEventArgs e);
}
public interface IQuitRoomEvent
{
public EventResult BeforeQuitRoomEvent(object sender, RoomEventArgs e);
public EventResult AfterQuitRoomEvent(object sender, RoomEventArgs e);
public EventResult SucceedQuitRoomEvent(object sender, RoomEventArgs e);
public EventResult FailedQuitRoomEvent(object sender, RoomEventArgs e);
public void BeforeQuitRoomEvent(object sender, RoomEventArgs e);
public void AfterQuitRoomEvent(object sender, RoomEventArgs e);
public void SucceedQuitRoomEvent(object sender, RoomEventArgs e);
public void FailedQuitRoomEvent(object sender, RoomEventArgs e);
}
public interface IChangeRoomSettingEvent
{
public EventResult BeforeChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public EventResult AfterChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public EventResult SucceedChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public EventResult FailedChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public void BeforeChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public void AfterChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public void SucceedChangeRoomSettingEvent(object sender, GeneralEventArgs e);
public void FailedChangeRoomSettingEvent(object sender, GeneralEventArgs e);
}
public interface IStartMatchEvent
{
public EventResult BeforeStartMatchEvent(object sender, GeneralEventArgs e);
public EventResult AfterStartMatchEvent(object sender, GeneralEventArgs e);
public EventResult SucceedStartMatchEvent(object sender, GeneralEventArgs e);
public EventResult FailedStartMatchEvent(object sender, GeneralEventArgs e);
public void BeforeStartMatchEvent(object sender, GeneralEventArgs e);
public void AfterStartMatchEvent(object sender, GeneralEventArgs e);
public void SucceedStartMatchEvent(object sender, GeneralEventArgs e);
public void FailedStartMatchEvent(object sender, GeneralEventArgs e);
}
public interface IStartGameEvent
{
public EventResult BeforeStartGameEvent(object sender, GeneralEventArgs e);
public EventResult AfterStartGameEvent(object sender, GeneralEventArgs e);
public EventResult SucceedStartGameEvent(object sender, GeneralEventArgs e);
public EventResult FailedStartGameEvent(object sender, GeneralEventArgs e);
public void BeforeStartGameEvent(object sender, GeneralEventArgs e);
public void AfterStartGameEvent(object sender, GeneralEventArgs e);
public void SucceedStartGameEvent(object sender, GeneralEventArgs e);
public void FailedStartGameEvent(object sender, GeneralEventArgs e);
}
public interface IChangeProfileEvent
{
public EventResult BeforeChangeProfileEvent(object sender, GeneralEventArgs e);
public EventResult AfterChangeProfileEvent(object sender, GeneralEventArgs e);
public EventResult SucceedChangeProfileEvent(object sender, GeneralEventArgs e);
public EventResult FailedChangeProfileEvent(object sender, GeneralEventArgs e);
public void BeforeChangeProfileEvent(object sender, GeneralEventArgs e);
public void AfterChangeProfileEvent(object sender, GeneralEventArgs e);
public void SucceedChangeProfileEvent(object sender, GeneralEventArgs e);
public void FailedChangeProfileEvent(object sender, GeneralEventArgs e);
}
public interface IChangeAccountSettingEvent
{
public EventResult BeforeChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public EventResult AfterChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public EventResult SucceedChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public EventResult FailedChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public void BeforeChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public void AfterChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public void SucceedChangeAccountSettingEvent(object sender, GeneralEventArgs e);
public void FailedChangeAccountSettingEvent(object sender, GeneralEventArgs e);
}
public interface IOpenInventoryEvent
{
public EventResult BeforeOpenInventoryEvent(object sender, GeneralEventArgs e);
public EventResult AfterOpenInventoryEvent(object sender, GeneralEventArgs e);
public EventResult SucceedOpenInventoryEvent(object sender, GeneralEventArgs e);
public EventResult FailedOpenInventoryEvent(object sender, GeneralEventArgs e);
public void BeforeOpenInventoryEvent(object sender, GeneralEventArgs e);
public void AfterOpenInventoryEvent(object sender, GeneralEventArgs e);
public void SucceedOpenInventoryEvent(object sender, GeneralEventArgs e);
public void FailedOpenInventoryEvent(object sender, GeneralEventArgs e);
}
public interface ISignInEvent
{
public EventResult BeforeSignInEvent(object sender, GeneralEventArgs e);
public EventResult AfterSignInEvent(object sender, GeneralEventArgs e);
public EventResult SucceedSignInEvent(object sender, GeneralEventArgs e);
public EventResult FailedSignInEvent(object sender, GeneralEventArgs e);
public void BeforeSignInEvent(object sender, GeneralEventArgs e);
public void AfterSignInEvent(object sender, GeneralEventArgs e);
public void SucceedSignInEvent(object sender, GeneralEventArgs e);
public void FailedSignInEvent(object sender, GeneralEventArgs e);
}
public interface IOpenStoreEvent
{
public EventResult BeforeOpenStoreEvent(object sender, GeneralEventArgs e);
public EventResult AfterOpenStoreEvent(object sender, GeneralEventArgs e);
public EventResult SucceedOpenStoreEvent(object sender, GeneralEventArgs e);
public EventResult FailedOpenStoreEvent(object sender, GeneralEventArgs e);
public void BeforeOpenStoreEvent(object sender, GeneralEventArgs e);
public void AfterOpenStoreEvent(object sender, GeneralEventArgs e);
public void SucceedOpenStoreEvent(object sender, GeneralEventArgs e);
public void FailedOpenStoreEvent(object sender, GeneralEventArgs e);
}
public interface IBuyItemEvent
{
public EventResult BeforeBuyItemEvent(object sender, GeneralEventArgs e);
public EventResult AfterBuyItemEvent(object sender, GeneralEventArgs e);
public EventResult SucceedBuyItemEvent(object sender, GeneralEventArgs e);
public EventResult FailedBuyItemEvent(object sender, GeneralEventArgs e);
public void BeforeBuyItemEvent(object sender, GeneralEventArgs e);
public void AfterBuyItemEvent(object sender, GeneralEventArgs e);
public void SucceedBuyItemEvent(object sender, GeneralEventArgs e);
public void FailedBuyItemEvent(object sender, GeneralEventArgs e);
}
public interface IShowRankingEvent
{
public EventResult BeforeShowRankingEvent(object sender, GeneralEventArgs e);
public EventResult AfterShowRankingEvent(object sender, GeneralEventArgs e);
public EventResult SucceedShowRankingEvent(object sender, GeneralEventArgs e);
public EventResult FailedShowRankingEvent(object sender, GeneralEventArgs e);
public void BeforeShowRankingEvent(object sender, GeneralEventArgs e);
public void AfterShowRankingEvent(object sender, GeneralEventArgs e);
public void SucceedShowRankingEvent(object sender, GeneralEventArgs e);
public void FailedShowRankingEvent(object sender, GeneralEventArgs e);
}
public interface IUseItemEvent
{
public EventResult BeforeUseItemEvent(object sender, GeneralEventArgs e);
public EventResult AfterUseItemEvent(object sender, GeneralEventArgs e);
public EventResult SucceedUseItemEvent(object sender, GeneralEventArgs e);
public EventResult FailedUseItemEvent(object sender, GeneralEventArgs e);
public void BeforeUseItemEvent(object sender, GeneralEventArgs e);
public void AfterUseItemEvent(object sender, GeneralEventArgs e);
public void SucceedUseItemEvent(object sender, GeneralEventArgs e);
public void FailedUseItemEvent(object sender, GeneralEventArgs e);
}
public interface IEndGameEvent
{
public EventResult BeforeEndGameEvent(object sender, GeneralEventArgs e);
public EventResult AfterEndGameEvent(object sender, GeneralEventArgs e);
public EventResult SucceedEndGameEvent(object sender, GeneralEventArgs e);
public EventResult FailedEndGameEvent(object sender, GeneralEventArgs e);
public void BeforeEndGameEvent(object sender, GeneralEventArgs e);
public void AfterEndGameEvent(object sender, GeneralEventArgs e);
public void SucceedEndGameEvent(object sender, GeneralEventArgs e);
public void FailedEndGameEvent(object sender, GeneralEventArgs e);
}
}

View File

@ -3,15 +3,16 @@
public class GeneralEventArgs : EventArgs
{
public string EventMsg { get; set; } = "";
public object[]? Parameters { get; set; } = null;
public object[] Parameters { get; set; } = Array.Empty<object>();
public bool Cancel { get; set; } = false;
public GeneralEventArgs(string EventMsg = "", object[]? Parameters = null)
public GeneralEventArgs(string EventMsg, object[] Parameters)
{
this.EventMsg = EventMsg;
this.Parameters = Parameters;
}
public GeneralEventArgs(params object[]? Parameters)
public GeneralEventArgs(params object[] Parameters)
{
this.Parameters = Parameters;
}
@ -19,10 +20,10 @@
public class GeneralEvent<T>
{
public T Instance { get; set; }
public T? Instance { get; set; }
public GeneralEvent()
{
Instance = Activator.CreateInstance<T>();
Instance = (T?)Activator.CreateInstance(typeof(T?));
}
}
}

View File

@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Library.Common.Event
{
public class RoomEventArgs
public class RoomEventArgs : GeneralEventArgs
{
public string RoomID { get; set; } = "";
public long RoomMaster { get; set; } = 0;

View File

@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Core.Library.Common.Event
{
public class SendTalkEventArgs
public class SendTalkEventArgs : GeneralEventArgs
{
public string Message { get; set; } = "";

View File

@ -1,13 +1,9 @@
using Milimoe.FunGame.Core.Interface;
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Library.Common.Plugin
{
public abstract class BasePlugin : IPlugin, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler,
ICreateRoomEventHandler, IQuitRoomEventHandler, IChangeRoomSettingEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IChangeProfileEventHandler, IChangeAccountSettingEventHandler,
IOpenInventoryEventHandler, ISignInEventHandler, IOpenStoreEventHandler, IBuyItemEventHandler, IShowRankingEventHandler, IUseItemEventHandler, IEndGameEventHandler
public abstract class BasePlugin : IPlugin
{
/// <summary>
/// 插件名称
@ -37,11 +33,11 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
/// <summary>
/// 加载插件
/// </summary>
public void Load()
public bool Load()
{
if (IsLoaded)
{
return;
return false;
}
// BeforeLoad可以阻止加载此插件
if (BeforeLoad())
@ -53,6 +49,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
// 如果加载后需要执行代码请重写AfterLoad方法
AfterLoad();
}
return IsLoaded;
}
/// <summary>
@ -77,9 +74,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
/// </summary>
private void BindEvent()
{
Type type = GetType();
if (type == typeof(IConnectEvent))
if (this is IConnectEvent)
{
IConnectEvent bind = (IConnectEvent)this;
BeforeConnect += bind.BeforeConnectEvent;
@ -88,7 +83,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedConnect += bind.FailedConnectEvent;
}
if (type == typeof(IDisconnectEvent))
if (this is IDisconnectEvent)
{
IDisconnectEvent bind = (IDisconnectEvent)this;
BeforeDisconnect += bind.BeforeDisconnectEvent;
@ -97,7 +92,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedDisconnect += bind.FailedDisconnectEvent;
}
if (type == typeof(ILoginEvent))
if (this is ILoginEvent)
{
ILoginEvent bind = (ILoginEvent)this;
BeforeLogin += bind.BeforeLoginEvent;
@ -106,7 +101,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedLogin += bind.FailedLoginEvent;
}
if (type == typeof(ILogoutEvent))
if (this is ILogoutEvent)
{
ILogoutEvent bind = (ILogoutEvent)this;
BeforeLogout += bind.BeforeLogoutEvent;
@ -115,7 +110,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedLogout += bind.FailedLogoutEvent;
}
if (type == typeof(IRegEvent))
if (this is IRegEvent)
{
IRegEvent bind = (IRegEvent)this;
BeforeReg += bind.BeforeRegEvent;
@ -124,7 +119,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedReg += bind.FailedRegEvent;
}
if (type == typeof(IIntoRoomEvent))
if (this is IIntoRoomEvent)
{
IIntoRoomEvent bind = (IIntoRoomEvent)this;
BeforeIntoRoom += bind.BeforeIntoRoomEvent;
@ -133,7 +128,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedIntoRoom += bind.FailedIntoRoomEvent;
}
if (type == typeof(ISendTalkEvent))
if (this is ISendTalkEvent)
{
ISendTalkEvent bind = (ISendTalkEvent)this;
BeforeSendTalk += bind.BeforeSendTalkEvent;
@ -142,7 +137,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedSendTalk += bind.FailedSendTalkEvent;
}
if (type == typeof(ICreateRoomEvent))
if (this is ICreateRoomEvent)
{
ICreateRoomEvent bind = (ICreateRoomEvent)this;
BeforeCreateRoom += bind.BeforeCreateRoomEvent;
@ -151,7 +146,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedCreateRoom += bind.FailedCreateRoomEvent;
}
if (type == typeof(IQuitRoomEvent))
if (this is IQuitRoomEvent)
{
IQuitRoomEvent bind = (IQuitRoomEvent)this;
BeforeQuitRoom += bind.BeforeQuitRoomEvent;
@ -160,7 +155,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedQuitRoom += bind.FailedQuitRoomEvent;
}
if (type == typeof(IChangeRoomSettingEvent))
if (this is IChangeRoomSettingEvent)
{
IChangeRoomSettingEvent bind = (IChangeRoomSettingEvent)this;
BeforeChangeRoomSetting += bind.BeforeChangeRoomSettingEvent;
@ -169,7 +164,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedChangeRoomSetting += bind.FailedChangeRoomSettingEvent;
}
if (type == typeof(IStartMatchEvent))
if (this is IStartMatchEvent)
{
IStartMatchEvent bind = (IStartMatchEvent)this;
BeforeStartMatch += bind.BeforeStartMatchEvent;
@ -178,7 +173,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedStartMatch += bind.FailedStartMatchEvent;
}
if (type == typeof(IStartGameEvent))
if (this is IStartGameEvent)
{
IStartGameEvent bind = (IStartGameEvent)this;
BeforeStartGame += bind.BeforeStartGameEvent;
@ -187,7 +182,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedStartGame += bind.FailedStartGameEvent;
}
if (type == typeof(IChangeProfileEvent))
if (this is IChangeProfileEvent)
{
IChangeProfileEvent bind = (IChangeProfileEvent)this;
BeforeChangeProfile += bind.BeforeChangeProfileEvent;
@ -196,7 +191,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedChangeProfile += bind.FailedChangeProfileEvent;
}
if (type == typeof(IChangeAccountSettingEvent))
if (this is IChangeAccountSettingEvent)
{
IChangeAccountSettingEvent bind = (IChangeAccountSettingEvent)this;
BeforeChangeAccountSetting += bind.BeforeChangeAccountSettingEvent;
@ -205,7 +200,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedChangeAccountSetting += bind.FailedChangeAccountSettingEvent;
}
if (type == typeof(IOpenInventoryEvent))
if (this is IOpenInventoryEvent)
{
IOpenInventoryEvent bind = (IOpenInventoryEvent)this;
BeforeOpenInventory += bind.BeforeOpenInventoryEvent;
@ -214,7 +209,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedOpenInventory += bind.FailedOpenInventoryEvent;
}
if (type == typeof(ISignInEvent))
if (this is ISignInEvent)
{
ISignInEvent bind = (ISignInEvent)this;
BeforeSignIn += bind.BeforeSignInEvent;
@ -223,7 +218,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedSignIn += bind.FailedSignInEvent;
}
if (type == typeof(IOpenStoreEvent))
if (this is IOpenStoreEvent)
{
IOpenStoreEvent bind = (IOpenStoreEvent)this;
BeforeOpenStore += bind.BeforeOpenStoreEvent;
@ -232,7 +227,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedOpenStore += bind.FailedOpenStoreEvent;
}
if (type == typeof(IBuyItemEvent))
if (this is IBuyItemEvent)
{
IBuyItemEvent bind = (IBuyItemEvent)this;
BeforeBuyItem += bind.BeforeBuyItemEvent;
@ -241,7 +236,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedBuyItem += bind.FailedBuyItemEvent;
}
if (type == typeof(IShowRankingEvent))
if (this is IShowRankingEvent)
{
IShowRankingEvent bind = (IShowRankingEvent)this;
BeforeShowRanking += bind.BeforeShowRankingEvent;
@ -250,7 +245,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedShowRanking += bind.FailedShowRankingEvent;
}
if (type == typeof(IUseItemEvent))
if (this is IUseItemEvent)
{
IUseItemEvent bind = (IUseItemEvent)this;
BeforeUseItem += bind.BeforeUseItemEvent;
@ -259,7 +254,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
FailedUseItem += bind.FailedUseItemEvent;
}
if (type == typeof(IEndGameEvent))
if (this is IEndGameEvent)
{
IEndGameEvent bind = (IEndGameEvent)this;
BeforeEndGame += bind.BeforeEndGameEvent;
@ -354,424 +349,424 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
public event IEventHandler.SucceedEventHandler? SucceedEndGame;
public event IEventHandler.FailedEventHandler? FailedEndGame;
public EventResult OnBeforeConnectEvent(ConnectEventArgs e)
public void OnBeforeConnectEvent(ConnectEventArgs e)
{
return BeforeConnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeConnect?.Invoke(this, e);
}
public EventResult OnAfterConnectEvent(ConnectEventArgs e)
public void OnAfterConnectEvent(ConnectEventArgs e)
{
return AfterConnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterConnect?.Invoke(this, e);
}
public EventResult OnSucceedConnectEvent(ConnectEventArgs e)
public void OnSucceedConnectEvent(ConnectEventArgs e)
{
return SucceedConnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedConnect?.Invoke(this, e);
}
public EventResult OnFailedConnectEvent(ConnectEventArgs e)
public void OnFailedConnectEvent(ConnectEventArgs e)
{
return FailedConnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedConnect?.Invoke(this, e);
}
public EventResult OnBeforeDisconnectEvent(GeneralEventArgs e)
public void OnBeforeDisconnectEvent(GeneralEventArgs e)
{
return BeforeDisconnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeDisconnect?.Invoke(this, e);
}
public EventResult OnAfterDisconnectEvent(GeneralEventArgs e)
public void OnAfterDisconnectEvent(GeneralEventArgs e)
{
return AfterDisconnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterDisconnect?.Invoke(this, e);
}
public EventResult OnSucceedDisconnectEvent(GeneralEventArgs e)
public void OnSucceedDisconnectEvent(GeneralEventArgs e)
{
return SucceedDisconnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedDisconnect?.Invoke(this, e);
}
public EventResult OnFailedDisconnectEvent(GeneralEventArgs e)
public void OnFailedDisconnectEvent(GeneralEventArgs e)
{
return FailedDisconnect?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedDisconnect?.Invoke(this, e);
}
public EventResult OnBeforeLoginEvent(LoginEventArgs e)
public void OnBeforeLoginEvent(LoginEventArgs e)
{
return BeforeLogin?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeLogin?.Invoke(this, e);
}
public EventResult OnAfterLoginEvent(LoginEventArgs e)
public void OnAfterLoginEvent(LoginEventArgs e)
{
return AfterLogin?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterLogin?.Invoke(this, e);
}
public EventResult OnSucceedLoginEvent(LoginEventArgs e)
public void OnSucceedLoginEvent(LoginEventArgs e)
{
return SucceedLogin?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedLogin?.Invoke(this, e);
}
public EventResult OnFailedLoginEvent(LoginEventArgs e)
public void OnFailedLoginEvent(LoginEventArgs e)
{
return FailedLogin?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedLogin?.Invoke(this, e);
}
public EventResult OnBeforeLogoutEvent(GeneralEventArgs e)
public void OnBeforeLogoutEvent(GeneralEventArgs e)
{
return BeforeLogout?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeLogout?.Invoke(this, e);
}
public EventResult OnAfterLogoutEvent(GeneralEventArgs e)
public void OnAfterLogoutEvent(GeneralEventArgs e)
{
return AfterLogout?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterLogout?.Invoke(this, e);
}
public EventResult OnSucceedLogoutEvent(GeneralEventArgs e)
public void OnSucceedLogoutEvent(GeneralEventArgs e)
{
return SucceedLogout?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedLogout?.Invoke(this, e);
}
public EventResult OnFailedLogoutEvent(GeneralEventArgs e)
public void OnFailedLogoutEvent(GeneralEventArgs e)
{
return FailedLogout?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedLogout?.Invoke(this, e);
}
public EventResult OnBeforeRegEvent(RegisterEventArgs e)
public void OnBeforeRegEvent(RegisterEventArgs e)
{
return BeforeReg?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeReg?.Invoke(this, e);
}
public EventResult OnAfterRegEvent(RegisterEventArgs e)
public void OnAfterRegEvent(RegisterEventArgs e)
{
return AfterReg?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterReg?.Invoke(this, e);
}
public EventResult OnSucceedRegEvent(RegisterEventArgs e)
public void OnSucceedRegEvent(RegisterEventArgs e)
{
return SucceedReg?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedReg?.Invoke(this, e);
}
public EventResult OnFailedRegEvent(RegisterEventArgs e)
public void OnFailedRegEvent(RegisterEventArgs e)
{
return FailedReg?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedReg?.Invoke(this, e);
}
public EventResult OnBeforeIntoRoomEvent(RoomEventArgs e)
public void OnBeforeIntoRoomEvent(RoomEventArgs e)
{
return BeforeIntoRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeIntoRoom?.Invoke(this, e);
}
public EventResult OnAfterIntoRoomEvent(RoomEventArgs e)
public void OnAfterIntoRoomEvent(RoomEventArgs e)
{
return AfterIntoRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterIntoRoom?.Invoke(this, e);
}
public EventResult OnSucceedIntoRoomEvent(RoomEventArgs e)
public void OnSucceedIntoRoomEvent(RoomEventArgs e)
{
return SucceedIntoRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedIntoRoom?.Invoke(this, e);
}
public EventResult OnFailedIntoRoomEvent(RoomEventArgs e)
public void OnFailedIntoRoomEvent(RoomEventArgs e)
{
return FailedIntoRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedIntoRoom?.Invoke(this, e);
}
public EventResult OnBeforeSendTalkEvent(SendTalkEventArgs e)
public void OnBeforeSendTalkEvent(SendTalkEventArgs e)
{
return BeforeSendTalk?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeSendTalk?.Invoke(this, e);
}
public EventResult OnAfterSendTalkEvent(SendTalkEventArgs e)
public void OnAfterSendTalkEvent(SendTalkEventArgs e)
{
return AfterSendTalk?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterSendTalk?.Invoke(this, e);
}
public EventResult OnSucceedSendTalkEvent(SendTalkEventArgs e)
public void OnSucceedSendTalkEvent(SendTalkEventArgs e)
{
return SucceedSendTalk?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedSendTalk?.Invoke(this, e);
}
public EventResult OnFailedSendTalkEvent(SendTalkEventArgs e)
public void OnFailedSendTalkEvent(SendTalkEventArgs e)
{
return FailedSendTalk?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedSendTalk?.Invoke(this, e);
}
public EventResult OnBeforeCreateRoomEvent(RoomEventArgs e)
public void OnBeforeCreateRoomEvent(RoomEventArgs e)
{
return BeforeCreateRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeCreateRoom?.Invoke(this, e);
}
public EventResult OnAfterCreateRoomEvent(RoomEventArgs e)
public void OnAfterCreateRoomEvent(RoomEventArgs e)
{
return AfterCreateRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterCreateRoom?.Invoke(this, e);
}
public EventResult OnSucceedCreateRoomEvent(RoomEventArgs e)
public void OnSucceedCreateRoomEvent(RoomEventArgs e)
{
return SucceedCreateRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedCreateRoom?.Invoke(this, e);
}
public EventResult OnFailedCreateRoomEvent(RoomEventArgs e)
public void OnFailedCreateRoomEvent(RoomEventArgs e)
{
return FailedCreateRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedCreateRoom?.Invoke(this, e);
}
public EventResult OnBeforeQuitRoomEvent(RoomEventArgs e)
public void OnBeforeQuitRoomEvent(RoomEventArgs e)
{
return BeforeQuitRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeQuitRoom?.Invoke(this, e);
}
public EventResult OnAfterQuitRoomEvent(RoomEventArgs e)
public void OnAfterQuitRoomEvent(RoomEventArgs e)
{
return AfterQuitRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterQuitRoom?.Invoke(this, e);
}
public EventResult OnSucceedQuitRoomEvent(RoomEventArgs e)
public void OnSucceedQuitRoomEvent(RoomEventArgs e)
{
return SucceedQuitRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedQuitRoom?.Invoke(this, e);
}
public EventResult OnFailedQuitRoomEvent(RoomEventArgs e)
public void OnFailedQuitRoomEvent(RoomEventArgs e)
{
return FailedQuitRoom?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedQuitRoom?.Invoke(this, e);
}
public EventResult OnBeforeChangeRoomSettingEvent(GeneralEventArgs e)
public void OnBeforeChangeRoomSettingEvent(GeneralEventArgs e)
{
return BeforeChangeRoomSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeChangeRoomSetting?.Invoke(this, e);
}
public EventResult OnAfterChangeRoomSettingEvent(GeneralEventArgs e)
public void OnAfterChangeRoomSettingEvent(GeneralEventArgs e)
{
return AfterChangeRoomSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterChangeRoomSetting?.Invoke(this, e);
}
public EventResult OnSucceedChangeRoomSettingEvent(GeneralEventArgs e)
public void OnSucceedChangeRoomSettingEvent(GeneralEventArgs e)
{
return SucceedChangeRoomSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedChangeRoomSetting?.Invoke(this, e);
}
public EventResult OnFailedChangeRoomSettingEvent(GeneralEventArgs e)
public void OnFailedChangeRoomSettingEvent(GeneralEventArgs e)
{
return FailedChangeRoomSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedChangeRoomSetting?.Invoke(this, e);
}
public EventResult OnBeforeStartMatchEvent(GeneralEventArgs e)
public void OnBeforeStartMatchEvent(GeneralEventArgs e)
{
return BeforeStartMatch?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeStartMatch?.Invoke(this, e);
}
public EventResult OnAfterStartMatchEvent(GeneralEventArgs e)
public void OnAfterStartMatchEvent(GeneralEventArgs e)
{
return AfterStartMatch?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterStartMatch?.Invoke(this, e);
}
public EventResult OnSucceedStartMatchEvent(GeneralEventArgs e)
public void OnSucceedStartMatchEvent(GeneralEventArgs e)
{
return SucceedStartMatch?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedStartMatch?.Invoke(this, e);
}
public EventResult OnFailedStartMatchEvent(GeneralEventArgs e)
public void OnFailedStartMatchEvent(GeneralEventArgs e)
{
return FailedStartMatch?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedStartMatch?.Invoke(this, e);
}
public EventResult OnBeforeStartGameEvent(GeneralEventArgs e)
public void OnBeforeStartGameEvent(GeneralEventArgs e)
{
return BeforeStartGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeStartGame?.Invoke(this, e);
}
public EventResult OnAfterStartGameEvent(GeneralEventArgs e)
public void OnAfterStartGameEvent(GeneralEventArgs e)
{
return AfterStartGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterStartGame?.Invoke(this, e);
}
public EventResult OnSucceedStartGameEvent(GeneralEventArgs e)
public void OnSucceedStartGameEvent(GeneralEventArgs e)
{
return SucceedStartGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedStartGame?.Invoke(this, e);
}
public EventResult OnFailedStartGameEvent(GeneralEventArgs e)
public void OnFailedStartGameEvent(GeneralEventArgs e)
{
return FailedStartGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedStartGame?.Invoke(this, e);
}
public EventResult OnBeforeChangeProfileEvent(GeneralEventArgs e)
public void OnBeforeChangeProfileEvent(GeneralEventArgs e)
{
return BeforeChangeProfile?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeChangeProfile?.Invoke(this, e);
}
public EventResult OnAfterChangeProfileEvent(GeneralEventArgs e)
public void OnAfterChangeProfileEvent(GeneralEventArgs e)
{
return AfterChangeProfile?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterChangeProfile?.Invoke(this, e);
}
public EventResult OnSucceedChangeProfileEvent(GeneralEventArgs e)
public void OnSucceedChangeProfileEvent(GeneralEventArgs e)
{
return SucceedChangeProfile?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedChangeProfile?.Invoke(this, e);
}
public EventResult OnFailedChangeProfileEvent(GeneralEventArgs e)
public void OnFailedChangeProfileEvent(GeneralEventArgs e)
{
return FailedChangeProfile?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedChangeProfile?.Invoke(this, e);
}
public EventResult OnBeforeChangeAccountSettingEvent(GeneralEventArgs e)
public void OnBeforeChangeAccountSettingEvent(GeneralEventArgs e)
{
return BeforeChangeAccountSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeChangeAccountSetting?.Invoke(this, e);
}
public EventResult OnAfterChangeAccountSettingEvent(GeneralEventArgs e)
public void OnAfterChangeAccountSettingEvent(GeneralEventArgs e)
{
return AfterChangeAccountSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterChangeAccountSetting?.Invoke(this, e);
}
public EventResult OnSucceedChangeAccountSettingEvent(GeneralEventArgs e)
public void OnSucceedChangeAccountSettingEvent(GeneralEventArgs e)
{
return SucceedChangeAccountSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedChangeAccountSetting?.Invoke(this, e);
}
public EventResult OnFailedChangeAccountSettingEvent(GeneralEventArgs e)
public void OnFailedChangeAccountSettingEvent(GeneralEventArgs e)
{
return FailedChangeAccountSetting?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedChangeAccountSetting?.Invoke(this, e);
}
public EventResult OnBeforeOpenInventoryEvent(GeneralEventArgs e)
public void OnBeforeOpenInventoryEvent(GeneralEventArgs e)
{
return BeforeOpenInventory?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeOpenInventory?.Invoke(this, e);
}
public EventResult OnAfterOpenInventoryEvent(GeneralEventArgs e)
public void OnAfterOpenInventoryEvent(GeneralEventArgs e)
{
return AfterOpenInventory?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterOpenInventory?.Invoke(this, e);
}
public EventResult OnSucceedOpenInventoryEvent(GeneralEventArgs e)
public void OnSucceedOpenInventoryEvent(GeneralEventArgs e)
{
return SucceedOpenInventory?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedOpenInventory?.Invoke(this, e);
}
public EventResult OnFailedOpenInventoryEvent(GeneralEventArgs e)
public void OnFailedOpenInventoryEvent(GeneralEventArgs e)
{
return FailedOpenInventory?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedOpenInventory?.Invoke(this, e);
}
public EventResult OnBeforeSignInEvent(GeneralEventArgs e)
public void OnBeforeSignInEvent(GeneralEventArgs e)
{
return BeforeSignIn?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeSignIn?.Invoke(this, e);
}
public EventResult OnAfterSignInEvent(GeneralEventArgs e)
public void OnAfterSignInEvent(GeneralEventArgs e)
{
return AfterSignIn?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterSignIn?.Invoke(this, e);
}
public EventResult OnSucceedSignInEvent(GeneralEventArgs e)
public void OnSucceedSignInEvent(GeneralEventArgs e)
{
return SucceedSignIn?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedSignIn?.Invoke(this, e);
}
public EventResult OnFailedSignInEvent(GeneralEventArgs e)
public void OnFailedSignInEvent(GeneralEventArgs e)
{
return FailedSignIn?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedSignIn?.Invoke(this, e);
}
public EventResult OnBeforeOpenStoreEvent(GeneralEventArgs e)
public void OnBeforeOpenStoreEvent(GeneralEventArgs e)
{
return BeforeOpenStore?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeOpenStore?.Invoke(this, e);
}
public EventResult OnAfterOpenStoreEvent(GeneralEventArgs e)
public void OnAfterOpenStoreEvent(GeneralEventArgs e)
{
return AfterOpenStore?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterOpenStore?.Invoke(this, e);
}
public EventResult OnSucceedOpenStoreEvent(GeneralEventArgs e)
public void OnSucceedOpenStoreEvent(GeneralEventArgs e)
{
return SucceedOpenStore?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedOpenStore?.Invoke(this, e);
}
public EventResult OnFailedOpenStoreEvent(GeneralEventArgs e)
public void OnFailedOpenStoreEvent(GeneralEventArgs e)
{
return FailedOpenStore?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedOpenStore?.Invoke(this, e);
}
public EventResult OnBeforeBuyItemEvent(GeneralEventArgs e)
public void OnBeforeBuyItemEvent(GeneralEventArgs e)
{
return BeforeBuyItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeBuyItem?.Invoke(this, e);
}
public EventResult OnAfterBuyItemEvent(GeneralEventArgs e)
public void OnAfterBuyItemEvent(GeneralEventArgs e)
{
return AfterBuyItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterBuyItem?.Invoke(this, e);
}
public EventResult OnSucceedBuyItemEvent(GeneralEventArgs e)
public void OnSucceedBuyItemEvent(GeneralEventArgs e)
{
return SucceedBuyItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedBuyItem?.Invoke(this, e);
}
public EventResult OnFailedBuyItemEvent(GeneralEventArgs e)
public void OnFailedBuyItemEvent(GeneralEventArgs e)
{
return FailedBuyItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedBuyItem?.Invoke(this, e);
}
public EventResult OnBeforeShowRankingEvent(GeneralEventArgs e)
public void OnBeforeShowRankingEvent(GeneralEventArgs e)
{
return BeforeShowRanking?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeShowRanking?.Invoke(this, e);
}
public EventResult OnAfterShowRankingEvent(GeneralEventArgs e)
public void OnAfterShowRankingEvent(GeneralEventArgs e)
{
return AfterShowRanking?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterShowRanking?.Invoke(this, e);
}
public EventResult OnSucceedShowRankingEvent(GeneralEventArgs e)
public void OnSucceedShowRankingEvent(GeneralEventArgs e)
{
return SucceedShowRanking?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedShowRanking?.Invoke(this, e);
}
public EventResult OnFailedShowRankingEvent(GeneralEventArgs e)
public void OnFailedShowRankingEvent(GeneralEventArgs e)
{
return FailedShowRanking?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedShowRanking?.Invoke(this, e);
}
public EventResult OnBeforeUseItemEvent(GeneralEventArgs e)
public void OnBeforeUseItemEvent(GeneralEventArgs e)
{
return BeforeUseItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeUseItem?.Invoke(this, e);
}
public EventResult OnAfterUseItemEvent(GeneralEventArgs e)
public void OnAfterUseItemEvent(GeneralEventArgs e)
{
return AfterUseItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterUseItem?.Invoke(this, e);
}
public EventResult OnSucceedUseItemEvent(GeneralEventArgs e)
public void OnSucceedUseItemEvent(GeneralEventArgs e)
{
return SucceedUseItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedUseItem?.Invoke(this, e);
}
public EventResult OnFailedUseItemEvent(GeneralEventArgs e)
public void OnFailedUseItemEvent(GeneralEventArgs e)
{
return FailedUseItem?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedUseItem?.Invoke(this, e);
}
public EventResult OnBeforeEndGameEvent(GeneralEventArgs e)
public void OnBeforeEndGameEvent(GeneralEventArgs e)
{
return BeforeEndGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
BeforeEndGame?.Invoke(this, e);
}
public EventResult OnAfterEndGameEvent(GeneralEventArgs e)
public void OnAfterEndGameEvent(GeneralEventArgs e)
{
return AfterEndGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
AfterEndGame?.Invoke(this, e);
}
public EventResult OnSucceedEndGameEvent(GeneralEventArgs e)
public void OnSucceedEndGameEvent(GeneralEventArgs e)
{
return SucceedEndGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
SucceedEndGame?.Invoke(this, e);
}
public EventResult OnFailedEndGameEvent(GeneralEventArgs e)
public void OnFailedEndGameEvent(GeneralEventArgs e)
{
return FailedEndGame?.Invoke(this, e) ?? EventResult.NoEventImplement;
FailedEndGame?.Invoke(this, e);
}
}
}

View File

@ -1,6 +1,5 @@
using Milimoe.FunGame.Core.Interface;
using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Library.Common.Plugin
{
@ -18,24 +17,24 @@ namespace Milimoe.FunGame.Core.Library.Common.Plugin
public override string Author => "FunGamer";
public EventResult AfterLoginEvent(object sender, LoginEventArgs e)
public void AfterLoginEvent(object sender, LoginEventArgs e)
{
return EventResult.Success;
}
public EventResult BeforeLoginEvent(object sender, LoginEventArgs e)
public void BeforeLoginEvent(object sender, LoginEventArgs e)
{
return EventResult.Success;
}
public EventResult FailedLoginEvent(object sender, LoginEventArgs e)
public void FailedLoginEvent(object sender, LoginEventArgs e)
{
return EventResult.Success;
}
public EventResult SucceedLoginEvent(object sender, LoginEventArgs e)
public void SucceedLoginEvent(object sender, LoginEventArgs e)
{
return EventResult.Success;
}
}
}

View File

@ -5,32 +5,28 @@ namespace Milimoe.FunGame.Core.Service
{
internal class PluginManager
{
public static Dictionary<string, BasePlugin> LoadPlugin()
/// <summary>
/// 从plugins目录加载所有插件
/// </summary>
/// <param name="plugins"></param>
/// <returns></returns>
internal static Dictionary<string, BasePlugin> LoadPlugins(Dictionary<string, BasePlugin> plugins)
{
Dictionary<string, BasePlugin> plugins = new();
string directory = "plugins";
// 获取目录中所有的 DLL 文件路径
string[] dlls = Directory.GetFiles(directory, "*.dll");
string[] dlls = Directory.GetFiles("plugins", "*.dll");
foreach (string dll in dlls)
{
try
{
// 加载 DLL
Assembly assembly = Assembly.LoadFrom(dll);
// 加载目录下所有的DLL
Assembly assembly = Assembly.LoadFrom(dll);
// 遍历 DLL 中的类型
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(BasePlugin))))
{
BasePlugin instance = Activator.CreateInstance<BasePlugin>();
plugins.Add(instance.Name, instance);
}
}
catch (Exception e)
// 遍历DLL中继承了BasePlugin的类型
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(BasePlugin))))
{
Console.WriteLine($"Failed to load DLL: {dll}");
Console.WriteLine($"Error: {e.Message}");
BasePlugin? instance = (BasePlugin?)Activator.CreateInstance(type);
if (instance != null && instance.Load())
{
plugins.TryAdd(instance.Name, instance);
}
}
}