Пример #1
0
    /// <summary>
    /// 手札から罠を伏せる処理
    /// </summary>
    /// <param name="card">伏せるカード</param>
    /// <returns>処理が成功したか</returns>
    public bool CardSet(Card card)
    {
        //カードがどちらのプレイヤーのものか判別
        Player caster = FindCardHolder(card);

        if (!caster)
        {
            //Debug.LogAssertion("カードを使用するプレイヤーが不明です");
            return(false);
        }
        //カードの使用先を確認
        CardZone zone = caster.GetSupportZone();

        if (zone.isAddCard() && zone.AddCard(card))
        {
            card.SetIsSet(true);
            //Debug.Log(card + "を" + zone.name + "にセット");
        }
        else
        {
            Debug.Log("罠の使用に失敗しました");
            caster.GetHandZone().SortUpdate();
        }
        return(true);
    }
Пример #2
0
    /// <summary>
    /// カードがクリックされた際に呼び出される、ボタンを表示する処理
    /// </summary>
    public void CardClick(Card card)
    {
        CardRemove();

        /*gameObject.SetActive(true);
        *  gameObject.transform.position = card.transform.position;
        *  dataButton.SetActive(true);*/
        this.card = card;
        effectButton.SetActive(false);
        dispButton.SetActive(false);
        if (Constants.BATTLE.FindCardHolder(card) != null && Constants.BATTLE.FindCardHolder(card).isAI)
        {
        }
        else
        {
            effectButton.SetActive(card.isActiveEffectPlay());
            CardZone zone = Constants.BATTLE.FindCardStayZone(card);
            if (zone != null)
            {
                System.Type type = zone.GetType();
                if (type == typeof(SupportManager) || type == typeof(UnitManager))
                {
                    dispButton.SetActive(true);
                }
            }
        }
        DataButtonClick();
    }
Пример #3
0
    public CardMoved AddCard(Card card, CardZone zone = CardZone.Deck)
    {
        card.Zone = (zone == CardZone.Deck) ? CardZone.Deck : zone;
        Cards.Add(card);

        return(new CardMoved(card, CardZone.Deck, zone));
    }
Пример #4
0
    public CardMoved MoveCard(Card card, CardZone zone)
    {
        var from = card.Zone;
        var to   = card.Zone = zone;

        return(new CardMoved(card, from, to));
    }
        private void OnAddCardModel(CardZone cardZone, CardModel cardModel)
        {
            cardModel.transform.rotation = Quaternion.identity;
            cardModel.IsFacedown         = false;
            cardModel.DefaultAction      = CardActions.Flip;

            var cardModels = contentCardZone.GetComponentsInChildren <CardModel>();

            countLabel.text = cardModels.Length.ToString();

            if (_handIndex != null)
            {
                CgsNetManager.Instance.LocalPlayer.RequestSyncHand((int)_handIndex,
                                                                   cardModels.Select(card => card.Id).ToArray());
            }

            if (_cardStack == null)
            {
                return;
            }

            var cardCount = cardZone.GetComponentsInChildren <CardModel>().Length;
            var cardIndex = cardCount - 1 - cardModel.transform.GetSiblingIndex();

            if (CgsNetManager.Instance.isNetworkActive)
            {
                CgsNetManager.Instance.LocalPlayer.RequestInsert(_cardStack.gameObject, cardIndex, cardModel.Id);
            }
            else
            {
                _cardStack.Insert(cardIndex, cardModel.Id);
            }
        }
        private void OnRemoveCardModel(CardZone cardZone, CardModel cardModel)
        {
            var cardModels = contentCardZone.GetComponentsInChildren <CardModel>();

            countLabel.text = cardModels.Length.ToString();

            if (_handIndex != null)
            {
                CgsNetManager.Instance.LocalPlayer.RequestSyncHand((int)_handIndex,
                                                                   cardModels.Select(card => card.Id).ToArray());
            }

            if (_cardStack == null)
            {
                return;
            }

            if (CgsNetManager.Instance.isNetworkActive)
            {
                CgsNetManager.Instance.LocalPlayer.RequestRemoveAt(_cardStack.gameObject, cardModel.Index);
            }
            else
            {
                _cardStack.RemoveAt(cardModel.Index);
            }
        }
Пример #7
0
 public void Activate(CardZone zoneToMonitor,
                      string formattedDisplayString = "{0} Cards")
 {
     monitoredZone = zoneToMonitor;
     displayString = formattedDisplayString;
     gameObject.SetActive(true);
 }
Пример #8
0
            public PlayerZones(int playerIndex, Style.IStyleContainer parent, XElement styleDefinition)
            {
                var layout = new Style.LayoutGizmo<UI.TransformNode>(parent, styleDefinition);
                layout.Initialize();
                layout.Target.Dispatcher = parent.Target;
                layout.BindingProvider = this;
                UIStyle = layout;
                PlayerIndex = playerIndex;

                m_manaTextEvaluator = GameApp.Service<GameManager>().CreateGameEvaluator(game =>
                {
                    var player = game.Players[PlayerIndex];
                    return player.Mana != 0 || player.MaxMana != 0
                           ? player.Mana.ToString() + "/" + player.MaxMana.ToString()
                           : "0";
                }, "-");

                Library = new CardZone(UIStyle.ChildIds["Library"]);
                Hand = new CardZone(UIStyle.ChildIds["Hand"]);
                Sacrifice = new CardZone(UIStyle.ChildIds["Sacrifice"]);
                Battlefield = new CardZone(UIStyle.ChildIds["Battlefield"]);
                Hero = new CardZone(UIStyle.ChildIds["Hero"]);
                Assists = new CardZone(UIStyle.ChildIds["Assists"]);
                Graveyard = new CardZone(UIStyle.ChildIds["Graveyard"]);
            }
Пример #9
0
 //カードゾーンからマウスが離れた時
 public void RemovePointerCardZone(CardZone zone)
 {
     if (pointerCardZone == zone)
     {
         pointerCardZone = null;
     }
 }
Пример #10
0
    /// <summary>
    /// 手札から対象のカードを使用する処理
    /// </summary>
    /// <param name="card">使用するカード</param>
    /// <param name="target">カードの使用対象</param>
    /// <returns>使用が成功したか否か</returns>
    public bool CardPlay(Card card, GameObject target = null)
    {
        //カードがどちらのプレイヤーのものか判別
        Player caster = FindCardHolder(card);

        if (!caster)
        {
            //Debug.Log("カードを使用するプレイヤーが不明です");
            return(false);
        }

        //カードの使用先を確認
        CardZone zone = FindCardPlayZone(card, caster);

        if (zone.isAddCard())
        {
            zone.AddCard(card);
        }

        //カードの使用イベントをスタックに追加
        new CardPlayBlock(card, caster, target).AddBlock();

        //Debug.Log(card +  "が" + zone.name + "へ移動");
        return(true);
    }
Пример #11
0
 public CardZoneMaster GetCardZoneMaster(CardZone cardZone)
 {
     if (_cardZones.TryGetValue(cardZone, out CardZoneMaster cardZoneMaster))
     {
         return(cardZoneMaster);
     }
     return(null);
 }
Пример #12
0
 private void ActivatePanel(MonsterCard monster, CardZone targetZone = null)
 {
     gameObject.SetActive(true);
     this.monster    = monster;
     this.targetZone = targetZone;
     GetComponent <RectTransform>().position =
         Input.mousePosition + new Vector3(-20, -20);
 }
Пример #13
0
    public void Initialize()
    {
        Deck    = new CardZone();
        Hand    = new CardZone();
        Discard = new CardZone();

        DemoInit();
    }
Пример #14
0
    static public CardZone Create_CardZone(CardZone.ZoneType zoneType, int zoneSize)
    {
        var newCardZone = new CardZone();

        newCardZone.ZoneCards = new List <Card>();
        newCardZone.ZoneSize  = zoneSize;

        return(newCardZone);
    }
Пример #15
0
    private void CardSort(CardZone zone)
    {
        ICardSort sort = zone.GetComponent <ICardSort>();

        if (sort != null)
        {
            sort.SortUpdate();
        }
    }
Пример #16
0
        public void MoveCardToServer(CardZone cardZone, CardModel cardModel)
        {
            Transform cardModelTransform = cardModel.transform;

            cardModelTransform.SetParent(cardZone.transform);
            cardModel.position = ((RectTransform)cardModelTransform).anchoredPosition;
            cardModel.rotation = cardModelTransform.rotation;
            CmdSpawnCard(cardModel.Id, cardModel.position, cardModel.rotation, cardModel.isFacedown);
            Destroy(cardModel.gameObject);
        }
Пример #17
0
    private CardZoneUI CreateZoneUI(CardZone zone, string name, Transform globalCanvasTransform, bool isRight)
    {
        float direction     = (isRight) ? 1f : -1f;
        var   newCardZoneUI = MonoBehaviour.Instantiate(CardZoneUIPrefab) as CardZoneUI;

        newCardZoneUI.transform.SetParent(globalCanvasTransform, false);
        newCardZoneUI.transform.position = new Vector2(globalCanvasTransform.localPosition.x + (8f * direction), (globalCanvasTransform.localPosition.y - 2.5f));
        newCardZoneUI.Initialize(zone, name);
        return(newCardZoneUI);
    }
Пример #18
0
    public bool MoveCard(CardZone dest, string id)
    {
        Card card = GetCard(id);

        if (card == null || !RemoveCard(id))
        {
            return(false);
        }
        return(dest.AddCard(card));
    }
Пример #19
0
 //このphaseの開始
 public void PhaseStart()
 {
     pointerCardZone = null;
     pointerCard     = null;
     draggingCard    = null;
     //oldDraggingCard = null;
     cardHoldZone = null;
     //Debug.Log("mainStart");
     activePlayer = Constants.BATTLE.GetActivePlayer();
     activePlayer.playerImage.SetIsActive(true);
 }
Пример #20
0
 private static void AddCardToPlay(CardZone cardZone, CardModel cardModel)
 {
     if (NetworkManager.singleton.isNetworkActive)
     {
         CgsNetManager.Instance.LocalPlayer.MoveCardToServer(cardZone, cardModel);
     }
     else
     {
         SetPlayActions(cardModel);
     }
 }
Пример #21
0
        private void AddCard(CardZone cardZone, ICard card)
        {
            var overlayCardType = (cardZone.Location == CardZoneLocation.Top) ? OverlayCardType.TopCardZone : OverlayCardType.BottomCardZone;

            var newOverlayCard = new OverlayCardViewModel(_configuration, overlayCardType)
            {
                Card = card
            };

            _overlayCards.AddOverlayCard(newOverlayCard);
        }
Пример #22
0
        public void Update(CardZone cardZone)
        {
            _logger.LogMessage($"Updating {_currentlyDisplayedCardZone.Name} in overlay.");

            if (!IsShowingCardZone(cardZone))
            {
                ClearCurrentlyDisplayedCardZone();
            }

            RemoveOverlayCardsNotInZone(cardZone);
            AddNewOverlayCards(cardZone);
        }
Пример #23
0
    /// <summary>
    /// 引数のカードゾーンを持つプレイヤーを確認する処理
    /// </summary>
    /// <param name="zone">対象のカードゾーン</param>
    /// <returns>プレイヤー、見つからなければnull</returns>
    public Player FindCardZoneHolder(CardZone zone)
    {
        foreach (Player p in Players)
        {
            if (p.isHaveZone(zone))
            {
                return(p);
            }
        }

        return(null);
    }
Пример #24
0
 public void UnhighlightZone(CardZone zone)
 {
     if (activeZoneHighlights.ContainsKey(zone))
     {
         Destroy(activeZoneHighlights[zone]);
         activeZoneHighlights.Remove(zone);
     }
     else
     {
         Debug.Log("Zone is not highlighted");
     }
 }
Пример #25
0
    static public Board Create_Board(CardZone playerDeck1, CardZone playerDeck2)
    {
        var newBoard = new Board();

        newBoard.Player1 = PlayerManager.Create_Player(playerDeck1, "Player1");
        newBoard.Player2 = PlayerManager.Create_Player(playerDeck2, "Player2");

        newBoard.CurrentPhase  = Board.BoardTurnPhase.Preparation_Phase;
        newBoard.CurrentPlayer = newBoard.Player1;

        return(newBoard);
    }
Пример #26
0
 public static SelectPileActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost, CardZone destination)
 {
     return new SelectPileActivity(log, player, string.Format("Select a card to gain of cost {0} or less", cost),
                                   SelectionSpecifications.SelectPileCostingUpToX(cost))
     {
         AfterPileSelected = pile =>
         {
             var card = pile.TopCard;
             card.MoveTo(destination);
             log.LogGain(player, card);
         }
     };
 }
Пример #27
0
        private void ClearCurrentlyDisplayedCardZone()
        {
            if (_currentlyDisplayedCardZone == null)
            {
                return;
            }

            _logger.LogMessage($"Hiding {_currentlyDisplayedCardZone.Name} in overlay.");
            _currentlyDisplayedCardZone.IsDisplayedOnOverlay = false;
            _currentlyDisplayedCardZone = null;

            _overlayCards.RemoveOverlayCards(_overlayCards.ToArray());
        }
Пример #28
0
        private void OnAddCardModel(CardZone cardZone, CardModel cardModel)
        {
            if (cardZone == null || cardModel == null)
            {
                return;
            }

            cardModel.SecondaryDragAction = cardModel.UpdateParentCardZoneScrollRect;
            cardModel.DoubleClickAction   = DestroyCardModel;

            Consolidate();
            UpdateDeckStats();
        }
Пример #29
0
        private void RemoveOverlayCardsNotInZone(CardZone cardZone)
        {
            var overlayCardsToRemove = new List <OverlayCardViewModel>();

            foreach (var overlayCard in _overlayCards)
            {
                if (!cardZone.Cards.Contains(overlayCard.Card))
                {
                    overlayCardsToRemove.Add(overlayCard);
                }
            }
            _overlayCards.RemoveOverlayCards(overlayCardsToRemove.ToArray());
        }
Пример #30
0
        private void AddNewOverlayCards(CardZone cardZone)
        {
            foreach (var card in cardZone.Cards)
            {
                if (!_overlayCards.Any(x => x.Card == card))
                {
                    AddCard(cardZone, card);
                }
            }

            _currentlyDisplayedCardZone = cardZone;
            _currentlyDisplayedCardZone.IsDisplayedOnOverlay = true;
        }
Пример #31
0
        private void AddCard(UnityCard card)
        {
            if (card == null)
            {
                return;
            }

            CardZone cardZone  = CardZones.Last();
            var      cardModel = Instantiate(cardModelPrefab, cardZone.transform).GetOrAddComponent <CardModel>();

            cardModel.Value = card;

            OnAddCardModel(cardZone, cardModel);
        }
Пример #32
0
 void Awake()
 {
     if (cardZone == null)
     {
         cardZone = transform.parent.GetComponent <CardZone>();
         if (cardZone == null)
         {
             Destroy(this);
         }
     }
     //最前面で固定する
     GetComponent <FixedLayer>().layer = 100;
     text = GetComponent <Text>();
 }
Пример #33
0
 public static SelectPileActivity GainACardCostingExactlyX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new SelectPileActivity(log, player, string.Format("Select a card to gain with a cost of exactly {0}", cost),
                                   SelectionSpecifications.SelectPileCostingExactlyX(cost), source)
     {
         AfterPileSelected = pile =>
         {
             var card = pile.TopCard;
             card.MoveTo(destination);
             log.LogGain(player, card);
         },
         Hint = ActivityHint.GainCards
     };
 }
Пример #34
0
 public static GainACardActivity GainACardCostingExactlyX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new GainACardActivity(log, player,
                                  string.Format("Select a card to gain with a cost of exactly {0}.", cost),
                                  SelectionSpecifications.SelectPileCostingExactlyX(cost), destination, source);
 }
Пример #35
0
 public static GainACardActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new GainACardActivity(log, player, string.Format("Select a card to gain of cost {0} or less.", cost),
                                  SelectionSpecifications.SelectPileCostingUpToX(cost), destination, source);
 }
Пример #36
0
 public GainACardActivity(IGameLog log, Player player, string message, ISelectionSpecification specification, CardZone destination, ICard source) 
     : base(log, player, message, specification, source)
 {
     _destination = destination;
     Hint = ActivityHint.GainCards;
 }
Пример #37
0
        private void InitializeCardZonesOnGameCreated(int numPlayers)
        {
            var world3D = InGameUIPage.Style.ChildIds["World3D"];

            m_playerZones = new PlayerZones[numPlayers];
            for (int i = 0; i < numPlayers; ++i)
            {
                m_playerZones[i] = new PlayerZones(i, world3D, GameApp.Service<Styler>().GetPlayerZonesStyle());
            }

            m_actingLocalPlayerHandZone = new CardZone(InGameUIPage.Style.ChildIds["Game.ActingLocalPlayer.Hand"]);
            m_zoomedInZone = new ZoomedInZone(InGameUIPage.Style.ChildIds["ZoomedIn"]);
        }