From 08e5414d00f9ead33d39c4aaa56bc19f4f438778 Mon Sep 17 00:00:00 2001 From: milimoe Date: Wed, 8 Apr 2026 00:30:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=A0=BC=E5=AD=90=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=8B=E4=BB=B6=EF=BC=9B=E6=8F=92=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0=E8=BE=93=E5=85=A5=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=8C=87=E4=BB=A4?= =?UTF-8?q?+=E5=8F=82=E6=95=B0=EF=BC=9B=E6=B7=BB=E5=8A=A0=E4=BA=92?= =?UTF-8?q?=E5=8A=A8=E7=82=B9=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Entity/Explore/InteractionPoint.cs | 15 +++++++++ Library/Common/Addon/Example/ExamplePlugin.cs | 4 +-- Library/Common/Addon/GameMap.cs | 13 ++++++-- Library/Common/Addon/Grid.cs | 32 +++++++++++++++++++ Library/Common/Addon/ServerPlugin.cs | 5 +-- Library/Common/Addon/WebAPIPlugin.cs | 5 +-- 6 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 Entity/Explore/InteractionPoint.cs diff --git a/Entity/Explore/InteractionPoint.cs b/Entity/Explore/InteractionPoint.cs new file mode 100644 index 0000000..e87efcd --- /dev/null +++ b/Entity/Explore/InteractionPoint.cs @@ -0,0 +1,15 @@ +using Milimoe.FunGame.Core.Interface.Entity; + +namespace Milimoe.FunGame.Core.Entity +{ + public class InteractionPoint : BaseEntity + { + public int CustomValue { get; set; } = 0; + public string Description { get; set; } = ""; + + public override bool Equals(IBaseEntity? other) + { + return other is InteractionPoint && other.GetIdName() == GetIdName(); + } + } +} diff --git a/Library/Common/Addon/Example/ExamplePlugin.cs b/Library/Common/Addon/Example/ExamplePlugin.cs index f205a48..76cb779 100644 --- a/Library/Common/Addon/Example/ExamplePlugin.cs +++ b/Library/Common/Addon/Example/ExamplePlugin.cs @@ -59,10 +59,10 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon.Example public override string Author => "FunGamer"; - public override void ProcessInput(string input) + public override void ProcessInput(string order, string[] args) { // 该方法用于接收服务器控制台的输入并处理 - if (input.Equals("info", StringComparison.CurrentCultureIgnoreCase)) + if (order.Equals("info", StringComparison.CurrentCultureIgnoreCase)) { // 使用PluginController的输出方式 Controller.WriteLine($"This is {nameof(ExampleServerPlugin)}!!"); diff --git a/Library/Common/Addon/GameMap.cs b/Library/Common/Addon/GameMap.cs index 78b5b51..102c67d 100644 --- a/Library/Common/Addon/GameMap.cs +++ b/Library/Common/Addon/GameMap.cs @@ -203,11 +203,16 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public bool SetCharacterCurrentGrid(Character character, Grid target) { Grid? current = GetCharacterCurrentGrid(character); - current?.Characters.Remove(character); + if (current != null) + { + current.Characters.Remove(character); + current.OnCharacterExited(character); + } if (Grids.ContainsValue(target)) { target.Characters.Add(character); Characters[character] = target; + target.OnCharacterEntered(character); return true; } return false; @@ -221,7 +226,11 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public void RemoveCharacter(Character character) { Grid? current = GetCharacterCurrentGrid(character); - current?.Characters.Remove(character); + if (current != null) + { + current.Characters.Remove(character); + current.OnCharacterExited(character); + } Characters[character] = Grid.Empty; } diff --git a/Library/Common/Addon/Grid.cs b/Library/Common/Addon/Grid.cs index d31c100..2176aa8 100644 --- a/Library/Common/Addon/Grid.cs +++ b/Library/Common/Addon/Grid.cs @@ -40,11 +40,43 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// public HashSet Effects { get; set; } = []; + /// + /// 格子上的交互点 + /// + public HashSet InteractionPoints { get; set; } = []; + /// /// 此格子呈现的颜色(默认为 ) /// public Color Color { get; set; } = Color.Gray; + public delegate void CharacterEnteredHandler(Character character); + /// + /// 角色进入格子事件 + /// + public event CharacterEnteredHandler? CharacterEntered; + /// + /// 触发角色进入格子事件 + /// + /// + public void OnCharacterEntered(Character character) + { + CharacterEntered?.Invoke(character); + } + public delegate void CharacterExitedHandler(Character character); + /// + /// 角色离开格子事件 + /// + public event CharacterExitedHandler? CharacterExited; + /// + /// 触发角色离开格子事件 + /// + /// + public void OnCharacterExited(Character character) + { + CharacterExited?.Invoke(character); + } + /// /// 默认的字符串表示形式 /// diff --git a/Library/Common/Addon/ServerPlugin.cs b/Library/Common/Addon/ServerPlugin.cs index 1c88695..275b27c 100644 --- a/Library/Common/Addon/ServerPlugin.cs +++ b/Library/Common/Addon/ServerPlugin.cs @@ -93,8 +93,9 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// /// 接收服务器控制台的输入 /// - /// - public abstract void ProcessInput(string input); + /// + /// + public abstract void ProcessInput(string order, string[] args); /// /// 处理服务器广播的非标准 DataRequest 请求 diff --git a/Library/Common/Addon/WebAPIPlugin.cs b/Library/Common/Addon/WebAPIPlugin.cs index 9577e6d..e5a1776 100644 --- a/Library/Common/Addon/WebAPIPlugin.cs +++ b/Library/Common/Addon/WebAPIPlugin.cs @@ -93,8 +93,9 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// /// 接收服务器控制台的输入 /// - /// - public abstract void ProcessInput(string input); + /// + /// + public abstract void ProcessInput(string order, string[] args); /// /// 处理服务器广播的非标准 DataRequest 请求