mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-21 03:29:36 +08:00
行动顺序表事件优化;添加用户资料类
This commit is contained in:
parent
2c0153ef5f
commit
8e65183dc5
@ -218,7 +218,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
{
|
{
|
||||||
if (!skill.IsActive && skill.Level > 0)
|
if (!skill.IsActive && skill.Level > 0)
|
||||||
{
|
{
|
||||||
foreach (Effect e in skill.AddInactiveEffectToCharacter())
|
foreach (Effect e in skill.AddPassiveEffectToCharacter())
|
||||||
{
|
{
|
||||||
e.GamingQueue = skill.GamingQueue;
|
e.GamingQueue = skill.GamingQueue;
|
||||||
if (Character != null && !Character.Effects.Contains(e))
|
if (Character != null && !Character.Effects.Contains(e))
|
||||||
|
@ -5,7 +5,7 @@ using Milimoe.FunGame.Core.Library.Constant;
|
|||||||
|
|
||||||
namespace Milimoe.FunGame.Core.Entity
|
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
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通攻击名称
|
/// 普通攻击名称
|
||||||
@ -57,6 +57,31 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double HardnessTime { get; set; } = 10;
|
public double HardnessTime { get; set; } = 10;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取自身
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectSelf { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取敌对角色
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectEnemy { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取友方角色
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectTeammate { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取的作用目标数量
|
||||||
|
/// </summary>
|
||||||
|
public int CanSelectTargetCount { get; set; } = 1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取的作用范围
|
||||||
|
/// </summary>
|
||||||
|
public double CanSelectTargetRange { get; set; } = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 对目标(或多个目标)发起普通攻击
|
/// 对目标(或多个目标)发起普通攻击
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -110,7 +110,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
|
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
|
||||||
{
|
{
|
||||||
return Effects;
|
return Effects;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 与 <see cref="Character"/> 不同,构造技能时,建议继承此类再构造
|
/// 与 <see cref="Character"/> 不同,构造技能时,建议继承此类再构造
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Skill : BaseEntity, IActiveEnable
|
public class Skill : BaseEntity, ISkill, IActiveEnable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 唯一标识符 [ 只有物品技能需要赋值,用于表示与其关联的物品:<see cref="Item.Guid"/> ]
|
/// 唯一标识符 [ 只有物品技能需要赋值,用于表示与其关联的物品:<see cref="Item.Guid"/> ]
|
||||||
@ -253,7 +253,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
{
|
{
|
||||||
if (!IsActive && Level > 0)
|
if (!IsActive && Level > 0)
|
||||||
{
|
{
|
||||||
foreach (Effect e in AddInactiveEffectToCharacter())
|
foreach (Effect e in AddPassiveEffectToCharacter())
|
||||||
{
|
{
|
||||||
e.GamingQueue = GamingQueue;
|
e.GamingQueue = GamingQueue;
|
||||||
if (Character != null && !Character.Effects.Contains(e))
|
if (Character != null && !Character.Effects.Contains(e))
|
||||||
@ -374,7 +374,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
/// 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ]
|
/// 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public virtual IEnumerable<Effect> AddInactiveEffectToCharacter()
|
public virtual IEnumerable<Effect> AddPassiveEffectToCharacter()
|
||||||
{
|
{
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System.Text;
|
||||||
using Milimoe.FunGame.Core.Interface.Entity;
|
using Milimoe.FunGame.Core.Interface.Entity;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
|
||||||
@ -9,6 +10,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
public string Username { get; set; } = "";
|
public string Username { get; set; } = "";
|
||||||
public DateTime RegTime { get; set; }
|
public DateTime RegTime { get; set; }
|
||||||
public DateTime LastTime { get; set; }
|
public DateTime LastTime { get; set; }
|
||||||
|
public OnlineState OnlineState { get; set; } = OnlineState.Offline;
|
||||||
public string Email { get; set; } = "";
|
public string Email { get; set; } = "";
|
||||||
public string NickName { get; set; } = "";
|
public string NickName { get; set; } = "";
|
||||||
public bool IsAdmin { get; set; } = false;
|
public bool IsAdmin { get; set; } = false;
|
||||||
@ -16,11 +18,13 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
public bool IsEnable { get; set; } = true;
|
public bool IsEnable { get; set; } = true;
|
||||||
public double GameTime { get; set; } = 0;
|
public double GameTime { get; set; } = 0;
|
||||||
public string AutoKey { get; set; } = "";
|
public string AutoKey { get; set; } = "";
|
||||||
|
public UserProfile Profile { get; }
|
||||||
public UserStatistics Statistics { get; }
|
public UserStatistics Statistics { get; }
|
||||||
public Inventory Inventory { get; }
|
public Inventory Inventory { get; }
|
||||||
|
|
||||||
internal User()
|
internal User()
|
||||||
{
|
{
|
||||||
|
Profile = new();
|
||||||
Statistics = new(this);
|
Statistics = new(this);
|
||||||
Inventory = new(this);
|
Inventory = new(this);
|
||||||
}
|
}
|
||||||
@ -38,6 +42,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
this.IsEnable = IsEnable;
|
this.IsEnable = IsEnable;
|
||||||
this.GameTime = GameTime;
|
this.GameTime = GameTime;
|
||||||
this.AutoKey = AutoKey;
|
this.AutoKey = AutoKey;
|
||||||
|
Profile = new();
|
||||||
Statistics = new(this);
|
Statistics = new(this);
|
||||||
Inventory = new(this);
|
Inventory = new(this);
|
||||||
}
|
}
|
||||||
@ -58,6 +63,7 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
Username = UserSet.LocalUserName;
|
Username = UserSet.LocalUserName;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Profile = new();
|
||||||
Statistics = new(this);
|
Statistics = new(this);
|
||||||
Inventory = new(this);
|
Inventory = new(this);
|
||||||
}
|
}
|
||||||
@ -76,5 +82,31 @@ namespace Milimoe.FunGame.Core.Entity
|
|||||||
}
|
}
|
||||||
return str;
|
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<Character, int> 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
47
Entity/User/UserProfile.cs
Normal file
47
Entity/User/UserProfile.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
|
||||||
|
namespace Milimoe.FunGame.Core.Entity
|
||||||
|
{
|
||||||
|
public class UserProfile
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 头像链接
|
||||||
|
/// </summary>
|
||||||
|
public string AvatarUrl { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 签名
|
||||||
|
/// </summary>
|
||||||
|
public string Signature { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 性别
|
||||||
|
/// </summary>
|
||||||
|
public string Gender { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生日
|
||||||
|
/// </summary>
|
||||||
|
public DateTime BirthDay { get; set; } = General.DefaultTime;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关注者
|
||||||
|
/// </summary>
|
||||||
|
public int Followers { get; set; } = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 正在关注
|
||||||
|
/// </summary>
|
||||||
|
public int Following { get; set; } = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 头衔
|
||||||
|
/// </summary>
|
||||||
|
public string Title { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户组
|
||||||
|
/// </summary>
|
||||||
|
public string Group { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
30
Interface/Entity/Typical/ISkill.cs
Normal file
30
Interface/Entity/Typical/ISkill.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
namespace Milimoe.FunGame.Core.Interface.Entity
|
||||||
|
{
|
||||||
|
public interface ISkill
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取自身
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectSelf { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取敌对角色
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectEnemy { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取友方角色
|
||||||
|
/// </summary>
|
||||||
|
public bool CanSelectTeammate { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取的作用目标数量
|
||||||
|
/// </summary>
|
||||||
|
public int CanSelectTargetCount { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可选取的作用范围
|
||||||
|
/// </summary>
|
||||||
|
public double CanSelectTargetRange { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -145,7 +145,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
/**
|
/**
|
||||||
* Room
|
* 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_GetRoomPlayerCount = "Room::GetRoomPlayerCount";
|
||||||
public const string Room_UpdateRoomMaster = "Room::UpdateRoomMaster";
|
public const string Room_UpdateRoomMaster = "Room::UpdateRoomMaster";
|
||||||
/**
|
/**
|
||||||
@ -197,7 +197,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
DataRequestType.Login_Login => Login_Login,
|
DataRequestType.Login_Login => Login_Login,
|
||||||
DataRequestType.Login_GetFindPasswordVerifyCode => Login_GetFindPasswordVerifyCode,
|
DataRequestType.Login_GetFindPasswordVerifyCode => Login_GetFindPasswordVerifyCode,
|
||||||
DataRequestType.Login_UpdatePassword => Login_UpdatePassword,
|
DataRequestType.Login_UpdatePassword => Login_UpdatePassword,
|
||||||
DataRequestType.Room_GetRoomSettings => Room_GetRoomSettings,
|
DataRequestType.Room_UpdateRoomSettings => Room_UpdateRoomSettings,
|
||||||
DataRequestType.Room_GetRoomPlayerCount => Room_GetRoomPlayerCount,
|
DataRequestType.Room_GetRoomPlayerCount => Room_GetRoomPlayerCount,
|
||||||
DataRequestType.Room_UpdateRoomMaster => Room_UpdateRoomMaster,
|
DataRequestType.Room_UpdateRoomMaster => Room_UpdateRoomMaster,
|
||||||
DataRequestType.UserCenter_GetUserProfile => UserCenter_GetUserProfile,
|
DataRequestType.UserCenter_GetUserProfile => UserCenter_GetUserProfile,
|
||||||
|
@ -102,7 +102,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
Login_Login,
|
Login_Login,
|
||||||
Login_GetFindPasswordVerifyCode,
|
Login_GetFindPasswordVerifyCode,
|
||||||
Login_UpdatePassword,
|
Login_UpdatePassword,
|
||||||
Room_GetRoomSettings,
|
Room_UpdateRoomSettings,
|
||||||
Room_GetRoomPlayerCount,
|
Room_GetRoomPlayerCount,
|
||||||
Room_UpdateRoomMaster,
|
Room_UpdateRoomMaster,
|
||||||
UserCenter_GetUserProfile,
|
UserCenter_GetUserProfile,
|
||||||
@ -893,4 +893,13 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
OffereeReject
|
OffereeReject
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum QueueUpdatedReason
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Action,
|
||||||
|
Special,
|
||||||
|
PreCastSuperSkill,
|
||||||
|
Respawn
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,11 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public List<Character> Queue => _queue;
|
public List<Character> Queue => _queue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 硬直时间表
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<Character, double> HardnessTime => _hardnessTimes;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当前已死亡的角色顺序(第一个是最早死的)
|
/// 当前已死亡的角色顺序(第一个是最早死的)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -103,6 +108,11 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public List<RoundRecord> Rounds { get; } = [];
|
public List<RoundRecord> Rounds { get; } = [];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义数据
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, object> CustomData { get; } = [];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 原始的角色字典
|
/// 原始的角色字典
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -344,6 +354,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
public void ClearQueue()
|
public void ClearQueue()
|
||||||
{
|
{
|
||||||
FirstKiller = null;
|
FirstKiller = null;
|
||||||
|
CustomData.Clear();
|
||||||
_original.Clear();
|
_original.Clear();
|
||||||
_queue.Clear();
|
_queue.Clear();
|
||||||
_hardnessTimes.Clear();
|
_hardnessTimes.Clear();
|
||||||
@ -600,7 +611,11 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
// 作出了什么行动
|
// 作出了什么行动
|
||||||
CharacterActionType type = CharacterActionType.None;
|
CharacterActionType type = CharacterActionType.None;
|
||||||
|
|
||||||
while (!decided && cancelTimes > 0)
|
// 循环条件:
|
||||||
|
// AI 控制下:未决策、取消次数大于0
|
||||||
|
// 手动控制下:未决策
|
||||||
|
bool isAI = _charactersInAI.Contains(character);
|
||||||
|
while (!decided && (!isAI || cancelTimes > 0))
|
||||||
{
|
{
|
||||||
type = CharacterActionType.None;
|
type = CharacterActionType.None;
|
||||||
|
|
||||||
@ -987,7 +1002,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
LastRound.CastTime = newHardnessTime;
|
LastRound.CastTime = newHardnessTime;
|
||||||
}
|
}
|
||||||
AddCharacter(character, newHardnessTime, isCheckProtected);
|
AddCharacter(character, newHardnessTime, isCheckProtected);
|
||||||
await OnQueueUpdatedAsync(_queue, character, "设置角色行动后的硬直时间。");
|
await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.Action, "设置角色行动后的硬直时间。");
|
||||||
LastRound.HardnessTime = newHardnessTime;
|
LastRound.HardnessTime = newHardnessTime;
|
||||||
|
|
||||||
effects = [.. character.Effects.Where(e => e.Level > 0)];
|
effects = [.. character.Effects.Where(e => e.Level > 0)];
|
||||||
@ -2252,7 +2267,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
character.Respawn(_original[character.Guid]);
|
character.Respawn(_original[character.Guid]);
|
||||||
WriteLine($"[ {character} ] 已复活!获得 {hardnessTime} {GameplayEquilibriumConstant.InGameTime}的硬直时间。");
|
WriteLine($"[ {character} ] 已复活!获得 {hardnessTime} {GameplayEquilibriumConstant.InGameTime}的硬直时间。");
|
||||||
AddCharacter(character, hardnessTime, false);
|
AddCharacter(character, hardnessTime, false);
|
||||||
await OnQueueUpdatedAsync(_queue, character, "设置角色复活后的硬直时间。");
|
await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.Respawn, "设置角色复活后的硬直时间。");
|
||||||
LastRound.Respawns.Add(character);
|
LastRound.Respawns.Add(character);
|
||||||
_respawnCountdown.Remove(character);
|
_respawnCountdown.Remove(character);
|
||||||
if (!_respawnTimes.TryAdd(character, 1))
|
if (!_respawnTimes.TryAdd(character, 1))
|
||||||
@ -2275,7 +2290,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
_queue.Remove(character);
|
_queue.Remove(character);
|
||||||
_cutCount.Remove(character);
|
_cutCount.Remove(character);
|
||||||
AddCharacter(character, 0, false);
|
AddCharacter(character, 0, false);
|
||||||
await OnQueueUpdatedAsync(_queue, character, "设置角色预释放爆发技的硬直时间。");
|
await OnQueueUpdatedAsync(_queue, character, QueueUpdatedReason.PreCastSuperSkill, "设置角色预释放爆发技的硬直时间。");
|
||||||
WriteLine("[ " + character + " ] 预释放了爆发技!!");
|
WriteLine("[ " + character + " ] 预释放了爆发技!!");
|
||||||
foreach (Character c in _hardnessTimes.Keys)
|
foreach (Character c in _hardnessTimes.Keys)
|
||||||
{
|
{
|
||||||
@ -2342,7 +2357,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
|
|
||||||
#region 事件
|
#region 事件
|
||||||
|
|
||||||
public delegate Task<bool> TurnStartEventHandler(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items);
|
public delegate Task<bool> TurnStartEventHandler(ActionQueue queue, Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 回合开始事件
|
/// 回合开始事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2356,12 +2371,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="skills"></param>
|
/// <param name="skills"></param>
|
||||||
/// <param name="items"></param>
|
/// <param name="items"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> OnTurnStartAsync(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items)
|
protected async Task<bool> OnTurnStartAsync(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> 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);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 回合结束事件
|
/// 回合结束事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2371,12 +2386,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
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<CharacterActionType> DecideActionEventHandler(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items);
|
public delegate Task<CharacterActionType> DecideActionEventHandler(ActionQueue queue, Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 决定角色的行动事件
|
/// 决定角色的行动事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2390,12 +2405,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="skills"></param>
|
/// <param name="skills"></param>
|
||||||
/// <param name="items"></param>
|
/// <param name="items"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<CharacterActionType> OnDecideActionAsync(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> items)
|
protected async Task<CharacterActionType> OnDecideActionAsync(Character character, List<Character> enemys, List<Character> teammates, List<Skill> skills, List<Item> 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<Skill?> SelectSkillEventHandler(Character character, List<Skill> skills);
|
public delegate Task<Skill?> SelectSkillEventHandler(ActionQueue queue, Character character, List<Skill> skills);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 角色需要选择一个技能
|
/// 角色需要选择一个技能
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2406,12 +2421,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="skills"></param>
|
/// <param name="skills"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<Skill?> OnSelectSkillAsync(Character character, List<Skill> skills)
|
protected async Task<Skill?> OnSelectSkillAsync(Character character, List<Skill> skills)
|
||||||
{
|
{
|
||||||
return await (SelectSkill?.Invoke(character, skills) ?? Task.FromResult<Skill?>(null));
|
return await (SelectSkill?.Invoke(this, character, skills) ?? Task.FromResult<Skill?>(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate Task<Item?> SelectItemEventHandler(Character character, List<Item> items);
|
public delegate Task<Item?> SelectItemEventHandler(ActionQueue queue, Character character, List<Item> items);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 角色需要选择一个物品
|
/// 角色需要选择一个物品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2422,12 +2437,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="items"></param>
|
/// <param name="items"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<Item?> OnSelectItemAsync(Character character, List<Item> items)
|
protected async Task<Item?> OnSelectItemAsync(Character character, List<Item> items)
|
||||||
{
|
{
|
||||||
return await (SelectItem?.Invoke(character, items) ?? Task.FromResult<Item?>(null));
|
return await (SelectItem?.Invoke(this, character, items) ?? Task.FromResult<Item?>(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate Task<List<Character>> SelectSkillTargetsEventHandler(Character caster, Skill skill, List<Character> enemys, List<Character> teammates);
|
public delegate Task<List<Character>> SelectSkillTargetsEventHandler(ActionQueue queue, Character caster, Skill skill, List<Character> enemys, List<Character> teammates);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 选取技能目标事件
|
/// 选取技能目标事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2440,12 +2455,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="enemys"></param>
|
/// <param name="enemys"></param>
|
||||||
/// <param name="teammates"></param>
|
/// <param name="teammates"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<Character>> OnSelectSkillTargetsAsync(Character caster, Skill skill, List<Character> enemys, List<Character> teammates)
|
protected async Task<List<Character>> OnSelectSkillTargetsAsync(Character caster, Skill skill, List<Character> enemys, List<Character> teammates)
|
||||||
{
|
{
|
||||||
return await (SelectSkillTargets?.Invoke(caster, skill, enemys, teammates) ?? Task.FromResult(new List<Character>()));
|
return await (SelectSkillTargets?.Invoke(this, caster, skill, enemys, teammates) ?? Task.FromResult(new List<Character>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate Task<List<Character>> SelectNormalAttackTargetsEventHandler(Character character, NormalAttack attack, List<Character> enemys, List<Character> teammates);
|
public delegate Task<List<Character>> SelectNormalAttackTargetsEventHandler(ActionQueue queue, Character character, NormalAttack attack, List<Character> enemys, List<Character> teammates);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 选取普通攻击目标事件
|
/// 选取普通攻击目标事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2458,12 +2473,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="enemys"></param>
|
/// <param name="enemys"></param>
|
||||||
/// <param name="teammates"></param>
|
/// <param name="teammates"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<Character>> OnSelectNormalAttackTargetsAsync(Character character, NormalAttack attack, List<Character> enemys, List<Character> teammates)
|
protected async Task<List<Character>> OnSelectNormalAttackTargetsAsync(Character character, NormalAttack attack, List<Character> enemys, List<Character> teammates)
|
||||||
{
|
{
|
||||||
return await (SelectNormalAttackTargets?.Invoke(character, attack, enemys, teammates) ?? Task.FromResult(new List<Character>()));
|
return await (SelectNormalAttackTargets?.Invoke(this, character, attack, enemys, teammates) ?? Task.FromResult(new List<Character>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate Task InterruptCastingEventHandler(Character cast, Skill? skill, Character interrupter);
|
public delegate Task InterruptCastingEventHandler(ActionQueue queue, Character cast, Skill? skill, Character interrupter);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打断施法事件
|
/// 打断施法事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2475,12 +2490,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="skill"></param>
|
/// <param name="skill"></param>
|
||||||
/// <param name="interrupter"></param>
|
/// <param name="interrupter"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
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<bool> DeathCalculationEventHandler(Character killer, Character death);
|
public delegate Task<bool> DeathCalculationEventHandler(ActionQueue queue, Character killer, Character death);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 死亡结算事件
|
/// 死亡结算事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2491,12 +2506,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="killer"></param>
|
/// <param name="killer"></param>
|
||||||
/// <param name="death"></param>
|
/// <param name="death"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> OnDeathCalculationAsync(Character killer, Character death)
|
protected async Task<bool> 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<bool> CharacterDeathEventHandler(Character current, Character death);
|
public delegate Task<bool> CharacterDeathEventHandler(ActionQueue queue, Character current, Character death);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 角色死亡事件,此事件位于 <see cref="DeathCalculation"/> 之后
|
/// 角色死亡事件,此事件位于 <see cref="DeathCalculation"/> 之后
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2507,12 +2522,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="current"></param>
|
/// <param name="current"></param>
|
||||||
/// <param name="death"></param>
|
/// <param name="death"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> OnCharacterDeathAsync(Character current, Character death)
|
protected async Task<bool> 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);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 治疗事件
|
/// 治疗事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2525,12 +2540,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="heal"></param>
|
/// <param name="heal"></param>
|
||||||
/// <param name="isRespawn"></param>
|
/// <param name="isRespawn"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
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);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 造成伤害事件
|
/// 造成伤害事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2546,12 +2561,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="magicType"></param>
|
/// <param name="magicType"></param>
|
||||||
/// <param name="damageResult"></param>
|
/// <param name="damageResult"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
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);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 角色行动事件
|
/// 角色行动事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2563,12 +2578,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <param name="type"></param>
|
/// <param name="type"></param>
|
||||||
/// <param name="args"></param>
|
/// <param name="args"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
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<bool> GameEndEventHandler(Character winner);
|
public delegate Task<bool> GameEndEventHandler(ActionQueue queue, Character winner);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 游戏结束事件
|
/// 游戏结束事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2578,12 +2593,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="winner"></param>
|
/// <param name="winner"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> OnGameEndAsync(Character winner)
|
protected async Task<bool> OnGameEndAsync(Character winner)
|
||||||
{
|
{
|
||||||
return await (GameEnd?.Invoke(winner) ?? Task.FromResult(true));
|
return await (GameEnd?.Invoke(this, winner) ?? Task.FromResult(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate Task<bool> GameEndTeamEventHandler(Team winner);
|
public delegate Task<bool> GameEndTeamEventHandler(ActionQueue queue, Team winner);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 游戏结束事件(团队版)
|
/// 游戏结束事件(团队版)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2593,12 +2608,12 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="winner"></param>
|
/// <param name="winner"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> OnGameEndTeamAsync(Team winner)
|
protected async Task<bool> 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<Character> queue, Character character, string reason);
|
public delegate Task QueueUpdatedEventHandler(ActionQueue queue, List<Character> characters, Character character, QueueUpdatedReason reason, string msg);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 行动顺序表更新事件
|
/// 行动顺序表更新事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -2606,13 +2621,14 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 行动顺序表更新事件
|
/// 行动顺序表更新事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="queue"></param>
|
/// <param name="characters"></param>
|
||||||
/// <param name="character"></param>
|
/// <param name="character"></param>
|
||||||
/// <param name="reason"></param>
|
/// <param name="reason"></param>
|
||||||
|
/// <param name="msg"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task OnQueueUpdatedAsync(List<Character> queue, Character character, string reason)
|
protected async Task OnQueueUpdatedAsync(List<Character> 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
|
#endregion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user