using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Common.Addon; 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 AllCharacters { get; } /// /// 当前的行动顺序 /// public List Queue { get; } /// /// 上回合记录 /// public RoundRecord LastRound { get; set; } /// /// 所有回合的记录 /// public List Rounds { get; } /// /// 当前已死亡的角色顺序(第一个是最早死的) /// public List Eliminated { get; } /// /// 角色数据 /// public Dictionary CharacterStatistics { get; } /// /// 角色的决策点 /// public Dictionary CharacterDecisionPoints { get; } /// /// 游戏运行的时间 /// public double TotalTime { get; } /// /// 游戏运行的回合 /// 对于某角色而言,在其行动的回合叫 Turn,而所有角色行动的回合,都称之为 Round。 /// public int TotalRound { get; } /// /// 使用的地图 /// public GameMap? Map { get; } /// /// 显示队列信息 /// public void DisplayQueue(); /// /// 处理回合动作 /// /// /// public bool ProcessTurn(Character character); /// /// 造成伤害 /// /// /// /// /// /// /// /// /// public void DamageToEnemy(Character actor, Character enemy, double damage, bool isNormalAttack, DamageType damageType = DamageType.Physical, MagicType magicType = MagicType.None, DamageResult damageResult = DamageResult.Normal, DamageCalculationOptions? options = null); /// /// 治疗一个目标 /// /// /// /// /// /// public void HealToTarget(Character actor, Character target, double heal, bool canRespawn = false, bool triggerEffects = true); /// /// 计算物理伤害 /// /// /// /// /// /// /// /// /// public DamageResult CalculatePhysicalDamage(Character actor, Character enemy, bool isNormalAttack, double expectedDamage, out double finalDamage, ref int changeCount, DamageCalculationOptions? options = null); /// /// 计算魔法伤害 /// /// /// /// /// /// /// /// /// /// public DamageResult CalculateMagicalDamage(Character actor, Character enemy, bool isNormalAttack, MagicType magicType, double expectedDamage, out double finalDamage, ref int changeCount, DamageCalculationOptions? options = null); /// /// 死亡结算 /// /// /// public void DeathCalculation(Character killer, Character death); /// /// 打断施法 /// /// /// public void InterruptCasting(Character caster, Character interrupter); /// /// 打断施法 [ 用于使敌人目标丢失 ] /// /// public void InterruptCasting(Character interrupter); /// /// 使用物品 /// /// /// /// /// /// /// /// /// /// /// public bool UseItem(Item item, Character character, DecisionPoints dp, List enemys, List teammates, List castRange, List allEnemys, List allTeammates, AIDecision? aiDecision = null); /// /// 角色移动 /// /// /// /// /// /// public bool CharacterMove(Character character, DecisionPoints dp, Grid target, Grid? startGrid); /// /// 选取移动目标 /// /// /// /// /// /// /// public Grid SelectTargetGrid(Character character, List enemys, List teammates, GameMap map, List moveRange); /// /// 选取技能目标 /// /// /// /// /// /// /// public List SelectTargets(Character caster, Skill skill, List enemys, List teammates, List castRange); /// /// 选取普通攻击目标 /// /// /// /// /// /// /// public List SelectTargets(Character character, NormalAttack attack, List enemys, List teammates, List attackRange); /// /// 获取某角色的敌人列表 /// /// /// public List GetEnemies(Character character); /// /// 获取某角色的队友列表 /// /// /// public List GetTeammates(Character character); /// /// 判断目标对于某个角色是否是队友 /// /// /// /// public bool IsTeammate(Character character, Character target); /// /// 获取目标对于某个角色是否是队友的字典 /// /// /// /// public Dictionary GetIsTeammateDictionary(Character character, IEnumerable targets); /// /// 设置角色为 AI 控制 /// /// public void SetCharactersToAIControl(bool bySystem = true, bool cancel = false, params IEnumerable characters); /// /// 检查角色是否在 AI 控制状态 /// /// public bool IsCharacterInAIControlling(Character character); /// /// 修改角色的硬直时间 /// /// 角色 /// 加值 /// 是否是百分比 /// 是否使用插队保护机制 public void ChangeCharacterHardnessTime(Character character, double addValue, bool isPercentage, bool isCheckProtected); /// /// 计算角色的数据 /// /// /// /// /// /// public void CalculateCharacterDamageStatistics(Character character, Character characterTaken, double damage, DamageType damageType, double takenDamage = -1); /// /// 免疫检定 /// /// /// /// /// /// public bool CheckSkilledImmune(Character character, Character target, Skill skill, Item? item = null); /// /// 技能豁免检定 /// /// /// /// /// true - 豁免成功等效于闪避 /// public bool CheckExemption(Character character, Character? source, Effect effect, bool isEvade); /// /// 向角色(或控制该角色的玩家)进行询问并取得答复 /// /// /// /// /// public Dictionary Inquiry(Character character, string topic, Dictionary args); } }