/// <summary> /// 玩家出牌 /// </summary> /// <param name="player">轮到出牌的玩家</param> /// <param name="token">取消标识</param> /// <returns>获取一个 Task,用于等待这个玩家处理结束</returns> protected virtual async Task PlayerPlay(GameRoundEvent roundEvnet, CardGamePlayer player, CancellationToken token) { await OnBeforePlay(roundEvnet, player, token); await player.Play(roundEvnet, token); await OnAfterPlay(roundEvnet, player, token); }