/// <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); }
/// <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(); }
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)); }
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); } }
public void Activate(CardZone zoneToMonitor, string formattedDisplayString = "{0} Cards") { monitoredZone = zoneToMonitor; displayString = formattedDisplayString; gameObject.SetActive(true); }
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"]); }
//カードゾーンからマウスが離れた時 public void RemovePointerCardZone(CardZone zone) { if (pointerCardZone == zone) { pointerCardZone = null; } }
/// <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); }
public CardZoneMaster GetCardZoneMaster(CardZone cardZone) { if (_cardZones.TryGetValue(cardZone, out CardZoneMaster cardZoneMaster)) { return(cardZoneMaster); } return(null); }
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); }
public void Initialize() { Deck = new CardZone(); Hand = new CardZone(); Discard = new CardZone(); DemoInit(); }
static public CardZone Create_CardZone(CardZone.ZoneType zoneType, int zoneSize) { var newCardZone = new CardZone(); newCardZone.ZoneCards = new List <Card>(); newCardZone.ZoneSize = zoneSize; return(newCardZone); }
private void CardSort(CardZone zone) { ICardSort sort = zone.GetComponent <ICardSort>(); if (sort != null) { sort.SortUpdate(); } }
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); }
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); }
public bool MoveCard(CardZone dest, string id) { Card card = GetCard(id); if (card == null || !RemoveCard(id)) { return(false); } return(dest.AddCard(card)); }
//この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); }
private static void AddCardToPlay(CardZone cardZone, CardModel cardModel) { if (NetworkManager.singleton.isNetworkActive) { CgsNetManager.Instance.LocalPlayer.MoveCardToServer(cardZone, cardModel); } else { SetPlayActions(cardModel); } }
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); }
public void Update(CardZone cardZone) { _logger.LogMessage($"Updating {_currentlyDisplayedCardZone.Name} in overlay."); if (!IsShowingCardZone(cardZone)) { ClearCurrentlyDisplayedCardZone(); } RemoveOverlayCardsNotInZone(cardZone); AddNewOverlayCards(cardZone); }
/// <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); }
public void UnhighlightZone(CardZone zone) { if (activeZoneHighlights.ContainsKey(zone)) { Destroy(activeZoneHighlights[zone]); activeZoneHighlights.Remove(zone); } else { Debug.Log("Zone is not highlighted"); } }
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); }
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); } }; }
private void ClearCurrentlyDisplayedCardZone() { if (_currentlyDisplayedCardZone == null) { return; } _logger.LogMessage($"Hiding {_currentlyDisplayedCardZone.Name} in overlay."); _currentlyDisplayedCardZone.IsDisplayedOnOverlay = false; _currentlyDisplayedCardZone = null; _overlayCards.RemoveOverlayCards(_overlayCards.ToArray()); }
private void OnAddCardModel(CardZone cardZone, CardModel cardModel) { if (cardZone == null || cardModel == null) { return; } cardModel.SecondaryDragAction = cardModel.UpdateParentCardZoneScrollRect; cardModel.DoubleClickAction = DestroyCardModel; Consolidate(); UpdateDeckStats(); }
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()); }
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; }
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); }
void Awake() { if (cardZone == null) { cardZone = transform.parent.GetComponent <CardZone>(); if (cardZone == null) { Destroy(this); } } //最前面で固定する GetComponent <FixedLayer>().layer = 100; text = GetComponent <Text>(); }
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 }; }
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); }
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); }
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; }
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"]); }