private void HandleCostCheck(BattleFieldSlotDisplayer slotDisPlayer, MinionCardDisplayer minionDisPlayer)
        {
            if (minionDisPlayer && !minionDisPlayer.GetActor<Card>().IsSameWith(GetActor<Card>()) && !cardObject.HasEffect(CardKeyWordType.UnScarifiable))
            {
                var sacrificeCost = minionDisPlayer.cardObject.GetSacrificeCostValue();
                if (Player.GetPlayerCost().Value.Value.intValue + sacrificeCost <
                    cardObject.GetCost().Value.Value.intValue)
                {
                    GameMode.OnPlayCostWarning?.Invoke();
                    HandleBackgroundStates(false);
                    minionDisPlayer.m_deathIcon.SetActive(false);
                    minionDisPlayer.sacrificeValueText.gameObject.SetActive(false);
                    return;
                }

                if (cardObject.HasEffect(CardKeyWordType.BattleCry) && HasValidTarget())
                {
                    shouldLerpPos = false;
                    minionWaitingForBattleCryInput = this;
                    arrowBattlecry.gameObject.SetActive(true);
                    arrowBattlecry.isHeadToMouse = true;
                    arrowBattlecry.SetTailPos_World(transform.position);
                    GameMode.HighLightActor(cardObject, true);
                    minionWaitingToSacrifice = minionDisPlayer;
                }
                else
                {
                    ActivateTauntSprites();
                    var position = new AccurateCardPosition<BattleFieldPosition>
                    {
                        SubPosition =
                            GameMode.GetCardPosition(minionDisPlayer.GetActor<Card>()).BattleFieldPosition,
                        PlayerPosition = cardObject.GetCardPosition().PlayerPosition
                    };
                    var cardEvent = new CGDeployCardToPositionEvent();
                    cardEvent.Player = cardObject.GetOwnerPlayer();
                    cardEvent.card = GetActor<Card>();
                    cardEvent.destPosition = position;
                    cardEvent.isSacrifice = true;
                    GamePlayer.UpdateEvent(cardEvent);
                }
                
                //StartCoroutine(CoroutineSacrifice(minionDisPlayer));
            }
            else if (slotDisPlayer)
            {
                if (Player.GetPlayerCost() < cardObject.GetCost())
                {
                    GameMode.OnPlayCostWarning?.Invoke();
                    HandleBackgroundStates(false);
                    return;
                }

                if (cardObject.HasEffect(CardKeyWordType.BattleCry) && HasValidTarget())
                {
                    shouldLerpPos = false;
                    minionWaitingForBattleCryInput = this;
                    arrowBattlecry.gameObject.SetActive(true);
                    arrowBattlecry.isHeadToMouse = true;
                    arrowBattlecry.SetTailPos_World(transform.position);
                    GameMode.HighLightActor(cardObject, true);
                    targetSlot = slotDisPlayer;
                }
                else
                {
                    ActivateTauntSprites();
                    GamePlayer.PlayerDeployCardEvent(
                        cardObject.GetOwnerPlayer(),
                        GetActor<Card>(),
                        slotDisPlayer.AccurateBattleFieldPosition);
                }
                shouldLerpPos = !cardObject.HasEffect(CardKeyWordType.BattleCry);
            }
            else
            {
                shouldLerpPos = true;
                HandleBackgroundStates(false);
            }
        } 帮忙优化这段代码