Skip to content

IRoundRecordSink

回合记录外发通道接口,位于 FunGame.Core.Interface.Base

实现方负责将记录序列化并发送(如 POST 到远程服务、写入消息队列等)。GamingQueue.RoundRecordSink 属性赋值的瞬间会调用 Attach(Guid)

方法

方法事件 id触发时机参数说明
Attach(Guid queueId)设置 RoundRecordSink 属性时绑定所属队列,提供队列 Guid
End()游戏结束时停止握手重试等
SendAction(ActionRecord)"0"每次角色操作完成后单次操作记录(实时增量推送)
SendRound(RoundRecord)"1"每次角色操作完成后当前回合数据(含本回合操作流与汇总)
SendCheckpointRound(RoundRecord)"2"回合结束且为检查点时检查点回合记录(附全角色状态快照)
SendCharacterStatistics(Dictionary<Guid, CharacterStatistics>)"3"回合结束时角色 Guid → 统计数据
SendCharacters(IEnumerable<Character>)"4"回合结束时参与本局的所有角色
SendTeams(IEnumerable<Team>)"5"回合结束时(团队模式)当前存活的团队
SendQueueData(Dictionary<Guid, double>)"6"每次角色操作完成后角色 Guid → 当前等待时间
SendEliminatedCharacters(IEnumerable<string>)"7"每次角色操作完成后已淘汰/死亡角色 Guid
SendEliminatedTeams(IEnumerable<string>)"8"回合结束时(团队模式)已淘汰团队 Name

自定义实现

csharp
public class MyMQSink : IRoundRecordSink
{
    public void Attach(Guid queueId) { /* 绑定队列 */ }
    public void End() { /* 游戏结束 */ }
    public void SendAction(ActionRecord action) { /* 推送到消息队列 */ }
    public void SendRound(RoundRecord round) { /* ... */ }
    // ...其余 6 个方法
}

所有方法的参数均为结构快照(集合独立副本、实体引用共享),可在回调中安全消费。

关联

基于 LGPL-3.0 许可证发布