使用 IGamingQueue 接口

This commit is contained in:
milimoe 2024-10-21 22:14:41 +08:00
parent a46a0120bf
commit 671e3eee40
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
4 changed files with 29 additions and 30 deletions

View File

@ -1,8 +1,8 @@
using System.Text;
using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Entity
{
@ -149,7 +149,7 @@ namespace Milimoe.FunGame.Core.Entity
{
foreach (Effect e in skill.AddInactiveEffectToCharacter())
{
e.ActionQueue = skill.ActionQueue;
e.GamingQueue = skill.GamingQueue;
if (Character != null && !Character.Effects.Contains(e))
{
Character.Effects.Add(e);
@ -213,7 +213,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <summary>
/// 局内使用物品触发 对某个角色使用
/// </summary>
public void UseItem(ActionQueue queue, Character character, List<Character> enemys, List<Character> teammates)
public void UseItem(IGamingQueue queue, Character character, List<Character> enemys, List<Character> teammates)
{
OnItemUsed(character, this);
Skills.Active?.OnSkillCasted(queue, character, enemys, teammates);
@ -307,7 +307,7 @@ namespace Milimoe.FunGame.Core.Entity
StringBuilder builder = new();
builder.AppendLine($"【{Name}】");
builder.AppendLine($"{ItemSet.GetItemTypeName(ItemType)}" + (IsPurchasable && Price > 0 ? $" 售价:{Price:0.##}" : ""));
builder.AppendLine($"{ItemSet.GetItemTypeName(ItemType)}" + (IsPurchasable && Price > 0 ? $" 售价:{Price}" : ""));
if (RemainUseTimes > 0)
{

View File

@ -1,8 +1,8 @@
using System.Text;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Entity
{
@ -88,7 +88,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <summary>
/// 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在
/// </summary>
public ActionQueue? ActionQueue { get; set; } = null;
public IGamingQueue? GamingQueue { get; set; } = null;
/// <summary>
/// 输出文本或日志
@ -97,8 +97,8 @@ namespace Milimoe.FunGame.Core.Entity
{
get
{
if (ActionQueue is null) return Console.WriteLine;
else return ActionQueue.WriteLine;
if (GamingQueue is null) return Console.WriteLine;
else return GamingQueue.WriteLine;
}
}
@ -387,7 +387,7 @@ namespace Milimoe.FunGame.Core.Entity
}
/// <summary>
/// 对敌人造成技能伤害 [ 强烈建议使用此方法造成伤害而不是自行调用 <see cref="ActionQueue.DamageToEnemy"/> ]
/// 对敌人造成技能伤害 [ 强烈建议使用此方法造成伤害而不是自行调用 <see cref="IGamingQueue.DamageToEnemy"/> ]
/// </summary>
/// <param name="actor"></param>
/// <param name="enemy"></param>
@ -397,20 +397,20 @@ namespace Milimoe.FunGame.Core.Entity
/// <returns></returns>
public DamageResult DamageToEnemy(Character actor, Character enemy, bool isMagic, MagicType magicType, double expectedDamage)
{
if (ActionQueue is null) return DamageResult.Evaded;
DamageResult result = !isMagic ? ActionQueue.CalculatePhysicalDamage(actor, enemy, false, expectedDamage, out double damage) : ActionQueue.CalculateMagicalDamage(actor, enemy, false, MagicType, expectedDamage, out damage);
ActionQueue.DamageToEnemy(actor, enemy, damage, false, isMagic, magicType, result);
if (GamingQueue is null) return DamageResult.Evaded;
DamageResult result = !isMagic ? GamingQueue.CalculatePhysicalDamage(actor, enemy, false, expectedDamage, out double damage) : GamingQueue.CalculateMagicalDamage(actor, enemy, false, MagicType, expectedDamage, out damage);
GamingQueue.DamageToEnemy(actor, enemy, damage, false, isMagic, magicType, result);
return result;
}
/// <summary>
/// 打断施法 [ 尽可能的调用此方法而不是直接调用 <see cref="ActionQueue.InterruptCasting"/>,以防止中断性变更 ]
/// 打断施法 [ 尽可能的调用此方法而不是直接调用 <see cref="IGamingQueue.InterruptCasting"/>,以防止中断性变更 ]
/// </summary>
/// <param name="caster"></param>
/// <param name="interrupter"></param>
public void InterruptCasting(Character caster, Character interrupter)
{
ActionQueue?.InterruptCasting(caster, interrupter);
GamingQueue?.InterruptCasting(caster, interrupter);
}
/// <summary>
@ -452,7 +452,7 @@ namespace Milimoe.FunGame.Core.Entity
DurationTurn = DurationTurn,
MagicType = MagicType,
Description = Description,
ActionQueue = ActionQueue
GamingQueue = GamingQueue
};
return copy;

View File

@ -1,8 +1,7 @@
using System.Text;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Entity
{
@ -64,7 +63,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <param name="queue"></param>
/// <param name="attacker"></param>
/// <param name="enemys"></param>
public void Attack(ActionQueue queue, Character attacker, params Character[] enemys)
public void Attack(IGamingQueue queue, Character attacker, params Character[] enemys)
{
foreach (Character enemy in enemys)
{

View File

@ -1,8 +1,8 @@
using System.Text;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Entity
{
@ -145,7 +145,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <summary>
/// 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在
/// </summary>
public ActionQueue? ActionQueue { get; set; } = null;
public IGamingQueue? GamingQueue { get; set; } = null;
/// <summary>
/// 技能是否属于某个物品
@ -177,7 +177,7 @@ namespace Milimoe.FunGame.Core.Entity
{
foreach (Effect e in AddInactiveEffectToCharacter())
{
e.ActionQueue = ActionQueue;
e.GamingQueue = GamingQueue;
if (Character != null && !Character.Effects.Contains(e))
{
Character.Effects.Add(e);
@ -191,21 +191,21 @@ namespace Milimoe.FunGame.Core.Entity
/// 当获得技能时
/// </summary>
/// <param name="queue"></param>
public void OnSkillGained(ActionQueue queue)
public void OnSkillGained(IGamingQueue queue)
{
ActionQueue = queue;
GamingQueue = queue;
OnLevelUp();
}
/// <summary>
/// 技能开始吟唱时 [ 吟唱魔法、释放战技和爆发技、预释放爆发技均可触发 ]
/// </summary>
public void OnSkillCasting(ActionQueue queue, Character caster)
public void OnSkillCasting(IGamingQueue queue, Character caster)
{
ActionQueue = queue;
GamingQueue = queue;
foreach (Effect e in Effects)
{
e.ActionQueue = ActionQueue;
e.GamingQueue = GamingQueue;
e.OnSkillCasting(caster);
}
}
@ -213,12 +213,12 @@ namespace Milimoe.FunGame.Core.Entity
/// <summary>
/// 触发技能效果
/// </summary>
public void OnSkillCasted(ActionQueue queue, Character caster, List<Character> enemys, List<Character> teammates)
public void OnSkillCasted(IGamingQueue queue, Character caster, List<Character> enemys, List<Character> teammates)
{
ActionQueue = queue;
GamingQueue = queue;
foreach (Effect e in Effects)
{
e.ActionQueue = ActionQueue;
e.GamingQueue = GamingQueue;
e.OnSkillCasted(caster, enemys, teammates, OtherArgs);
}
}
@ -333,7 +333,7 @@ namespace Milimoe.FunGame.Core.Entity
CD = CD,
CurrentCD = CurrentCD,
HardnessTime = HardnessTime,
ActionQueue = ActionQueue
GamingQueue = GamingQueue
};
foreach (Effect e in Effects)
{