Example #1
0
    private void initCardDisplay(Card card)
    {
        resetDisplay();

        if (cardCanBeDisplayed())
        {
            var cardInfo = card.Template.CardInfo;

            cardName.text     = cardInfo.Name;
            actionPoints.text = card.Template.ActionPts.ToString();

            bool handled = true;
            GameState.GameStateType    stateType      = GameManager.Instance.Game.CurState.StateType;
            List <CardInfo.EffectInfo> cardEffectPair = null;

            switch (stateType)
            {
            case GameState.GameStateType.JurySelection:
                cardEffectPair = cardInfo.JurySelectionInfos;
                break;

            case GameState.GameStateType.TrialInChief:
                cardEffectPair = cardInfo.TrialInChiefInfos;
                break;

            case GameState.GameStateType.Summation:
                cardEffectPair = cardInfo.SummationInfos;
                break;

            default:
                handled = false;
                break;
            }

            if (handled)
            {
                int size = cardEffectPair.Count;
                for (int i = 0; i < size; ++i)
                {
                    CardEventUsageFieldElement eventObj = GameObject.Instantiate(cardEventFieldElementPrefab);
                    eventObj.gameObject.SetActive(true);

                    eventObj.Init(card, stateType, i, cardEffectPair[i], (Game game, Player choosingPlayer) => { return(false); });

                    RectTransform rect = eventObj.GetComponent <RectTransform>();
                    rect.anchorMin = new Vector2(0, 1.0f - (float)(i + 1) / size);
                    rect.anchorMax = new Vector2(1, 1.0f - (float)i / size);

                    eventObj.transform.SetParent(eventFieldParent.transform, false);
                }
            }
        }
    }
    private void updateDisplay(Card card)
    {
        resetDisplay();

        var cardInfo = card.Template.CardInfo;

        typing.text   = cardInfo.Typing;
        cardName.text = cardInfo.Name;
        notes.text    = cardInfo.Notes;
        actionPoints.Init(card);

        GameState.GameStateType[]            stateTypes      = new GameState.GameStateType[] { GameState.GameStateType.JurySelection, GameState.GameStateType.TrialInChief, GameState.GameStateType.Summation };
        List <CardInfo.EffectInfo>[]         cardEffectInfos = new List <CardInfo.EffectInfo>[] { cardInfo.JurySelectionInfos, cardInfo.TrialInChiefInfos, cardInfo.SummationInfos };
        List <CardTemplate.CardEffectPair>[] cardEffectPairs = new List <CardTemplate.CardEffectPair>[] { card.Template.SelectionEvents, card.Template.TrialEvents, card.Template.SummationEvents };
        GameObject[] parentGOs = new GameObject[] { jurySelectionParent, trialInChiefParent, summationParent };

        for (int j = 0; j < stateTypes.Length; ++j)
        {
            List <CardInfo.EffectInfo>         infoList    = cardEffectInfos[j];
            List <CardTemplate.CardEffectPair> effectPairs = cardEffectPairs[j];
            GameObject parentGO = parentGOs[j];
            GameState.GameStateType stateType = stateTypes[j];

            int size = infoList.Count;
            for (int i = 0; i < size; ++i)
            {
                CardEventUsageFieldElement eventObj = GameObject.Instantiate(cardEventFieldElementPrefab);
                eventObj.gameObject.SetActive(true);

                eventObj.Init(card, stateType, i, infoList[i], effectPairs[i].Selectable);

                RectTransform rect = eventObj.GetComponent <RectTransform>();
                rect.anchorMin = new Vector2(0, 1.0f - (float)(i + 1) / size);
                rect.anchorMax = new Vector2(1, 1.0f - (float)i / size);

                eventObj.transform.SetParent(parentGO.transform, false);
            }
        }
    }