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

View File

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

View File

@ -1,8 +1,7 @@
using System.Text; 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.Interface.Entity;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Entity namespace Milimoe.FunGame.Core.Entity
{ {
@ -64,7 +63,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <param name="queue"></param> /// <param name="queue"></param>
/// <param name="attacker"></param> /// <param name="attacker"></param>
/// <param name="enemys"></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) foreach (Character enemy in enemys)
{ {

View File

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