/// <summary>
        /// 下面传上来的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void DoAction(object sender, EventArgs args)
        {
            // 处理抽卡完成的事件
            if (args is CardDrewEventArgs)
            {
                var arg = args as CardDrewEventArgs;
                UberDebug.LogDebugChannel("Frontend", $"卡{arg}抽出完毕");
                if (arg.CardRID == lastDrawCardRID)
                {
                    savedCallback?.Invoke(this, null);
                    lastDrawCardRID = -1;
                    savedCallback   = null;
                }
            }

            // 预览随从
            if (args is RetinuePreview)
            {
                servantPreviewInsert((args as RetinuePreview).Position);
            }

            if (args is IPlayerEventArgs)
            {
                (args as IPlayerEventArgs).PlayerID = SelfID;
                OnDeckAction?.Invoke(sender, args);
            }
        }
 private void onDeckAction(object sender, EventArgs args)
 {
     OnDeckAction?.Invoke(sender, args);
 }