// 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; }
// ライン変更 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(); }