diff --git a/Entity/Item/Item.cs b/Entity/Item/Item.cs
index 7e14082..d20aecb 100644
--- a/Entity/Item/Item.cs
+++ b/Entity/Item/Item.cs
@@ -218,7 +218,7 @@ namespace Milimoe.FunGame.Core.Entity
{
if (!skill.IsActive && skill.Level > 0)
{
- foreach (Effect e in skill.AddInactiveEffectToCharacter())
+ foreach (Effect e in skill.AddPassiveEffectToCharacter())
{
e.GamingQueue = skill.GamingQueue;
if (Character != null && !Character.Effects.Contains(e))
diff --git a/Entity/Skill/NormalAttack.cs b/Entity/Skill/NormalAttack.cs
index 46b1657..3ff8446 100644
--- a/Entity/Skill/NormalAttack.cs
+++ b/Entity/Skill/NormalAttack.cs
@@ -5,7 +5,7 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Entity
{
- public class NormalAttack(Character character, bool isMagic = false, MagicType magicType = MagicType.None) : BaseEntity
+ public class NormalAttack(Character character, bool isMagic = false, MagicType magicType = MagicType.None) : BaseEntity, ISkill
{
///
/// 普通攻击名称
@@ -57,6 +57,31 @@ namespace Milimoe.FunGame.Core.Entity
///
public double HardnessTime { get; set; } = 10;
+ ///
+ /// 可选取自身
+ ///
+ public bool CanSelectSelf { get; set; } = false;
+
+ ///
+ /// 可选取敌对角色
+ ///
+ public bool CanSelectEnemy { get; set; } = true;
+
+ ///
+ /// 可选取友方角色
+ ///
+ public bool CanSelectTeammate { get; set; } = false;
+
+ ///
+ /// 可选取的作用目标数量
+ ///
+ public int CanSelectTargetCount { get; set; } = 1;
+
+ ///
+ /// 可选取的作用范围
+ ///
+ public double CanSelectTargetRange { get; set; } = 0;
+
///
/// 对目标(或多个目标)发起普通攻击
///
diff --git a/Entity/Skill/OpenSkill.cs b/Entity/Skill/OpenSkill.cs
index 5293faa..22ae70b 100644
--- a/Entity/Skill/OpenSkill.cs
+++ b/Entity/Skill/OpenSkill.cs
@@ -110,7 +110,7 @@ namespace Milimoe.FunGame.Core.Entity
}
}
- public override IEnumerable AddInactiveEffectToCharacter()
+ public override IEnumerable AddPassiveEffectToCharacter()
{
return Effects;
}
diff --git a/Entity/Skill/Skill.cs b/Entity/Skill/Skill.cs
index 84a78f4..4e51b5a 100644
--- a/Entity/Skill/Skill.cs
+++ b/Entity/Skill/Skill.cs
@@ -9,7 +9,7 @@ namespace Milimoe.FunGame.Core.Entity
///
/// 与 不同,构造技能时,建议继承此类再构造
///
- public class Skill : BaseEntity, IActiveEnable
+ public class Skill : BaseEntity, ISkill, IActiveEnable
{
///
/// 唯一标识符 [ 只有物品技能需要赋值,用于表示与其关联的物品: ]
@@ -253,7 +253,7 @@ namespace Milimoe.FunGame.Core.Entity
{
if (!IsActive && Level > 0)
{
- foreach (Effect e in AddInactiveEffectToCharacter())
+ foreach (Effect e in AddPassiveEffectToCharacter())
{
e.GamingQueue = GamingQueue;
if (Character != null && !Character.Effects.Contains(e))
@@ -374,7 +374,7 @@ namespace Milimoe.FunGame.Core.Entity
/// 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ]
///
///
- public virtual IEnumerable AddInactiveEffectToCharacter()
+ public virtual IEnumerable AddPassiveEffectToCharacter()
{
return [];
}
diff --git a/Entity/User/User.cs b/Entity/User/User.cs
index de0d214..323928c 100644
--- a/Entity/User/User.cs
+++ b/Entity/User/User.cs
@@ -1,3 +1,4 @@
+using System.Text;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant;
@@ -9,6 +10,7 @@ namespace Milimoe.FunGame.Core.Entity
public string Username { get; set; } = "";
public DateTime RegTime { get; set; }
public DateTime LastTime { get; set; }
+ public OnlineState OnlineState { get; set; } = OnlineState.Offline;
public string Email { get; set; } = "";
public string NickName { get; set; } = "";
public bool IsAdmin { get; set; } = false;
@@ -16,11 +18,13 @@ namespace Milimoe.FunGame.Core.Entity
public bool IsEnable { get; set; } = true;
public double GameTime { get; set; } = 0;
public string AutoKey { get; set; } = "";
+ public UserProfile Profile { get; }
public UserStatistics Statistics { get; }
public Inventory Inventory { get; }
internal User()
{
+ Profile = new();
Statistics = new(this);
Inventory = new(this);
}
@@ -38,6 +42,7 @@ namespace Milimoe.FunGame.Core.Entity
this.IsEnable = IsEnable;
this.GameTime = GameTime;
this.AutoKey = AutoKey;
+ Profile = new();
Statistics = new(this);
Inventory = new(this);
}
@@ -58,6 +63,7 @@ namespace Milimoe.FunGame.Core.Entity
Username = UserSet.LocalUserName;
break;
}
+ Profile = new();
Statistics = new(this);
Inventory = new(this);
}
@@ -76,5 +82,31 @@ namespace Milimoe.FunGame.Core.Entity
}
return str;
}
+
+ public string GetUserInfo()
+ {
+ StringBuilder builder = new();
+
+ builder.AppendLine($" {Username}Ĵ浵Ϣ ");
+ builder.AppendLine($" ID{Id}");
+ builder.AppendLine($"{General.GameplayEquilibriumConstant.InGameCurrency}{Inventory.Credits:0.00}");
+ builder.AppendLine($"{General.GameplayEquilibriumConstant.InGameMaterial}{Inventory.Materials:0.00}");
+ builder.AppendLine($"ɫ{Inventory.Characters.Count}");
+ builder.AppendLine($"սɫ{Inventory.MainCharacter.ToStringWithLevelWithOutUser()}");
+ Character[] squad = [.. Inventory.Characters.Where(c => Inventory.Squad.Contains(c.Id))];
+ Dictionary characters = Inventory.Characters
+ .Select((character, index) => new { character, index })
+ .ToDictionary(x => x.character, x => x.index + 1);
+ builder.AppendLine($"СӳԱ{(squad.Length > 0 ? string.Join(" / ", squad.Select(c => $"[#{characters[c]}]{c.NickName}({c.Level})")) : "")}");
+ if (Inventory.Training.Count > 0)
+ {
+ builder.AppendLine($"{string.Join(" / ", Inventory.Characters.Where(c => Inventory.Training.ContainsKey(c.Id)).Select(c => c.ToStringWithLevelWithOutUser()))}");
+ }
+ builder.AppendLine($"Ʒ{Inventory.Items.Count}");
+ builder.AppendLine($"עʱ䣺{RegTime.ToString(General.GeneralDateTimeFormatChinese)}");
+ builder.AppendLine($"ʣ{LastTime.ToString(General.GeneralDateTimeFormatChinese)}");
+
+ return builder.ToString();
+ }
}
}
diff --git a/Entity/User/UserProfile.cs b/Entity/User/UserProfile.cs
new file mode 100644
index 0000000..6c34e27
--- /dev/null
+++ b/Entity/User/UserProfile.cs
@@ -0,0 +1,47 @@
+using Milimoe.FunGame.Core.Library.Constant;
+
+namespace Milimoe.FunGame.Core.Entity
+{
+ public class UserProfile
+ {
+ ///
+ /// 头像链接
+ ///
+ public string AvatarUrl { get; set; } = "";
+
+ ///
+ /// 签名
+ ///
+ public string Signature { get; set; } = "";
+
+ ///
+ /// 性别
+ ///
+ public string Gender { get; set; } = "";
+
+ ///
+ /// 生日
+ ///
+ public DateTime BirthDay { get; set; } = General.DefaultTime;
+
+ ///
+ /// 关注者
+ ///
+ public int Followers { get; set; } = 0;
+
+ ///
+ /// 正在关注
+ ///
+ public int Following { get; set; } = 0;
+
+ ///
+ /// 头衔
+ ///
+ public string Title { get; set; } = "";
+
+ ///
+ /// 用户组
+ ///
+ public string Group { get; set; } = "";
+ }
+}
diff --git a/Interface/Entity/Typical/ISkill.cs b/Interface/Entity/Typical/ISkill.cs
new file mode 100644
index 0000000..9fae0a4
--- /dev/null
+++ b/Interface/Entity/Typical/ISkill.cs
@@ -0,0 +1,30 @@
+namespace Milimoe.FunGame.Core.Interface.Entity
+{
+ public interface ISkill
+ {
+ ///
+ /// 可选取自身
+ ///
+ public bool CanSelectSelf { get; }
+
+ ///
+ /// 可选取敌对角色
+ ///
+ public bool CanSelectEnemy { get; }
+
+ ///
+ /// 可选取友方角色
+ ///
+ public bool CanSelectTeammate { get; }
+ ///
+ /// 可选取的作用目标数量
+ ///
+ public int CanSelectTargetCount { get; }
+
+ ///
+ /// 可选取的作用范围
+ ///
+ public double CanSelectTargetRange { get; }
+
+ }
+}
diff --git a/Library/Constant/ConstantSet.cs b/Library/Constant/ConstantSet.cs
index 9f06bf7..6b89770 100644
--- a/Library/Constant/ConstantSet.cs
+++ b/Library/Constant/ConstantSet.cs
@@ -145,7 +145,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
/**
* Room
*/
- public const string Room_GetRoomSettings = "Room::GetRoomSettings";
+ public const string Room_UpdateRoomSettings = "Room::UpdateRoomSettings";
public const string Room_GetRoomPlayerCount = "Room::GetRoomPlayerCount";
public const string Room_UpdateRoomMaster = "Room::UpdateRoomMaster";
/**
@@ -197,7 +197,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
DataRequestType.Login_Login => Login_Login,
DataRequestType.Login_GetFindPasswordVerifyCode => Login_GetFindPasswordVerifyCode,
DataRequestType.Login_UpdatePassword => Login_UpdatePassword,
- DataRequestType.Room_GetRoomSettings => Room_GetRoomSettings,
+ DataRequestType.Room_UpdateRoomSettings => Room_UpdateRoomSettings,
DataRequestType.Room_GetRoomPlayerCount => Room_GetRoomPlayerCount,
DataRequestType.Room_UpdateRoomMaster => Room_UpdateRoomMaster,
DataRequestType.UserCenter_GetUserProfile => UserCenter_GetUserProfile,
diff --git a/Library/Constant/TypeEnum.cs b/Library/Constant/TypeEnum.cs
index eb95d71..f9936f4 100644
--- a/Library/Constant/TypeEnum.cs
+++ b/Library/Constant/TypeEnum.cs
@@ -102,7 +102,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
Login_Login,
Login_GetFindPasswordVerifyCode,
Login_UpdatePassword,
- Room_GetRoomSettings,
+ Room_UpdateRoomSettings,
Room_GetRoomPlayerCount,
Room_UpdateRoomMaster,
UserCenter_GetUserProfile,
@@ -893,4 +893,13 @@ namespace Milimoe.FunGame.Core.Library.Constant
///
OffereeReject
}
+
+ public enum QueueUpdatedReason
+ {
+ None,
+ Action,
+ Special,
+ PreCastSuperSkill,
+ Respawn
+ }
}
diff --git a/Model/ActionQueue.cs b/Model/ActionQueue.cs
index b878476..dfe2322 100644
--- a/Model/ActionQueue.cs
+++ b/Model/ActionQueue.cs
@@ -30,6 +30,11 @@ namespace Milimoe.FunGame.Core.Model
///
public List Queue => _queue;
+ ///
+ /// 硬直时间表
+ ///
+ public Dictionary HardnessTime => _hardnessTimes;
+
///
/// 当前已死亡的角色顺序(第一个是最早死的)
///
@@ -103,6 +108,11 @@ namespace Milimoe.FunGame.Core.Model
///
public List Rounds { get; } = [];
+ ///
+ /// 自定义数据
+ ///
+ public Dictionary CustomData { get; } = [];
+
///
/// 原始的角色字典
///
@@ -344,6 +354,7 @@ namespace Milimoe.FunGame.Core.Model
public void ClearQueue()
{
FirstKiller = null;
+ CustomData.Clear();
_original.Clear();
_queue.Clear();
_hardnessTimes.Clear();
@@ -600,7 +611,11 @@ namespace Milimoe.FunGame.Core.Model
// 作出了什么行动
CharacterActionType type = CharacterActionType.None;
- while (!decided && cancelTimes > 0)
+ // 循环条件:
+ // AI 控制下:未决策、取消次数大于0
+ // 手动控制下:未决策
+ bool isAI = _charactersInAI.Contains(character);
+ while (!decided && (!isAI || cancelTimes > 0))
{
type = CharacterActionType.None;
@@ -987,7 +1002,7 @@ namespace Milimoe.FunGame.Core.Model
LastRound.CastTime = newHardnessTime;
}
AddCharacter(character, newHardnessTime, isCheckProtected);
- await OnQueueUpdatedAsync(_queue, character, "设置角色行动后的硬直时间。");
+ await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.Action, "设置角色行动后的硬直时间。");
LastRound.HardnessTime = newHardnessTime;
effects = [.. character.Effects.Where(e => e.Level > 0)];
@@ -2252,7 +2267,7 @@ namespace Milimoe.FunGame.Core.Model
character.Respawn(_original[character.Guid]);
WriteLine($"[ {character} ] 已复活!获得 {hardnessTime} {GameplayEquilibriumConstant.InGameTime}的硬直时间。");
AddCharacter(character, hardnessTime, false);
- await OnQueueUpdatedAsync(_queue, character, "设置角色复活后的硬直时间。");
+ await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.Respawn, "设置角色复活后的硬直时间。");
LastRound.Respawns.Add(character);
_respawnCountdown.Remove(character);
if (!_respawnTimes.TryAdd(character, 1))
@@ -2275,7 +2290,7 @@ namespace Milimoe.FunGame.Core.Model
_queue.Remove(character);
_cutCount.Remove(character);
AddCharacter(character, 0, false);
- await OnQueueUpdatedAsync(_queue, character, "设置角色预释放爆发技的硬直时间。");
+ await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.PreCastSuperSkill, "设置角色预释放爆发技的硬直时间。");
WriteLine("[ " + character + " ] 预释放了爆发技!!");
foreach (Character c in _hardnessTimes.Keys)
{
@@ -2342,7 +2357,7 @@ namespace Milimoe.FunGame.Core.Model
#region 事件
- public delegate Task TurnStartEventHandler(Character character, List enemys, List teammates, List skills, List- items);
+ public delegate Task TurnStartEventHandler(ActionQueue queue, Character character, List enemys, List teammates, List skills, List
- items);
///
/// 回合开始事件
///
@@ -2356,12 +2371,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnTurnStartAsync(Character character, List enemys, List teammates, List skills, List
- items)
+ protected async Task OnTurnStartAsync(Character character, List enemys, List teammates, List skills, List
- items)
{
- return await (TurnStart?.Invoke(character, enemys, teammates, skills, items) ?? Task.FromResult(true));
+ return await (TurnStart?.Invoke(this, character, enemys, teammates, skills, items) ?? Task.FromResult(true));
}
- public delegate Task TurnEndEventHandler(Character character);
+ public delegate Task TurnEndEventHandler(ActionQueue queue, Character character);
///
/// 回合结束事件
///
@@ -2371,12 +2386,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnTurnEndAsync(Character character)
+ protected async Task OnTurnEndAsync(Character character)
{
- await (TurnEnd?.Invoke(character) ?? Task.CompletedTask);
+ await (TurnEnd?.Invoke(this, character) ?? Task.CompletedTask);
}
- public delegate Task DecideActionEventHandler(Character character, List enemys, List teammates, List skills, List
- items);
+ public delegate Task DecideActionEventHandler(ActionQueue queue, Character character, List enemys, List teammates, List skills, List
- items);
///
/// 决定角色的行动事件
///
@@ -2390,12 +2405,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnDecideActionAsync(Character character, List enemys, List teammates, List skills, List
- items)
+ protected async Task OnDecideActionAsync(Character character, List enemys, List teammates, List skills, List
- items)
{
- return await (DecideAction?.Invoke(character, enemys, teammates, skills, items) ?? Task.FromResult(CharacterActionType.None));
+ return await (DecideAction?.Invoke(this, character, enemys, teammates, skills, items) ?? Task.FromResult(CharacterActionType.None));
}
- public delegate Task SelectSkillEventHandler(Character character, List skills);
+ public delegate Task SelectSkillEventHandler(ActionQueue queue, Character character, List skills);
///
/// 角色需要选择一个技能
///
@@ -2406,12 +2421,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnSelectSkillAsync(Character character, List skills)
+ protected async Task OnSelectSkillAsync(Character character, List skills)
{
- return await (SelectSkill?.Invoke(character, skills) ?? Task.FromResult(null));
+ return await (SelectSkill?.Invoke(this, character, skills) ?? Task.FromResult(null));
}
- public delegate Task
- SelectItemEventHandler(Character character, List
- items);
+ public delegate Task
- SelectItemEventHandler(ActionQueue queue, Character character, List
- items);
///
/// 角色需要选择一个物品
///
@@ -2422,12 +2437,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task
- OnSelectItemAsync(Character character, List
- items)
+ protected async Task
- OnSelectItemAsync(Character character, List
- items)
{
- return await (SelectItem?.Invoke(character, items) ?? Task.FromResult
- (null));
+ return await (SelectItem?.Invoke(this, character, items) ?? Task.FromResult
- (null));
}
- public delegate Task
> SelectSkillTargetsEventHandler(Character caster, Skill skill, List enemys, List teammates);
+ public delegate Task> SelectSkillTargetsEventHandler(ActionQueue queue, Character caster, Skill skill, List enemys, List teammates);
///
/// 选取技能目标事件
///
@@ -2440,12 +2455,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task> OnSelectSkillTargetsAsync(Character caster, Skill skill, List enemys, List teammates)
+ protected async Task> OnSelectSkillTargetsAsync(Character caster, Skill skill, List enemys, List teammates)
{
- return await (SelectSkillTargets?.Invoke(caster, skill, enemys, teammates) ?? Task.FromResult(new List()));
+ return await (SelectSkillTargets?.Invoke(this, caster, skill, enemys, teammates) ?? Task.FromResult(new List()));
}
- public delegate Task> SelectNormalAttackTargetsEventHandler(Character character, NormalAttack attack, List enemys, List teammates);
+ public delegate Task> SelectNormalAttackTargetsEventHandler(ActionQueue queue, Character character, NormalAttack attack, List enemys, List teammates);
///
/// 选取普通攻击目标事件
///
@@ -2458,12 +2473,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task> OnSelectNormalAttackTargetsAsync(Character character, NormalAttack attack, List enemys, List teammates)
+ protected async Task> OnSelectNormalAttackTargetsAsync(Character character, NormalAttack attack, List enemys, List teammates)
{
- return await (SelectNormalAttackTargets?.Invoke(character, attack, enemys, teammates) ?? Task.FromResult(new List()));
+ return await (SelectNormalAttackTargets?.Invoke(this, character, attack, enemys, teammates) ?? Task.FromResult(new List()));
}
- public delegate Task InterruptCastingEventHandler(Character cast, Skill? skill, Character interrupter);
+ public delegate Task InterruptCastingEventHandler(ActionQueue queue, Character cast, Skill? skill, Character interrupter);
///
/// 打断施法事件
///
@@ -2475,12 +2490,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnInterruptCastingAsync(Character cast, Skill? skill, Character interrupter)
+ protected async Task OnInterruptCastingAsync(Character cast, Skill? skill, Character interrupter)
{
- await (InterruptCasting?.Invoke(cast, skill, interrupter) ?? Task.CompletedTask);
+ await (InterruptCasting?.Invoke(this, cast, skill, interrupter) ?? Task.CompletedTask);
}
- public delegate Task DeathCalculationEventHandler(Character killer, Character death);
+ public delegate Task DeathCalculationEventHandler(ActionQueue queue, Character killer, Character death);
///
/// 死亡结算事件
///
@@ -2491,12 +2506,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnDeathCalculationAsync(Character killer, Character death)
+ protected async Task OnDeathCalculationAsync(Character killer, Character death)
{
- return await (DeathCalculation?.Invoke(killer, death) ?? Task.FromResult(true));
+ return await (DeathCalculation?.Invoke(this, killer, death) ?? Task.FromResult(true));
}
- public delegate Task CharacterDeathEventHandler(Character current, Character death);
+ public delegate Task CharacterDeathEventHandler(ActionQueue queue, Character current, Character death);
///
/// 角色死亡事件,此事件位于 之后
///
@@ -2507,12 +2522,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnCharacterDeathAsync(Character current, Character death)
+ protected async Task OnCharacterDeathAsync(Character current, Character death)
{
- return await (CharacterDeath?.Invoke(current, death) ?? Task.FromResult(true));
+ return await (CharacterDeath?.Invoke(this, current, death) ?? Task.FromResult(true));
}
- public delegate Task HealToTargetEventHandler(Character actor, Character target, double heal, bool isRespawn);
+ public delegate Task HealToTargetEventHandler(ActionQueue queue, Character actor, Character target, double heal, bool isRespawn);
///
/// 治疗事件
///
@@ -2525,12 +2540,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnHealToTargetAsync(Character actor, Character target, double heal, bool isRespawn)
+ protected async Task OnHealToTargetAsync(Character actor, Character target, double heal, bool isRespawn)
{
- await (HealToTarget?.Invoke(actor, target, heal, isRespawn) ?? Task.CompletedTask);
+ await (HealToTarget?.Invoke(this, actor, target, heal, isRespawn) ?? Task.CompletedTask);
}
- public delegate Task DamageToEnemyEventHandler(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult);
+ public delegate Task DamageToEnemyEventHandler(ActionQueue queue, Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult);
///
/// 造成伤害事件
///
@@ -2546,12 +2561,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnDamageToEnemyAsync(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
+ protected async Task OnDamageToEnemyAsync(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
{
- await (DamageToEnemy?.Invoke(actor, enemy, damage, isNormalAttack, isMagicDamage, magicType, damageResult) ?? Task.CompletedTask);
+ await (DamageToEnemy?.Invoke(this, actor, enemy, damage, isNormalAttack, isMagicDamage, magicType, damageResult) ?? Task.CompletedTask);
}
- public delegate Task CharacterActingEventHandler(Character actor, CharacterActionType type, params object[] args);
+ public delegate Task CharacterActingEventHandler(ActionQueue queue, Character actor, CharacterActionType type, params object[] args);
///
/// 角色行动事件
///
@@ -2563,12 +2578,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnCharacterActingAsync(Character actor, CharacterActionType type, params object[] args)
+ protected async Task OnCharacterActingAsync(Character actor, CharacterActionType type, params object[] args)
{
- await (CharacterActing?.Invoke(actor, type, args) ?? Task.CompletedTask);
+ await (CharacterActing?.Invoke(this, actor, type, args) ?? Task.CompletedTask);
}
- public delegate Task GameEndEventHandler(Character winner);
+ public delegate Task GameEndEventHandler(ActionQueue queue, Character winner);
///
/// 游戏结束事件
///
@@ -2578,12 +2593,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnGameEndAsync(Character winner)
+ protected async Task OnGameEndAsync(Character winner)
{
- return await (GameEnd?.Invoke(winner) ?? Task.FromResult(true));
+ return await (GameEnd?.Invoke(this, winner) ?? Task.FromResult(true));
}
- public delegate Task GameEndTeamEventHandler(Team winner);
+ public delegate Task GameEndTeamEventHandler(ActionQueue queue, Team winner);
///
/// 游戏结束事件(团队版)
///
@@ -2593,12 +2608,12 @@ namespace Milimoe.FunGame.Core.Model
///
///
///
- public async Task OnGameEndTeamAsync(Team winner)
+ protected async Task OnGameEndTeamAsync(Team winner)
{
- return await (GameEndTeam?.Invoke(winner) ?? Task.FromResult(true));
+ return await (GameEndTeam?.Invoke(this, winner) ?? Task.FromResult(true));
}
- public delegate Task QueueUpdatedEventHandler(List queue, Character character, string reason);
+ public delegate Task QueueUpdatedEventHandler(ActionQueue queue, List characters, Character character, QueueUpdatedReason reason, string msg);
///
/// 行动顺序表更新事件
///
@@ -2606,13 +2621,14 @@ namespace Milimoe.FunGame.Core.Model
///
/// 行动顺序表更新事件
///
- ///
+ ///
///
///
+ ///
///
- public async Task OnQueueUpdatedAsync(List queue, Character character, string reason)
+ protected async Task OnQueueUpdatedAsync(List characters, Character character, QueueUpdatedReason reason, string msg = "")
{
- await (QueueUpdated?.Invoke(queue, character, reason) ?? Task.CompletedTask);
+ await (QueueUpdated?.Invoke(this, characters, character, reason, msg) ?? Task.CompletedTask);
}
#endregion