Esempio n. 1
0
    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();
         *  }
         * }
         */
    }
Esempio n. 2
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;
         *              }
         *          }
         *      }
         *  }
         * }
         */
    }