コード例 #1
0
ファイル: CardObj.cs プロジェクト: t1revolution/CardGamePrac3
    void OnGUI()
    {
        float per1x = 65f;
        float per1y = 65f;
        float basex = 735f + per1x;
        float basey = 590f + per1y;

        /*
         * if (this.step == CARD.STEP.ACTIVATE)
         * {
         *  CardEffect cardeffect = GetComponentInParent<CardEffect>();
         *  int[,] position = cardeffect.A_1(); // ここで座標のみを受け取っているため受け取りもとで行っている作業を下でもしている
         *  int dice_x;
         *  int dice_y;
         *  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;
         *          var gameObj = GameObject.FindGameObjectsWithTag("DICE");
         *          for (int j = 0; j < position.GetLength(0); j++) // A_1でtargetobjごと受け取っていれば同じことをせずに済んだ
         *          {
         *              Dice dice = gameObj[j].GetComponent<Dice>();
         *              if (dice.x == dice_x && dice.y == dice_y) // 再び座標と一致するオブジェクトを探している、後で絶対直す
         *              {
         *                  DragObj dragObj = dice.GetComponent<DragObj>();
         *                  //dragObj.ddd();
         *                  dragObj.eee();
         *                  step = CARD.STEP.IDLE;
         *              }
         *          }
         *      }
         *  }
         * }
         */

        if (this.step == CARD.STEP.TOUCHE)
        {
            bool activate = GUI.Button(new Rect(400, 350, 100, 90), "発動");
            bool ret      = GUI.Button(new Rect(700, 350, 100, 90), "戻る");

            if (activate == true)
            {
                Debug.Log("ACTIVATE BUTTON WAS CLICKED!!!!!!");
                this.step = CARD.STEP.IDLE;
                //this.step = CARD.STEP.EXPAND;
                this.transform.localScale = new Vector3(0.8f, 1.2f, 0.0f);

                Card card = this.GetComponent <Card>();


                // ##########################################################
                // カードの発動条件を満たしたものを手札からフィールドに移動させる。
                // 発動コスト、その他特殊な発動条件のカードがあり実行タイミングは要検討
                // 下4行のコメントアウトをとったことにより、
                // 発動コストちょうどの手札枚数のときコスト不足が表示されてしまうので注意


                GameObject gameObj    = GameObject.Find("GameMaster");
                GameMaster gamemaster = gameObj.GetComponent <GameMaster>();
                player1    player     = gamemaster.currentPlayer;
                //Card card = this.GetComponent<Card>();
                player.PushSettingCardOnFieldFromHand(card);


                // ##########################################################

                if (card.type == (int)Type.REFLECT)
                {
                    sprite       = Resources.Load <Sprite>("back_1");
                    image        = this.GetComponent <Image>();
                    image.sprite = sprite;
                }
                // カード効果の発動
                else
                {
                    Card       cardObj       = GetComponentInParent <Card>();
                    CardEffect cardeffectObj = GetComponentInParent <CardEffect>();
                    cardeffectObj.Activate(cardObj);
                }
            }
            if (ret == true)
            {
                Debug.Log("RETURN BUTTON WAS CLICKED!!!!!!");
                this.step = CARD.STEP.IDLE;
                this.transform.localScale = new Vector3(0.8f, 1.2f, 0.0f);
            }
        }
        else if (this.step == CARD.STEP.EXPAND)
        {
            bool activate = GUI.Button(new Rect(400, 350, 100, 90), "確認");
            bool ret      = GUI.Button(new Rect(700, 350, 100, 90), "戻る");
            if (activate == true)
            {
                Debug.Log("CHECK BUTTON WAS CLICKED!!!!!!");
                this.transform.localScale = new Vector3(8f, 12f, -3f);
                this.step = CARD.STEP.CHECK;
            }
            if (ret == true)
            {
                Debug.Log("RETURN BUTTON WAS CLICKED!!!!!!");
                this.step = CARD.STEP.IDLE;
                this.transform.localScale = new Vector3(0.8f, 1.2f, 0.0f);
            }
        }
        else if (this.step == CARD.STEP.CHECK)
        {
            bool ret = GUI.Button(new Rect(550, 350, 100, 90), "戻る");
            if (ret == true)
            {
                Debug.Log("RETURN BUTTON WAS CLICKED!!!!!!");
                this.step = CARD.STEP.IDLE;
                this.transform.localScale = new Vector3(0.8f, 1.2f, 0.0f);
            }
        }
        else if (this.step == CARD.STEP.COST)
        {
            CardEffect cardeffect = GetComponentInParent <CardEffect>();
            Card       card       = GetComponentInParent <Card>();
            int        hand_num;
            int        selected_cost;
            int        cost;
            cost          = cardeffect.Getcost();
            hand_num      = cardeffect.GetHand();
            selected_cost = cardeffect.CardExistSelected();

            //Debug.Log("card_position.x2:" + card_position.x);
            //Debug.Log("card_position.y2:" + card_position.y);

            //bool ret = GUI.Button(new Rect(550, 350, 100, 90), "コストとして支払うカード");
            // タップされた手札にボタンを生成したい
            //bool ret = GUI.Button(new Rect(card_position.x + 500f, card_position.y - 500f, 200, 300), "コストとして選択されたカード");
            //bool ret = GUI.Button(new Rect(card_position.x + 620f, card_position.y + 640f, 80, 120), "select");
            bool ret = GUI.Button(new Rect(card_position.x - 40f, card_position.y + 700f, 80, 120), "select");
            if (ret == true)
            {
                Debug.Log("RETURN BUTTON WAS CLICKED!!!!!!");
                this.step = CARD.STEP.IDLE;
                this.transform.localScale = new Vector3(0.8f, 1.2f, 0.0f);
                this.reference            = CARD.EFFECT.CANCEL;
                card.selected             = false;

                //card.activate = true;
                //card_position = new Vector3();
            }
            if (selected_cost == cost)
            {
                //this.step = CARD.STEP.DISCAHRGE;
                bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "選択したカードを捨てます。よろしいですか?");
                int  checkcost   = cardeffect.Getcost();
                if (card_choose == true || checkcost == 0)
                {
                    var targets = GameObject.FindGameObjectsWithTag("CARD");
                    this.step = CARD.STEP.IDLE;
                    foreach (GameObject target in targets)
                    {
                        if (target.GetComponent <Card>().selected == true)
                        {
                            GameObject gameObj    = GameObject.Find("GameMaster");
                            GameMaster gamemaster = gameObj.GetComponent <GameMaster>();
                            player1    player     = gamemaster.currentPlayer;
                            player.ActivationCostFromHand(target.GetComponent <Card>());
                        }
                    }
                    cardeffect.CardFlagrestore();
                }
            }
        }

        /*
         * else if (this.step == CARD.STEP.DISCAHRGE)
         * {
         *  bool card_choose = GUI.Button(new Rect(350, 220, 500, 450), "選択したカードを捨てます。よろしいですか?");
         *  if(card_choose == true)
         *  {
         *      Card card = GetComponentInParent<Card>();
         *      CardEffect cardeffect = GetComponentInParent<CardEffect>();
         *      var targets = GameObject.FindGameObjectsWithTag("CARD");
         *      this.step = CARD.STEP.IDLE;
         *      foreach (GameObject target in targets)
         *      {
         *          if (target.GetComponent<Card>().selected == true)
         *          {
         *              GameObject gameObj = GameObject.Find("GameMaster");
         *              GameMaster gamemaster = gameObj.GetComponent<GameMaster>();
         *              player1 player = gamemaster.currentPlayer;
         *              player.ActivationCostFromHand(card);
         *          }
         *      }
         *      cardeffect.Flagrestore();
         *  }
         * }
         */
    }