Exemple #1
0
    void Awake()
    {
        // フレームレート設定
        Application.targetFrameRate = frameRate;

        // タイムスケール設定
        Time.timeScale = timeScale;

        // サウンド初期化
        oulAudio.Initialize();

        // 共通データ初期化
        SelectData.Initialize();

        // ウィンドウサイズサイズ
        Screen.SetResolution(windowWidth, windowHeight, false, 60);

        // カメラコンポーネントを取得します
        //cam = Camera.main;
        UpdateAspect();

        // プレイヤーデータ読み込み
        PlayerDataManager.Load();

        // カードデータ読み込み
        CardDataBase.Start();

        // カードの淵のデータ取得
        CardFrames.Init();
    }
    static void Rate(CardDataBase CDB)
    {
        foreach (CardData card in CDB.AllCards)
        {
            card.Rating = 0;
            if (card.Type == 0 ||
                card.Type == 1)
            {
                card.Rating += (card.Attack + card.Defense) * 1;
            }
            else
            {
                card.Rating -= (card.Attack + card.Defense) * 1;
            }
            card.Rating -= 2 * card.Cost;
            card.Rating += 1 * card.CardDraw;
            card.Rating += (card.MyHealthChange - card.OppHealthChange) * 1;
            if (card.Abilities.HasBreakthrough)
            {
                card.Rating += 1;
            }
            if (card.Abilities.HasCharge)
            {
                card.Rating += 1;
            }
            if (card.Abilities.HasDrain)
            {
                card.Rating += 1;
            }
            if (card.Abilities.HasGuard)
            {
                card.Rating += 1;
            }
            if (card.Abilities.HasLethal)
            {
                card.Rating += 1;
            }
            if (card.Abilities.HasWard)
            {
                card.Rating += 1;
            }
        }
        var SORT = from card in CDB.AllCards
                   orderby card.Rating descending
                   select card;

        foreach (CardData card in SORT)
        {
            Console.Error.WriteLine(card.CardNumber + "   " + card.Type);
            Console.Error.WriteLine(card.Cost + "  " + card.Attack + "/" + card.Defense);
            Console.Error.WriteLine(card.Abilities.toString());
            Console.Error.WriteLine(card.MyHealthChange + "/" + card.OppHealthChange + "  " + "DRAW " + card.CardDraw);
            Console.Error.WriteLine("Rating: " + card.Rating);
            Console.Error.WriteLine("**********");
        }
    }
Exemple #3
0
    // 無しのカードを入れる
    public void MissingCard()
    {
        CardData data = CardDataBase.GetCardData((int)IDType.NONE);// 欠番

        // (11/14) -1を入れるとなしカードが欲しい この関数いらん
        SetCardData(data);

        // □えうれしあを消す
        gameObject.SetActive(false);
    }
    public AdvancedSearch(float x, float y, DeckEditorManager deck, DeckSearcher searcher)
    {
        GlobalVarAdvSearch.dropDownListOpen = false;

        _DeckSearcher = searcher;
        _DeckEditor = deck;
        /*
        _w *= _DeckEditor._xWindowScale;
        _h *= _DeckEditor._yWindowScale;
        */

        xScale = _DeckEditor._xWindowScale;
        yScale = _DeckEditor._yWindowScale;

        _x = x;
        _y = y;
        _Background = Resources.Load ("DeckEditor/AdvancedSearch") as Texture2D;
        _Data = new CardDataBase();
        AllCards = _Data.GetAllCards();

        _DropDownList = new PopupList((int)(_x + 80.0f), (int)(_y + 30.0f + 25.0f), 130, 20, 5);
        _DropDownList.Add("All");
        _DropDownList.Add("0");
        _DropDownList.Add("1");
        _DropDownList.Add("2");
        _DropDownList.Add("3");
        _DropDownList.Add("4");

        _ClanPopupList = new PopupList((int)(_x + 80), (int)(_y + 115), 130, 20, 5);
        _ClanPopupList.SetSliderYFactor(16.7f);
        _ClanPopupList.Add("All");
        _ClanPopupList.Add("Angel Feather");
        _ClanPopupList.Add("Aqua Force");
        _ClanPopupList.Add("Bermuda Triangle");
        _ClanPopupList.Add("Dark Irregulars");
        _ClanPopupList.Add("Dimension Police");
        _ClanPopupList.Add("Genesis");
        _ClanPopupList.Add("Gold Paladin");
        _ClanPopupList.Add("Granblue");
        _ClanPopupList.Add("Great Nature");
        _ClanPopupList.Add("Kagero");
        _ClanPopupList.Add("Link Joker");
        _ClanPopupList.Add("Megacolony");
        _ClanPopupList.Add("Murakumo");
        _ClanPopupList.Add("Narukami");
        _ClanPopupList.Add("Neo Nectar");
        _ClanPopupList.Add("Nova Grappler");
        _ClanPopupList.Add("Nubatama");
        _ClanPopupList.Add("Oracle Think Tank");
        _ClanPopupList.Add("Pale Moon");
        _ClanPopupList.Add("Royal Paladin");
        _ClanPopupList.Add("Shadow Paladin");
        _ClanPopupList.Add("Spike Brothers");
        _ClanPopupList.Add("Tachikaze");
    }
Exemple #5
0
    private void Start()
    {
        cardData = CardDataBase.GetCardData(iDtype, number);
        var text = GetComponentInChildren <TMPro.TextMeshPro>();

        text.text = IDName[iDtype] + "." + number;
        if (OnCardClick == null)
        {
            OnCardClick = new UEventCard();
        }
    }
Exemple #6
0
    public void Marigan(SyncDeckInfo syncData)
    {
        Clear();

        foreach (int yamahudaID in syncData.yamahuda)
        {
            if (yamahudaID == -1)
            {
                break;
            }
            yamahuda.Add(CardDataBase.GetCardData(yamahudaID));
        }

        cardObjectManager.Marigan(yamahuda.ToArray());
    }
Exemple #7
0
    public void Sync(SyncDeckInfo syncData)
    {
        Clear();
        //foreach (int handID in syncData.hand)
        //{
        //    if (handID == -1) break;
        //    hand.Add(CardDataBase.GetCardData(handID));
        //}
        foreach (int yamahudaID in syncData.yamahuda)
        {
            if (yamahudaID == -1)
            {
                break;
            }
            // ★★★嫌な予感がする…(参照)
            //var cardData = new CardData();
            //cardData = CardDataBase.GetCardData(yamahudaID);
            //var abilityData = cardData.GetAbilityData();
            //if(abilityData != null)
            //{
            //    abilityData.SetMyPlayerFlag(player.isMyPlayer);
            //}

            var cardData = CardDataBase.GetCardData(yamahudaID);
            yamahuda.Add(cardData);
        }
        //foreach (int bochiID in syncData.bochi)
        //{
        //    if (bochiID == -1) break;
        //    bochi.Add(CardDataBase.GetCardData(bochiID));
        //}
        //foreach (int tuihouID in syncData.tuihou)
        //{
        //    if (tuihouID == -1) break;
        //    tsuihou.Enqueue(CardDataBase.GetCardData(tuihouID));
        //}

        // 向こうから来るやつにつかう
        cardObjectManager.SetDeckData(yamahuda.ToArray(), player.isMyPlayer);

        // その情報をもとにカードオブジェクト更新
        //cardObjectManager.UpdateHand(hand, player);
        //cardObjectManager.UpdateYamahuda(yamahuda, player);
    }
Exemple #8
0
    public void SetDeckData(PlayerDeckData deckData, bool updateCardObject = true)
    {
        Clear();

        int[] cardID = deckData.GetArray();
        // デッキデータを山札に入れていく
        foreach (int id in cardID)
        {
            if (id != (int)IDType.NONE)
            {
                //// ★★★嫌な予感がする…(参照)
                //var cardData = new CardData();
                //cardData = CardDataBase.GetCardData(id);
                //var abilityData = cardData.GetAbilityData();
                //if (abilityData != null)
                //{
                //    abilityData.SetMyPlayerFlag(player.isMyPlayer);
                //}

                var cardData = CardDataBase.GetCardData(id);
                yamahuda.Add(cardData);

                //// 所持効果持ちファイターを保存
                //if (cardData.cardType == CardType.AbilityFighter )
                //{
                //    haveAbilityCards.Add(cardData);
                //}
            }
        }
        //foreach (CardData card in deckData.eventCards)
        //{
        //    if (card == null) continue;
        //    yamahuda.Enqueue(card);
        //}
        //yamahuda.Enqueue(deckData.jorkerCard);
        // 山札シャッフル
        Shuffle(ref yamahuda);

        if (updateCardObject)
        {
            cardObjectManager.SetDeckData(yamahuda.ToArray(), player.isMyPlayer);
        }
    }
Exemple #9
0
    public void SarchAbilityCards(PlayerDeckData deckData)
    {
        haveAbilityCards.Clear();

        int[] cardID = deckData.GetArray();

        // デッキデータを山札に入れていく
        foreach (int id in cardID)
        {
            if (id != (int)IDType.NONE)
            {
                var cardData = CardDataBase.GetCardData(id);

                // 所持効果持ちファイターを保存
                if (cardData.cardType == CardType.AbilityFighter)
                {
                    haveAbilityCards.Add(cardData);
                }
            }
        }
    }
Exemple #10
0
    // 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;
    }
Exemple #11
0
    // ライン変更
    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();
    }
    static void Main(string[] args)
    {
        CardDataBase DataBase = new CardDataBase();
        GameDataBase GameBase = new GameDataBase();
        GameState    State;
        Best         BestPlays = new Best();

        Rate(DataBase);

        // GameLoop
        while (true)
        {
            State = new GameState(new PlayerStats(Console.ReadLine().Split(' ')),
                                  new PlayerStats(Console.ReadLine().Split(' ')));
            State.opponent.setHand(int.Parse(Console.ReadLine()));

            Globals.startTime = new Stopwatch();
            Globals.startTime.Start();

            int CardCount = int.Parse(Console.ReadLine());

            // Draft
            if (State.player.Mana == 0)
            {
                GameBase.DraftPicks.Add(new Pick(GameBase,
                                                 new Card(Console.ReadLine().Split(' ')),
                                                 new Card(Console.ReadLine().Split(' ')),
                                                 new Card(Console.ReadLine().Split(' '))));
            }
            // Battle
            else
            {
                for (int i = 0; i < CardCount; i++)
                {
                    Card card = new Card(Console.ReadLine().Split(' '));

                    switch (card.Location)
                    {
                    case -1:
                        State.EnemyBoard.Add(new Unit(card, true));
                        break;

                    case 0:
                        State.MyHand.Add(card);
                        break;

                    case 1:
                        State.MyBoard.Add(new Unit(card, true));
                        break;

                    default:
                        Console.Error.WriteLine("Data loading error ##########1");
                        break;
                    }
                }
                BestPlays.Clear();
                State.EvalState();

                SearchAll(State, BestPlays);

                BestPlays.GetBestState();
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        gameplay = this;

        _MainCamera = (Camera)gameObject.GetComponent("Camera");

        _SelectionListWindow = new SelectionListWindow(Screen.width / 2, Screen.height / 2 + 100);

        _AbilityManagerList = new SelectionListGenericWindow(Screen.width / 2, Screen.height / 2 + 100);

        _SelectionCardNameWindow = new SelectionCardNameWindow(Screen.width / 2 - 50, Screen.height / 2);
        _SelectionCardNameWindow.CreateCardList();
        _SelectionCardNameWindow.SetGame(this);

        _DecisionWindow = new DecisionWindow(Screen.width / 2, Screen.height / 2 + 100);
        _DecisionWindow.SetGame(this);

        _NotificationWindow = new NotificacionWindow(Screen.width / 2, Screen.height / 2 + 100);
        _NotificationWindow.SetGame(this);

        FromHandToBindList = new List<Card>();

        AttackedList = new List<Card>();

        UnitsCalled = new List<Card>();

        EnemySoulBlastQueue = new List<Card>();

        _PopupNumber = new PopupNumber();

        _MouseHelper = new MouseHelper(this);
        GameChat = new Chat();

        opponent = PlayerVariables.opponent;

        playerHand = new PlayerHand();
        enemyHand = new EnemyHand();

        field = new Field(this);
        enemyField = new EnemyField(this);
        guardZone = new GuardZone();
        guardZone.SetField(field);
        guardZone.SetEnemyField(enemyField);
        guardZone.SetGame(this);

        fieldInfo = new FieldInformation();
        EnemyFieldInfo = new EnemyFieldInformation();

        Data = new CardDataBase();
        List<CardInformation> tmpList = Data.GetAllCards();
        for(int i = 0; i < tmpList.Count; i++)
        {
            _SelectionCardNameWindow.AddNewNameToTheList(tmpList[i]);
        }

        //camera = (CameraPosition)GameObject.FindGameObjectWithTag("MainCamera").GetComponent("CameraPosition");
        //camera.SetLocation(CameraLocation.Hand);

        LoadPlayerDeck();
        LoadEnemyDeck();

        gamePhase = GamePhase.CHOOSE_VANGUARD;

        bDrawing = true;
        bIsCardSelectedFromHand = false;
        bPlayerTurn = false;

        bDriveAnimation = false;
        bChooseTriggerEffects = false;
        DriveCard = null;

        //Texture showed above a card when this is selected for an action (An attack, for instance)
        CardSelector = GameObject.FindGameObjectWithTag("CardSelector");
        _CardMenuHelper = (CardHelpMenu)GameObject.FindGameObjectWithTag("CardMenuHelper").GetComponent("CardHelpMenu");
        _GameHelper = (GameHelper)GameObject.FindGameObjectWithTag("GameHelper").GetComponent("GameHelper");

        bPlayerTurn = PlayerVariables.bFirstTurn;

        //ActivePopUpQuestion(playerDeck.DrawCard());
        _CardMenu = new CardMenu(this);

        _AbilityManager = new AbilityManager(this);
        _AbilityManagerExt = new AbilityManagerExt();

        _GameHelper.SetChat(GameChat);
        _GameHelper.SetGame(this);

        EnemyTurnStackedCards = new List<Card>();

        dummyUnitObject = new UnitObject();
        dummyUnitObject.SetGame(this);

        stateDynamicText = new DynamicText();
    }