Esempio n. 1
0
        private void HandlePickState(Dictionary <EventType, List <GameEvent> > gameEvents)
        {
            BoardPlayerLayer.BoardPlayerLayer currentPlayerLayer = this.NodeLevel.GetLayerFromPlayer(this.OwnerCardEntity.Card.CurrentOwner);

            if (gameEvents.TryGetValue(EventType.NEXT_BEHAVIOR, out List <GameEvent> gameEventsNextBehavior))
            {
                if (gameEventsNextBehavior.Any())
                {
                    this.IsActive = false;
                    this.mustNotifyBehaviorEnd = true;
                    return;
                }
            }

            if (gameEvents.TryGetValue(EventType.FOCUS_CARD_HAND, out List <GameEvent> gameEventsFocused))
            {
                CardEntity cardEntity         = null;
                bool       encounterGameEvent = false;

                foreach (GameEvent gameEvent in gameEventsFocused)
                {
                    if (gameEvent.Layer == currentPlayerLayer)
                    {
                        if (cardEntity == null ||
                            gameEvent.Entity != null)
                        {
                            cardEntity = gameEvent.Entity as CardEntity;

                            encounterGameEvent = true;
                        }
                    }
                }

                if (encounterGameEvent)
                {
                    this.NodeLevel.BoardGameLayer.CardEntityFocused   = null;
                    this.NodeLevel.BoardGameLayer.DomainEntityFocused = null;

                    currentPlayerLayer.CardEntityFocused = cardEntity;
                }
            }

            if (gameEvents.TryGetValue(EventType.PICK_CARD, out List <GameEvent> gameEventsPicks))
            {
                GameEvent boardGameEvent = gameEventsPicks.FirstOrDefault(pElem => pElem.Layer == currentPlayerLayer && pElem.Entity != null);

                if (boardGameEvent != null)
                {
                    CardEntity cardToRemove = boardGameEvent.Entity as CardEntity;

                    this.FromCardEntities.Remove(cardToRemove);

                    this.NodeLevel.PickCard(currentPlayerLayer, cardToRemove);

                    this.CardBehaviorOwner.OnBehaviorCardPicked(this, this.NodeLevel.BoardGameLayer.CardEntityPicked);

                    this.State = ResurrectState.SOCKET_CARD;
                }
            }
        }
Esempio n. 2
0
        public override void EndNotif(World world)
        {
            base.EndNotif(world);

            //this.FromStarEntities.Clear();
            this.FromCardEntities.Clear();
            this.ToStarEntities.Clear();

            BoardPlayerLayer.BoardPlayerLayer currentPlayerLayer = this.NodeLevel.GetLayerFromPlayer(this.OwnerCardEntity.Card.CurrentOwner);

            currentPlayerLayer.SetBehaviorSourceCardEntities(this.FromCardEntities);
            this.NodeLevel.BoardGameLayer.SetBehaviorTargetStarEntities(this.ToStarEntities);
            //this.NodeLevel.BoardGameLayer.SetBehaviorSourceStarEntities(this.FromStarEntities);

            currentPlayerLayer.CardPileFocused = BoardPlayerLayer.BoardPlayerLayer.PileFocused.NONE;
        }
Esempio n. 3
0
        public int GetNbDeadCard(Player.Player player)
        {
            BoardPlayerLayer.BoardPlayerLayer playerLayer = (this.ownerLevelNode as CardBoardLevel).BoardPlayersList.FirstOrDefault(pElem => pElem.SupportedPlayer == player);

            return(playerLayer.CardsCemetery.Count);
        }
Esempio n. 4
0
        private void HandleSocketState(Dictionary <EventType, List <GameEvent> > gameEvents)
        {
            BoardPlayerLayer.BoardPlayerLayer currentPlayerLayer = this.NodeLevel.GetLayerFromPlayer(this.OwnerCardEntity.Card.CurrentOwner);

            if (gameEvents.TryGetValue(EventType.SOCKET_CARD, out List <GameEvent> gameEventsSocket))
            {
                GameEvent socketEvent = gameEventsSocket.FirstOrDefault();

                if (socketEvent != null)
                {
                    StarEntity starEntity = socketEvent.Entity as StarEntity;

                    if (this.ToStarEntities.Contains(starEntity))
                    {
                        this.ExecuteBehavior(starEntity);

                        this.NbBehaviorUse--;
                        this.NodeLevel.BoardNotifLayer.NotifyNotifBehaviorUseChanged(this.NbBehaviorUse);

                        this.mustNotifyBehaviorEnd = true;
                        return;
                    }
                }
            }

            if (gameEvents.TryGetValue(EventType.PICK_CARD, out List <GameEvent> gameEventsPicks))
            {
                GameEvent nullPickEvent   = gameEventsPicks.FirstOrDefault(pElem => pElem.Layer == currentPlayerLayer && pElem.Entity == null);
                GameEvent entityPickEvent = gameEventsPicks.FirstOrDefault(pElem => pElem.Layer == currentPlayerLayer && pElem.Entity != null);

                if (nullPickEvent != null)
                {
                    CardEntity cardToAdd = NodeLevel.UnpickCard(currentPlayerLayer, nullPickEvent.Details);

                    this.FromCardEntities.Add(cardToAdd);

                    this.State = ResurrectState.PICK_CARD;
                }

                if (entityPickEvent != null)
                {
                    CardEntity cardToRemove = entityPickEvent.Entity as CardEntity;

                    this.FromCardEntities.Remove(cardToRemove);

                    this.NodeLevel.PickCard(currentPlayerLayer, cardToRemove);

                    this.CardBehaviorOwner.OnBehaviorCardPicked(this, this.NodeLevel.BoardGameLayer.CardEntityPicked);

                    this.State = ResurrectState.SOCKET_CARD;
                }
            }

            if (gameEvents.TryGetValue(EventType.NEXT_BEHAVIOR, out List <GameEvent> gameEventsNextBehavior))
            {
                if (gameEventsNextBehavior.Any())
                {
                    this.IsActive = false;
                    this.mustNotifyBehaviorEnd = true;
                    return;
                }
            }
        }