コード例 #1
0
ファイル: SceneDeck.cs プロジェクト: WassyoiTCG/TCG
    // Use this for initialization
    void Start()
    {
        SelectData.iDeckCollectLineNo = 0;

        //TouchCardObj.GetComponent<uGUICard>().SetCardData(CardDataBase.GetCardData(4));
        //Arrow.SetActive(false);

        m_vTapPos     = new Vector3(0, 0, 0);
        m_vCurrentPos = new Vector3(0, 0, 0);

        m_bCardTap = false;

        // (TODO)(A列車)システム初期化  を全て共通に
        oulSystem.Initialize();

        //  BGM
        oulAudio.PlayBGM("CollectionBGM", true);

        // カードのデータベースを初期化
        //CardDataBase.Start();

        CardData data = CardDataBase.GetCardData(3);            // ID0番目のカードデータを取ってくる。

        CardData[] all  = CardDataBase.GetDeckSortedCardData(); // カード情報を全て取得する。1/12 デッキ選択用のソートした配列を取得
        int        size = all.Length;                           // カードの最大数

        // ★Findは非アクティブ状態ではとれないから取ってから消すやで
        //m_uGraspCard=gameObject
        //m_uGraspCard = GameObject.Find("Canvas/uGUICard");    //.GetComponent<uGUICard>();
        m_uGraspCard.GetComponent <uGUICard>().SetCardData(data);
        //m_uGraspCard.GetComponent<Ripple>().SetAlpha(1.0f); // 透明に
        m_uGraspCard.SetActive(false);                        // 取得したから消すやで


        for (int i = 0; i < PlayerDeckData.deckMax; i++)
        {
            // 変更前
            // m_pCardPlateArray[i] = (GameObject)Instantiate(CardPlatePrefab);
            // m_pCardPlateArray[i].transform.SetParent(, false);

            /*
             * 差異としては、as句の方が高速であることと、失敗時にキャスト演算は例外を発生させas句はnullを返します。
             * 例外は処理するのにもコストがかかるので、特別な事が無い限りはこの場合as句を利用するのが良いです。
             */

            // 変更後
            //m_aCardPlate[i] = Instantiate(CardPlatePrefab, DeckCardGroup.transform) as GameObject;
            m_aMyDeckCard[i] = Instantiate(CardPrefab, DeckCardGroup.transform) as GameObject;
            m_aMyDeckCard[i].GetComponent <uGUICard>().SetMyDeck(true);// ★★★このカードは自分のデッキかどうか

            int StartX = 100; int StartY = 130;
            //m_aCardPlate[i].transform.localPosition = new Vector2(StartX + (150 * (i % 5)), StartY + (i / 5) * -185);
            m_aMyDeckCard[i].transform.localPosition = new Vector2(StartX + (150 * (i % 5)), StartY + (i / 5) * -185);

            // マイデッキ
            m_aMyDeckCard[i].GetComponent <ScreenOutAppeared>().SetNextPos(new Vector3(StartX + (150 * (i % 5)), StartY + (i / 5) * -185, 0.0f));
        }



        // (TODO)自分のデッキやで 仮0スロット目のデッキのカードのID取得
        int[] myDeckID = PlayerDataManager.GetPlayerData().GetDeckData(0).GetArray();

        // ★デッキデータ
        for (int i = 0; i < PlayerDeckData.deckMax; i++)
        {
            // (11/13)(TODO)取得したデータが何も書かれていなかったら
            // SetActiveで消す

            int id = myDeckID[i];
            //CardType type = CardType.Fighter;
            m_aMyDeckCard[i].GetComponent <uGUICard>().SetCardData(CardDataBase.GetCardData(id)); //;= strikerCards[i];
        }

        // コレクション
        for (int i = 0; i < SelectData.DECK_COLLECTCARD_MAX; i++)
        {
            m_aCollectCard[i] = Instantiate(CardPrefab, CollectCardGroup.transform) as GameObject;

            int StartX = -620; int StartY = 128;
            m_aCollectCard[i].transform.localPosition = new Vector2(StartX + (150 * (i % 4)), StartY + (i / 4) * -185);

            m_aCollectCard[i].GetComponent <uGUICard>().SetCardData(all[i]);

            // (11/13)うんこソート
            // 先にデッキに入っていないカード状態に
            m_aCollectCard[i].GetComponent <uGUICard>().NotGrasp_Off();
            for (int i2 = 0; i2 < PlayerDeckData.deckMax; i2++)
            {
                // ★コレクションにあるカードがすでに被ってたら暗くするソート
                if (m_aCollectCard[i].GetComponent <uGUICard>().cardData.id == m_aMyDeckCard[i2].GetComponent <uGUICard>().cardData.id)
                {
                    // デッキに入っている状態
                    m_aCollectCard[i].GetComponent <uGUICard>().NotGrasp_On();
                    break;
                }
            } // ソート
        }     // forコレクション

        EventMANTAN();
        AbilityMANTAN();
        //// カードタイプ
        //if (CardDataBase.GetCardData(11).cardType == CardType.Fighter)
        //{
        //    int a = 0;
        //    a++;
        //}
        //if (CardDataBase.GetCardData(11).cardType == CardType.Intercept)
        //{
        //    int b = 0;
        //    b++;
        //}

        //m_aMyDeckCard[PlayerDeckData.numStriker].GetComponent<uGUICard>().SetCardData;//PlayerDeckData.jorkerCard;
        //for (int i = 0; i < PlayerDeckData.numEvent; i++)
        //{
        //    cards[numStriker + numJoker + i] = eventCards[i];
        //}



        // ステートマシンの初期化や切り替えは最後に行う
        m_pStateMachine = new BaseEntityStateMachine <SceneDeck>(this);

        m_pStateMachine.globalState = SceneDeckState.Global.GetInstance();
        m_pStateMachine.ChangeState(SceneDeckState.Intro.GetInstance());
        return;
    }
コード例 #2
0
ファイル: SceneDeck.cs プロジェクト: WassyoiTCG/TCG
    // ライン変更
    public void ChangeLine(int iNextLine)
    {
        // (11/13)(TODO)この処理だと全部取ってきて重いので何とかする。
        // 解決案 最大サイズ取得したいだけなので最初にInt型にサイズを保存しておく。
        CardData[] all      = CardDataBase.GetDeckSortedCardData(); // カード情報を全て取得する。1/12 デッキ選択用のソートした配列を取得
        int        iMaxSize = all.Length;                           // カードの最大数


        //  セレクトタイプによってステート変更
        switch ((CHANGE_LINE_TYPE)iNextLine)
        {
        case CHANGE_LINE_TYPE.BACK:

            SelectData.iDeckCollectLineNo -= 1;
            Debug.Log("SceneCollectState: LINE移動↑(マイナス)");

            //+--------------------------------------------
            //  ラインが0より低ければ0にして何もせずReturun
            if (SelectData.iDeckCollectLineNo <= -1)
            {
                Debug.Log("ChangeLine:0よりマイナス行こうとしたため0に戻しReturun ");

                SelectData.iDeckCollectLineNo = 0;
                return;
            }
            ;

            // アニメーション開始
            CollectCardGroup.GetComponent <ScreenOutAppeared>().SetPos(new Vector3(0, 600, 0));
            //CollectCardGroup.GetComponent<ScreenOutAppeared>().SetNextPos(new Vector3(0, 0, 0));
            CollectCardGroup.GetComponent <ScreenOutAppeared>().Action();

            break;

        case CHANGE_LINE_TYPE.NEXT:
            SelectData.iDeckCollectLineNo += 1;
            Debug.Log("SceneCollectState: LINE移動↓(プラス)");

            //+--------------------------------------------
            //  ラインが0より低ければ0にして何もせずReturun
            if ((SelectData.iDeckCollectLineNo * SelectData.DECK_COLLECTCARD_MAX) >= iMaxSize)
            {
                Debug.Log("ChangeLine:カード最大数を超えた空間に移動しようとしていたためReturn");
                SelectData.iDeckCollectLineNo -= 1;
                return;
            }
            ;

            // アニメーション開始
            CollectCardGroup.GetComponent <ScreenOutAppeared>().SetPos(new Vector3(0, -600, 0));
            //CollectCardGroup.GetComponent<ScreenOutAppeared>().SetNextPos(new Vector3(0, 0, 0));
            CollectCardGroup.GetComponent <ScreenOutAppeared>().Action();

            break;

        case CHANGE_LINE_TYPE.END:
            Debug.LogWarning("SceneCollectState: それ以上のタイプはない。");
            break;

        default:
            break;
        }



        int iNextNo = SelectData.iDeckCollectLineNo * SelectData.DECK_COLLECTCARD_MAX;



        for (int i = 0; i < SelectData.DECK_COLLECTCARD_MAX; i++)
        {
            m_aCollectCard[i].SetActive(true);//絵が表示されていない可能性があるため毎回True

            // 最大カード数を超えたら
            if ((iNextNo + i) >= iMaxSize)
            {
                m_aCollectCard[i].SetActive(false); //絵を表示しない
                continue;
            }

            // 01/12変更 ソートしたやつを左の表示をソートしたやつに変更
            m_aCollectCard[i].GetComponent <uGUICard>().SetCardData(CardDataBase.GetSortedCardData(iNextNo + i));



            // (11/13)最後にいつものうんこソート
            // 先にデッキに入っていないカード状態に
            m_aCollectCard[i].GetComponent <uGUICard>().NotGrasp_Off();
            for (int i2 = 0; i2 < PlayerDeckData.deckMax; i2++)
            {
                // ★コレクションにあるカードがすでに被ってたら暗くするソート
                if (m_aCollectCard[i].GetComponent <uGUICard>().cardData.id == m_aMyDeckCard[i2].GetComponent <uGUICard>().cardData.id)
                {
                    // デッキに入っている状態
                    m_aCollectCard[i].GetComponent <uGUICard>().NotGrasp_On();
                    break;
                }
            }// ソート
        }
        EventMANTAN();
        AbilityMANTAN();
    }