コード例 #1
0
    public void DisableCardInPlayingDeck()
    {
        List <CardObj> listOfPlayingCard = PlayingDeck.GetComponent <PlayingDeck>().cardObjs;
        CardObj        co = listOfPlayingCard[listOfPlayingCard.Count - 2];

        co.gameObject.SetActive(false);
    }
コード例 #2
0
ファイル: SubView.cs プロジェクト: ymttkuc/dcg
    //新たなカードを加える
    public bool CardAdd(Card c)
    {
        if (cards.Count < MainSystem.HAND_MAX)
        {
        }
        else
        {
            return(false);
        }
        cards.Add(c);
        var hage = Instantiate(cardObj,
                               transform.position, transform.rotation, transform);

        Utility.SetChildrenTag(hage.transform, TAG);
        Utility.SetChildrenTag(hage.GetComponent <CardObj>().cc.transform, Utility.UNTAG);

        //CardObjのコンポーネントを取得する
        CardObj gcc = hage.GetComponent <CardObj>();

        //取得したものを用いてカード情報を書き込む
        gcc.CardSet(c);
        gcc.isHand         = true;
        gcc.isStateChanged = true;
        gcc.ObjReroad(true);

        hage.transform.parent = transform;
        cardsObj.Add(hage);
        gcc.LayerSet(cards.Count - 1, TAG);

        CardAlign();

        return(true);
    }
コード例 #3
0
    public void AddCardToPlayerDeck(Card card, string playerId)
    {
        GameObject playerObject = GetPlayerObject(playerId);

        List <CardObj> listOfPlayerCard = playerObject.GetComponent <PlayerCardList>().cardObjs;

        if (PhotonNetwork.LocalPlayer.NickName == playerId)
        {
            CardObj co = AllCardsObj[AllCardsObj.Count - 1];
            co.SetCardValue(card);
            co.SetCardFacedUp();
            AllCardsObj.Remove(co);

            if (listOfPlayerCard.Count == 0)
            {
                listOfPlayerCard.Add(co);
                MoveCard(co.gameObject, playerObject.transform.position);
            }
            else
            {
                CardObj lastCardObject = listOfPlayerCard[listOfPlayerCard.Count - 1];

                listOfPlayerCard.Add(co);

                MoveCard(co.gameObject, new Vector3(
                             lastCardObject.gameObject.transform.position.x + (Constants.PLAYER_CARDS_SPACE_OFFSET),
                             (lastCardObject.gameObject.transform.position.y)
                             ));
            }

            co.gameObject.transform.SetParent(playerObject.transform);
        }
        else
        {
            CardObj co = AllCardsObj[AllCardsObj.Count - 1];
            AllCardsObj.Remove(co);

            if (listOfPlayerCard.Count == 0)
            {
                listOfPlayerCard.Add(co);
                MoveCard(co.gameObject, playerObject.transform.position);
            }
            else
            {
                CardObj lastCardObject = listOfPlayerCard[listOfPlayerCard.Count - 1];

                listOfPlayerCard.Add(co);
                MoveCard(co.gameObject, new Vector3(
                             lastCardObject.gameObject.transform.position.x + Constants.CARDS_SPACE_OFFSET,
                             (lastCardObject.gameObject.transform.position.y)
                             ));
            }
            co.gameObject.transform.SetParent(playerObject.transform);

            // ReArrange All Players Card
        }

        //SpaceAllCards();
        //ReArrangeAllOpponetCards();
    }
コード例 #4
0
 public void DeleteCard(CardObj cardObj = null)
 {
     ObjectPoolManager.Instance.Despawn(cardObj.gameObject);
     graveCard.Add(cardObj.cardData);
     showingPlayerCard.Remove(cardObj);
     CardAllignment();
 }
コード例 #5
0
ファイル: CharacterBase.cs プロジェクト: ymttkuc/dcg
    //// Update is called once per frame
    //void Update () {
    //       if (Input.GetMouseButtonDown(0)) {
    //           click_start = Input.mousePosition / Screen.height;
    //       }

    //       if (Input.GetMouseButtonUp(0)) {
    //           CardTouch();
    //       }
    //   }

    //   public void SetFocus(bool f) {
    //       focus = f;
    //       card_obj.GetComponent<CardObj>().isSelected = f;
    //   }

    //   //プレイヤーカードをセットする
    //   public bool SetCard(Card c) {

    //       //プレイヤーカードでないならエラー
    //       if (c.origin.type == 1) { return false; }

    //       if (card_obj != null) { Destroy(card_obj); }
    //       card_obj = Instantiate(card_obj_origin, transform.position,
    //           transform.rotation, transform);
    //       card_obj.SetActive(true);

    //       card = c;
    //       var co = card_obj.GetComponent<CardObj>();
    //       co.CardSet(c);
    //       co.isStateChanged = true;
    //       co.LayerSet(0, LAYER);
    //       co.ObjReroad(true);

    //       Utility.SetChildrenTag(card_obj.transform, TAG);

    //       return true;

    //   }

    //カードを入力したとき
    public void SetCard(Card _card)
    {
        if (cardObj == null)
        {
            cardObj = Utility.InstantiateWithTransform(CardObj.GetPrefab(), transform);
        }
        cardObj.GetComponent <CardObj>().card = _card;
    }
コード例 #6
0
    public async Task DealCardsToPlayerAsync()
    {
        int extralenght = 0;

        for (int x = 1; x <= Constants.PLAYER_INITIAL_CARDS; x++)
        {
            foreach (GameObject p in PlayersObjectArray)
            {
                CardObj coj = AllCardsObj[AllCardsObj.Count - 1];
                StartCoroutine(MoveToPosition(coj.gameObject.transform,
                                              new Vector3(p.transform.position.x + extralenght, p.transform.position.y, 0)
                                              , 0.6f));
                coj.gameObject.transform.SetParent(p.transform);

                p.GetComponent <PlayerCardList>().cardObjs.Add(coj);

                AllCardsObj.Remove(coj);

                await Task.Delay(900);
            }

            extralenght += Constants.CARDS_SPACE_OFFSET;
        }

        CardObj selfCoj = AllCardsObj[AllCardsObj.Count - 1];

        StartCoroutine(MoveToPosition(selfCoj.gameObject.transform, PlayingDeck.transform.position, 0.6f));
        PlayingDeck.GetComponent <PlayingDeck>().cardObjs.Add(selfCoj);
        selfCoj.SetCardValue(cardManager.GetPlayingCard()[0]);
        selfCoj.SetCardFacedUp();

        selfCoj.gameObject.transform.SetParent(PlayingDeck.transform);

        AllCardsObj.Remove(selfCoj);

        PlayerCards playercard = cardManager.GetAllPlayerCards().Where(ap => ap.playerName == PhotonNetwork.NickName).First();
        int         i          = 0;

        GameObject player = PlayersObjectArray.Where(ap => ap.GetComponent <PlayerCardList>().isMine == true).First();

        foreach (CardObj cardobj in player.GetComponent <PlayerCardList>().cardObjs)
        {
            cardobj.SetCardValue(playercard.cards[i]);
            cardobj.SetCardFacedUp();
            i++;
        }

        SpaceAllCards();
        ReArrangeAllOpponetCards();

        // PLAY FIRST ACTIV CARD
        if (isFirstCardActionDone == false)
        {
            isFirstCardActionDone = true;
            cardManager.StartFirstCard();
        }
    }
コード例 #7
0
ファイル: SubView.cs プロジェクト: ymttkuc/dcg
    //動かした後に位置を再計算する
    void CardAlign()
    {
        for (int i = 0; i < cards.Count; ++i)
        {
            var v = new Vector3((i - (float)(cards.Count - 1) / 2) * cardBlank, 0, i * cardZ);
            cardsObj[i].transform.position = transform.position - v;

            CardObj c = cardsObj[i].GetComponent <CardObj>();
            c.LayerSet(i, TAG);
            c.ObjReroad(false);
        }
    }
コード例 #8
0
ファイル: CardObj.cs プロジェクト: ymttkuc/dcg
    //=================================================================
    //CardObjのUtility

    public static void SetCardObjs(Card[] _cards, ref List <GameObject> _orig_cards)
    {
        for (int i = _orig_cards.Count; _cards.Length <= i; --i)
        {
            Destroy(_orig_cards[i]); _orig_cards.RemoveAt(i);
        }
        for (int i = 0; i < _cards.Length; ++i)
        {
            if (_orig_cards.Count == i)
            {
                _orig_cards.Add(CardObj.GetPrefab());
            }
            _orig_cards[i].GetComponent <CardObj>().SetCard(_cards[i]);
        }
    }
コード例 #9
0
    public void PlayCard(GameObject cardGameObject)
    {
        CardObj card = cardGameObject.GetComponent <CardObj>();

        Card playedCard = card.GetCard();

        Card currentCard = cardManager.GetPlayingCard()[cardManager.GetPlayingCard().Count - 1];

        if (playedCard.GetRank() == currentCard.GetRank() || playedCard.GetSuit() == currentCard.GetSuit() || playedCard.GetSuit() == Suits.Whot)
        {
            cardManager.PlayCard(playedCard);
        }
        else
        {
            Debug.Log("Invalid Card Play Another");
        }
    }
コード例 #10
0
ファイル: YourHand.cs プロジェクト: ymttkuc/dcg
 //手札の更新
 public void SetCards(Card[] _cards)
 {
     CardObj.SetCardObjs(_cards, ref cards);
 }
コード例 #11
0
ファイル: SubView.cs プロジェクト: ymttkuc/dcg
    //カードを触る
    void CardTouch()
    {
        float dis = Vector3.Distance(clickStart, Input.mousePosition / Screen.height);

        if (touchBorder <= dis || touchSpeed <= Mathf.Abs(velocity))
        {
            if (0 <= focus && focus < cards.Count)
            {
                cardsObj[focus].GetComponent <CardObj>().isSelected = false;
            }
            focus = -1; return;
        }

        if (m_camera.rect.width <= 0 || m_camera.rect.height <= 0)
        {
            return;
        }

        int re = -1;

        //カメラからポインタ方向に出るビーム
        Ray ray = m_camera.ScreenPointToRay(Input.mousePosition);

        //ビームがぶつかったオブジェクトの情報
        RaycastHit hit = new RaycastHit();


        //Physics.Raycast(Ray, out RaycastHit, float, int)
        //ビームと衝突判定で実際に計算を行う
        //Ray ビーム
        //out RaycastHit 結果を hit に出力する
        //float ビーム長さ(入力しないと無限長)
        //int ビームが衝突するレイヤー(入力しないと「Ignore Raycast」以外)
        //一番手前のオブジェクトの情報を得ることができる
        if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask(Utility.TOUCHABLE)))
        {
            //衝突したオブジェクトはhitに記録される(outの特徴)
            //衝突したものが手札のカードだった場合
            GameObject c       = hit.collider.gameObject;
            CardObj    choosen = c.GetComponent <CardObj>();
            for (int i = 0; i < cardsObj.Count; ++i)
            {
                GameObject h    = cardsObj[i];
                CardObj    hoge = h.GetComponent <CardObj>();
                if (c.transform.position == h.transform.position)
                {
                    re = i; hoge.isSelected = true;
                }
                else
                {
                    hoge.isSelected = false;
                }
            }
        }
        else
        {
            for (int i = 0; i < cardsObj.Count; ++i)
            {
                CardObj hoge = cardsObj[i].GetComponent <CardObj>();
                hoge.isSelected = false;
            }
        }
        focus = re;
    }
コード例 #12
0
ファイル: CardWindow.cs プロジェクト: ymttkuc/dcg
    //       } else {
    //           if (isClearing) {
    //               view_frame = view_period;
    //               isClearing = false;

    //           }
    //       }
    //   }

    //色の決定
    void ViewFadeColor()
    {
        //       if (view_frame == view_period - 1 && !isClearing) {

        //最初の色を決定
        if (!isClearing)
        {
            colorFrame = -1;
            colorFrom  = CardObj.GetStartColor(card);
        }

        //次の色を決定
        if (colorFrame < 0)
        {
            colorFrom = colorTo;
            int colorHave = 0;
            for (int i = 0; i < (int)Card.Color.size; ++i)
            {
                if (card.color[(i + 1 + (int)colorFrom) % (int)Card.Color.size] > 0)
                {
                    colorTo = (Card.Color)((i + 1 + (int)colorFrom)
                                           % (int)Card.Color.size);
                    ++colorHave; break;
                }
            }
            if (colorHave == 0)
            {
                colorTo = Card.Color.size; ++colorHave;
            }
            if (colorHave == 1)
            {
                colorFrame  = colorPeriodAdd;
                colorPeriod = colorPeriodAdd;
            }
            else
            {
                colorFrame             = colorPeriod
                                       = (colorPeriodMin + (colorHave - 2)
                                          * colorPeriodAdd) / (colorHave - 1);
            }
        }

        //色を確定させて塗る
        if (colorFrom != colorTo || !isClearing)
        {
            for (int i = 0; i < (int)CardObj.ColorMaterial.size; ++i)
            {
                Card.State iState = 0;
                switch ((CardObj.ColorMaterial)i)
                {
                case CardObj.ColorMaterial.frame:
                case CardObj.ColorMaterial.name: continue;

                case CardObj.ColorMaterial.cost: iState = Card.State.cost; break;

                case CardObj.ColorMaterial.power: iState = Card.State.power; break;

                case CardObj.ColorMaterial.toughness: iState = Card.State.toughness; break;
                }
                GameObject obj = obj_stateView[(int)iState];

                //外部のカードの情報を用いる
                Color color = Utility.GetRatio(
                    CardObj.colorList[(int)colorFrom][i], CardObj.colorList[(int)colorTo][i],
                    (Mathf.Cos(Mathf.PI * colorFrame / colorPeriod) + 1f) / 2);

                color.a = viewFrame / viewPeriod;
                obj.GetComponent <Image>().color = color;
                if ((CardObj.ColorMaterial)i == CardObj.ColorMaterial.cost)
                {
                    obj_characterStateView[(int)Card.CharacterState.mana].GetComponent <Image>().color = color;
                    obj_characterStateView[(int)Card.CharacterState.od].GetComponent <Image>().color   = color;
                }
            }
        }
        colorFrame = (colorFrame + 1) % colorPeriod;
    }
コード例 #13
0
ファイル: CardWindow.cs プロジェクト: ymttkuc/dcg
    //カード情報をウィンドウに反映させる
    void WriteWindow(Card _card)
    {
        text_name.text = _card.GetName();
        text_user.text = "";
        for (int i = 0; i < _card.GetUser().Length; ++i)
        {
            text_user.text += i == 0 ? "" : " " + _card.GetUser()[i];
        }

        //       //書き換えタイミング
        //       if (view_frame == view_period - 1 && !isClearing) {
        //       //if (!isClearing) {

        //           Card cs = card;

        //GetByteCountは使えない
        //nm_size = nm_char_size * System.Text.Encoding.GetEncoding(932)
        //    .GetByteCount(nm.text.ToString()) / 2;
        var gui = new GUIStyle()
        {
            font = font_name
        };

        nameSize = gui.CalcSize(new GUIContent(text_name.text)).x;
        text_name.rectTransform.offsetMin.Set(0, text_name.rectTransform.offsetMin.y);

        nameMode  = ScrollMode.size - 1;
        nameFrame = -1;

        //nmMode = NameModeType.size - 1;
        //nm_frame = -1;


        //テキストの決定

        //テキストで使えるのは
        //\n : 改行
        //\h : ぶら下げ

        float textLength = 0;      //1行に入るテキスト長さ
        float textLine   = 0;      //縦の長さ

        int lineStart     = 0;     //一行の開始地点
        int lineFromFirst = 0;     //段落から何行目か

        bool   yen        = false; //直前が\のときに真
        bool   breakFlag  = false; //改行フラグ
        string hungFirst  = "";    //段落冒頭の左側
        string hungSecond = "";    //段落冒頭以外の左側

        string buffer = "";        //これを最終的にtxt.textに流す

        gui = new GUIStyle()
        {
            font = font_text
        };

        for (int i = 0; i < _card.text.Length; ++i)
        {
            if (_card.text[i] == '\\')
            {
                yen = true; continue;
            }
            if (yen)
            {
                yen = false;
                switch (_card.text[i])
                {
                case 'n': breakFlag = true; hungFirst = ""; hungSecond = ""; continue;

                case 'h': breakFlag = true; hungFirst = ""; hungSecond = " "; continue;
                }
            }
            textLength += gui.CalcSize(new GUIContent(_card.text[i].ToString())).x;
            if (textLength > textLengthBorder || breakFlag || i == _card.text.Length - 1)
            {
                string line = _card.text.Substring(lineStart, i - lineStart);
                line      = line.Replace("\\n", "");
                line      = line.Replace("\\h", "");
                buffer   += lineFromFirst == 0 ? hungFirst : hungSecond + line + "\n";
                lineStart = i;
                if (breakFlag)
                {
                    lineFromFirst = 0;
                }
                else
                {
                    ++lineFromFirst;
                }
                textLine  += gui.CalcSize(new GUIContent(_card.text[i].ToString())).y;
                textLength = gui.CalcSize(new GUIContent(
                                              (lineFromFirst == 0 ? hungFirst : hungSecond))).x;
                breakFlag = false;
            }
        }

        text_text.text = buffer;

        //offsetMin = new Vector2 (left,top);
        //offsetMax = new Vector2 (right,bottom);

        var hoge = new Vector2(0, textLineBorder - textLine);

        text_text.rectTransform.offsetMin = hoge;
        if (textLine < textLineBorder)
        {
            text_text.rectTransform.offsetMax = hoge;
            obj_textScroll.GetComponent <ScrollRect>().vertical = false;
        }
        else
        {
            text_text.rectTransform.offsetMax = new Vector2(0, 0);
            obj_textScroll.GetComponent <ScrollRect>().vertical = true;
        }
        obj_textScroll.GetComponent <ScrollRect>().verticalNormalizedPosition = 1f;

        //コスト火力耐久の反映
        for (int i = 0; i < obj_stateView.Length; ++i)
        {
            int state = 0;
            switch ((Card.State)i)
            {
            case Card.State.cost: state = _card.GetCost(); break;

            case Card.State.power: state = _card.GetPower(); break;

            case Card.State.toughness: state = _card.GetToughness(); break;
            }
            stateNum[i].GetComponent <Number>().num = state;
            stateNum[i].transform.localScale        = new Vector3(1, 1, 0) * numScale;
        }
        stateNum[(int)Card.State.cost].GetComponent <Number>().isVisible
            = _card.type != Card.Type.character;

        for (int i = 0; i < (int)Card.CharacterState.size; ++i)
        {
            var isTypeChar = _card.type == Card.Type.character;
            obj_characterStateView[i].SetActive(isTypeChar);
            characterStateNum[i].GetComponent <Number>().isVisible = isTypeChar;
            characterStateNum[i].transform.localScale = new Vector3(1, 1, 0) * numScale;
            int state = 0;
            switch ((Card.CharacterState)i)
            {
            case Card.CharacterState.mana: state = _card.mana; break;

            case Card.CharacterState.manaCapacity: state = _card.manaCapacity; break;

            case Card.CharacterState.od: state = _card.od; break;
            }
            characterStateNum[i].GetComponent <Number>().num = state;
        }

        //彩度の決定
        foreach (var i in chromas)
        {
            Destroy(i);
        }
        foreach (var i in chromaNums)
        {
            Destroy(i);
        }
        chromas.Clear();
        chromaNums.Clear();

        //スタート地点を見つける
        Card.Color start = CardObj.GetStartColor(_card);

        //シンボルの種類を数える
        int colorHave = 0;

        for (int i = 0; i < (int)Card.Color.size; ++i)
        {
            if (_card.color[i] > 0)
            {
                ++colorHave;
            }
        }

        //配置する
        for (int i = 0, a = 0; i < (int)Card.Color.size; ++i)
        {
            int b = ((int)start + i) % (int)Card.Color.size;

            if (0 < _card.color[b])
            {
                var obj = Utility.InstantiateWithTransform(orig_chroma, orig_chroma.transform);
                obj.transform.localPosition      += new Vector3(chromaBlank * a++, 0, 0);
                obj.transform.localScale          = new Vector3(1, 1, 1) * chromaScale;
                obj.GetComponent <Image>().sprite = chromaPic[b];
                chromas.Add(obj);

                if (1 < _card.color[b])
                {
                    var num = Instantiate(orig_num, obj.transform.position + chromaNumPos,
                                          obj.transform.rotation, obj.transform);

                    num.GetComponent <Number>().num = _card.color[b];
                    num.transform.localScale        = new Vector3(1, 1, 0) * chromaNumScale;
                    chromaNums.Add(num);
                }
            }
        }
    }
コード例 #14
0
 private void AddCardToPlayingDeck(CardObj co)
 {
     PlayingDeck.GetComponent <PlayingDeck>().cardObjs.Add(co);
     MoveCard(co.gameObject, PlayingDeck.transform.position);
     co.gameObject.transform.SetParent(PlayingDeck.transform);
 }
コード例 #15
0
    public void AddCardtoPlayingDeck(Card card, string playerId)
    {
        GameObject playerObject = GetPlayerObject(playerId);

        List <CardObj> listOfPlayerCard = playerObject.GetComponent <PlayerCardList>().cardObjs;

        PlayerCards playerCard = cardManager.GetPlayerCardFromPlayerId(playerId);

        if (PhotonNetwork.LocalPlayer.NickName == playerId)
        {
            CardObj co = GetCardObj(listOfPlayerCard, card);

            co.gameObject.transform.SetSiblingIndex(0);

            listOfPlayerCard.Remove(co);
            AddCardToPlayingDeck(co);
            SpaceAllCards();
        }
        else
        {
            CardObj co = listOfPlayerCard[listOfPlayerCard.Count - 1];

            co.gameObject.transform.SetSiblingIndex(0);

            listOfPlayerCard.Remove(co);
            co.SetCardValue(card);
            co.SetCardFacedUp();
            AddCardToPlayingDeck(co);
        }

        //Display Card Message

        //string actionMessage = DisplayCardMessage(card, playerCard.player);
        //if (actionMessage != "NULL")
        //{
        //    StartCoroutine(ShowNextPlayer(actionMessage));
        //}

        string nextPlayerMessage = DisplayNextPlayerMessage(card, playerCard.player);

        StartCoroutine(ShowCardAction(nextPlayerMessage));

        //END >>>


        if (cardManager.IsCardsPoolEmpty())
        {
            // Calculate and return winner
            Debug.Log("Game Over Cards Finished");
        }

        if (cardManager.IsPlayerCardRemainingOne(playerCard.player))
        {
            // Show Last Card Warning
            Debug.Log("Last Card" + playerCard.player.NickName);
        }

        if (cardManager.IsPlayerCardFinish(playerCard.player))
        {
            // return winner
            Debug.Log("Winner" + playerCard.player.NickName);
        }
    }
コード例 #16
0
    void OnGUI()
    {
        float per1x = 65f;
        float per1y = 65f;
        float basex = 735f + per1x;
        float basey = 590f + per1y;

        if (this.step == EFFECT.STEP.ATTACK)
        {
            //EFFECT EFFECT = GetComponentInParent<EFFECT>();
            //int[,] position = EFFECT.A_1(); // ここで座標のみを受け取っているため受け取りもとで行っている作業を下でもしている

            /*
             * Type t = this.GetType();
             * MethodInfo mi = t.GetMethod(cardname);
             * object o = mi.Invoke(this, null);
             * int[,] position = mi.Invoke(null, null);
             */



            int[,] position = A_1();

            /*
             *
             * ここに個別の処理をそれぞれ埋め込む
             *
             */
            if (cardname == "A_1")
            {
                position = A_1();
            }
            if (cardname == "A_2")
            {
                position = A_2();
            }
            if (cardname == "A_3")
            {
                position = A_3();
            }
            if (cardname == "A_4")
            {
                position = A_4();
            }
            if (cardname == "A_5")
            {
                position = A_5();
            }
            if (cardname == "A_6")
            {
                position = A_6();
            }
            if (cardname == "A_7")
            {
                position = A_7();
            }
            if (cardname == "A_8")
            {
                position = A_8();
            }
            if (cardname == "A_9")
            {
                position = A_9();
            }
            if (cardname == "A_10")
            {
                position = A_10();
            }
            if (cardname == "A_11")
            {
                position = A_11();
            }

            int damage   = position[0, 2];
            int distance = position[0, 3];
            int cost     = position[0, 4];
            int[,] own_dice_position = Get_own_diceposition();
            int[,] opp_dice_position = Get_opp_diceposition();
            int enable_cost = GetHand() - 1; // 発動中のカードを除くため-1
            //int in_distance_dicenum = Get_in_distance_dicenum(distance); // distance内存在する相手のダイス数  distanceを渡せばいいのかな?
            int dice_x;
            int dice_y;
            int attacker_dice_x;
            int attacker_dice_y;
            int target_dice_x;
            int target_dice_y;

            void attack_processing()
            {
                GameObject gameOb     = GameObject.Find("GameMaster");
                GameMaster gamemaster = gameOb.GetComponent <GameMaster>();
                player1    player     = gamemaster.currentPlayer;
                Card       card       = this.GetComponent <Card>();

                player.PushSettingCardOnFieldFromHand(card);
                //List<GameObject> attackers = own_diceList();
                List <GameObject> attackers = Attackable_dice_object(distance);
                //List<GameObject> targets = opp_diceList();

                bool activate_dice     = DiceExistActivate();
                int  selected_dice_num = DiceExistSelected();

                if (activate_dice == false)
                {
                    foreach (GameObject attacker in attackers)
                    {
                        attacker_dice_x = attacker.GetComponent <Dice>().x;
                        attacker_dice_y = attacker.GetComponent <Dice>().y;
                        bool attacker_i = GUI.Button(new Rect(basex - 33f - per1x * (attacker_dice_x), basey - 432f + per1y * (attacker_dice_y), 66, 66), "");
                        if (attacker_i == true)
                        {
                            attacker.GetComponent <Dice>().activate = true;
                        }
                    }
                }

                GameObject attackerObj = diceExistActivate();
                GameObject selectedObj = diceExistSelected();

                attacker_dice_x = attackerObj.GetComponent <Dice>().x;
                attacker_dice_y = attackerObj.GetComponent <Dice>().y;
                target_dice_x   = selectedObj.GetComponent <Dice>().x;
                target_dice_y   = selectedObj.GetComponent <Dice>().y;
                List <GameObject> targets = Target_dice_object(attackerObj, distance);

                if (activate_dice == true)
                {
                    bool attacker_ = GUI.Button(new Rect(basex - 33f - per1x * (attacker_dice_x), basey - 432f + per1y * (attacker_dice_y), 66, 66), "att");
                    foreach (GameObject target in targets)
                    {
                        target_dice_x = target.GetComponent <Dice>().x;
                        target_dice_y = target.GetComponent <Dice>().y;
                        bool atrget_i = GUI.Button(new Rect(basex - 33f - per1x * (target_dice_x), basey - 432f + per1y * (target_dice_y), 66, 66), "");
                        if (atrget_i == true)
                        {
                            target.GetComponent <Dice>().selected = true;
                        }
                    }
                }

                if (activate_dice == true && selected_dice_num > 0)
                {
                    bool attacker_ = GUI.Button(new Rect(basex - 33f - per1x * (attacker_dice_x), basey - 432f + per1y * (attacker_dice_y), 66, 66), "att");
                    bool target_   = GUI.Button(new Rect(basex - 33f - per1x * (target_dice_x), basey - 432f + per1y * (target_dice_y), 66, 66), "tar");

                    GameObject target  = diceExistSelected();
                    Dice       dice    = target.GetComponent <Dice>();
                    DragObj    dragObj = dice.GetComponent <DragObj>();
                    dragObj.eee();
                    dice.hp      -= damage;
                    step          = EFFECT.STEP.IDLE;
                    activate_step = ACTIVATE.STEP.NONE;
                    DiceFlagrestore();
                }
            }

            // 手札が発動コストを満たしているか確認
            if (cost <= enable_cost || activate_step == ACTIVATE.STEP.IDLE)
            {
                List <GameObject> attackers = Attackable_dice_object(distance);
                if (attackers.Count == 0)
                {
                    bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "有効射程範囲に敵ダイスが存在しません");
                    if (card_choose == true)
                    {
                        step = EFFECT.STEP.IDLE;
                    }
                }
                else if (attackers.Count > 0)
                {
                    activate_step = ACTIVATE.STEP.IDLE;
                    if (cost == 1 && activate_cost != EFFECT.COST.ONE)
                    {
                        bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "捨てるカードを1枚選択してください");
                        if (card_choose == true)
                        {
                            //enable_cost = GetHand();
                            activate_cost = EFFECT.COST.ONE;
                            CardObj _cardobj = GetComponentInParent <CardObj>();
                            _cardobj.GetCardCost(cost);
                            Card card = GetComponentInParent <Card>();
                            card.activate = true;
                        }
                    }
                    if (cost == 2 && activate_cost != EFFECT.COST.TWO)
                    {
                        bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "捨てるカードを2枚選択してください");
                        if (card_choose == true)
                        {
                            //enable_cost = GetHand();
                            activate_cost = EFFECT.COST.TWO;
                            CardObj _cardobj = GetComponentInParent <CardObj>();
                            _cardobj.GetCardCost(cost);
                            Card card = GetComponentInParent <Card>();
                            card.activate = true;
                        }
                    }
                    if (cost > 3)
                    {
                        bool card_choose = GUI.Button(new Rect(550, 350, 500, 450), "捨てるカードを選択してください");
                    }

                    if (activate_cost == EFFECT.COST.ONE)
                    {
                        // カードの発動コストを支払い終えたか確認
                        if (this.CardExistActivate() == false)
                        {
                            attack_processing();
                        }
                    }

                    if (activate_cost == EFFECT.COST.TWO)
                    {
                        // カードの発動コストを支払い終えたか確認
                        if (this.CardExistActivate() == false)
                        {
                            attack_processing();
                        }
                    }

                    if (cost == 0)
                    {
                        attack_processing();
                    }
                }
            }
            else
            {
                Debug.Log("cost:" + cost + "enable_cost:" + enable_cost);
                bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "このカードの発動に必要なコストが足りていません");
                if (card_choose == true)
                {
                    step = EFFECT.STEP.IDLE;
                }
            }
        }

        if (step == EFFECT.STEP.MANA)
        {
            GameObject gameOb     = GameObject.Find("GameMaster");
            GameMaster gamemaster = gameOb.GetComponent <GameMaster>();
            player1    player     = gamemaster.currentPlayer;
            Card       card       = this.GetComponent <Card>();
            player.PushSettingCardOnFieldFromHand(card);
            int dice_x;
            int dice_y;
            List <GameObject> targets = own_diceList();
            foreach (GameObject target in targets)
            {
                dice_x = target.GetComponent <Dice>().x;
                dice_y = target.GetComponent <Dice>().y;
                ;
                bool activate_i = GUI.Button(new Rect(basex - 33f - per1x * (dice_x), basey - 432f + per1y * (dice_y), 66, 66), "");
                if (activate_i == true)
                {
                    Dice    dice    = target.GetComponent <Dice>();
                    DragObj dragObj = dice.GetComponent <DragObj>();
                    dragObj.ddd();
                    step = EFFECT.STEP.IDLE;
                }
            }
        }

        /*
         * if (step == EFFECT.STEP.MANA)
         * {
         *  GameObject gameOb = GameObject.Find("GameMaster");
         *  GameMaster gamemaster = gameOb.GetComponent<GameMaster>();
         *  player1 player = gamemaster.currentPlayer;
         *  Card card = this.GetComponent<Card>();
         *  player.PushSettingCardOnFieldFromHand(card);
         *
         *  int[,] position = M_1();
         *  int damage = position[0, 2];
         *  int distance = position[0, 3];
         *  int dice_x;
         *  int dice_y;
         *
         *  List<GameObject> targets = own_diceList();
         *
         *  for (int i = 0; i < position.GetLength(0); i++)
         *  {
         *      dice_x = position[i, 0];
         *      dice_y = position[i, 1];
         *
         *      bool activate_i = GUI.Button(new Rect(basex - 33f - per1x * (dice_x), basey - 432f + per1y * (dice_y), 66, 66), "");
         *      if (activate_i == true)
         *      {
         *          //dice_step = DICE.STEP.TOUCHE;
         *          Debug.Log("aaaaaaaaaaaaaaaaaaaaa");
         *          var gameObj = GameObject.FindGameObjectsWithTag("DICE");
         *          for (int j = 0; j < position.GetLength(0); j++) // A_1でtargetobjごと受け取っていれば同じことをせずに済んだ
         *          {
         *              Dice dice = gameObj[j].GetComponent<Dice>();
         *              Debug.Log("dice.x:" + dice.x + "dice_x:" + dice_x);
         *              Debug.Log("dice.y:" + dice.y + "dice_y:" + dice_y);
         *              if (dice.x == dice_x && dice.y == dice_y) // 再び座標と一致するオブジェクトを探している、後で絶対直す
         *              {
         *                  Debug.Log("bbbbbbbbbbbbbbb");
         *                  DragObj dragObj = dice.GetComponent<DragObj>();
         *                  dragObj.ddd();
         *                  step = EFFECT.STEP.IDLE;
         *              }
         *          }
         *      }
         *  }
         * }
         */
    }