using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Model; namespace Milimoe.FunGame.Core.Interface.Base { /// /// 回合制游戏的基础队列 /// public interface IGamingQueue { /// /// 使用的游戏平衡常数 /// public EquilibriumConstant GameplayEquilibriumConstant { get; } /// /// 用于文本输出 /// public Action WriteLine { get; } /// /// 原始的角色字典 /// public Dictionary Original { get; } /// /// 当前的行动顺序 /// public List Queue { get; } /// /// 上回合记录 /// public RoundRecord LastRound { get; set; } /// /// 所有回合的记录 /// public List Rounds { get; } /// /// 当前已死亡的角色顺序(第一个是最早死的) /// public List Eliminated { get; } /// /// 角色数据 /// public Dictionary CharacterStatistics { get; } /// /// 游戏运行的时间 /// public double TotalTime { get; } /// /// 游戏运行的回合 /// 对于某角色而言,在其行动的回合叫 Turn,而所有角色行动的回合,都称之为 Round。 /// public int TotalRound { get; } /// /// 显示队列信息 /// public void DisplayQueue(); /// /// 处理回合动作 /// /// /// public Task ProcessTurnAsync(Character character); /// /// 造成伤害 /// /// /// /// /// /// /// /// public Task DamageToEnemyAsync(Character actor, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage = false, MagicType magicType = MagicType.None, DamageResult damageResult = DamageResult.Normal); /// /// 治疗一个目标 /// /// /// /// /// public Task HealToTargetAsync(Character actor, Character target, double heal, bool canRespawn = false); /// /// 计算物理伤害 /// /// /// /// /// /// /// public DamageResult CalculatePhysicalDamage(Character actor, Character enemy, bool isNormalAttack, double expectedDamage, out double finalDamage); /// /// 计算魔法伤害 /// /// /// /// /// /// /// /// public DamageResult CalculateMagicalDamage(Character actor, Character enemy, bool isNormalAttack, MagicType magicType, double expectedDamage, out double finalDamage); /// /// 死亡结算 /// /// /// public Task DeathCalculationAsync(Character killer, Character death); /// /// 打断施法 /// /// /// public Task InterruptCastingAsync(Character caster, Character interrupter); /// /// 使用物品 /// /// /// /// /// /// public Task UseItemAsync(Item item, Character caster, List enemys, List teammates); /// /// 选取技能目标 /// /// /// /// /// /// public Task> SelectTargetsAsync(Character caster, Skill skill, List enemys, List teammates); /// /// 选取普通攻击目标 /// /// /// /// /// /// public Task> SelectTargetsAsync(Character character, NormalAttack attack, List enemys, List teammates); } }