/// <summary>
        /// 当所有信息齐后进行
        /// </summary>
        void RealFunction()
        {
            //如果当前怪兽的状态是里侧表示,则进行反转召唤
            if (calledMonster.GetCardGameState() == CardGameState.Back)
            {
                callMonsterType = CallMonsterType.Flip;
                calledMonster.SetCardGameState(cardGameState);
                calledMonster.SetChangeAttackOrDefenseNumber(0);
                calledMonster.GetDuelCardScript().SetOwner(ownerPlayer);
                CheckCardCanChainLaunch();
                return;
            }
            int monsterLevel = calledMonster.GetLevel();

            //先判断是否可以直接进行召唤
            if (monsterLevel <= DuelRuleManager.GetCallMonsterWithoutSacrificeLevelUpperLimit())
            {
                int index = CallMonster();
                calledMonster.GetDuelCardScript().SetOwner(ownerPlayer);
                ownerPlayer.GetOpponentPlayer().CallMonsterNotify(calledMonster.GetID(), CallType.Normal, CardGameState.Hand, cardGameState, index);
                CheckCardCanChainLaunch();
            }
            else//使用祭品召唤
            {
                if (ownerPlayer.GetCanBeSacrificeMonsterNumber() >= calledMonster.NeedSacrificeMonsterNumer())
                {
                    callMonsterType = CallMonsterType.Sacrifice;
                    TrySacrificeCall();
                }
            }
        }
        /// <summary>
        /// 召唤怪兽
        /// </summary>
        int CallMonster()
        {
            int index = 0;

            for (; index < DuelRuleManager.GetMonsterAreaNumber(); index++)
            {
                if (ownerPlayer.GetMonsterCardArea()[index] == null)
                {
                    ownerPlayer.GetMonsterCardArea()[index] = calledMonster;
                    break;
                }
            }
            callMonsterType = CallMonsterType.Normal;
            calledMonster.AddContent("monsterCardAreaIndex", index);

            if (calledMonster.GetCardGameState() == CardGameState.Tomb)
            {
                calledMonster.GetDuelCardScript().GetOwner().GetTombCards().Remove(calledMonster);
            }
            else if (calledMonster.GetCardGameState() == CardGameState.Hand)
            {
                calledMonster.GetDuelCardScript().GetOwner().GetHandCards().Remove(calledMonster);
            }

            calledMonster.SetCardGameState(cardGameState, index);

            ownerPlayer.SetNormalCallNumber(ownerPlayer.GetNormalCallNumber() - 1);
            return(index);
        }