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