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; } } }
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; }
public int GetNbDeadCard(Player.Player player) { BoardPlayerLayer.BoardPlayerLayer playerLayer = (this.ownerLevelNode as CardBoardLevel).BoardPlayersList.FirstOrDefault(pElem => pElem.SupportedPlayer == player); return(playerLayer.CardsCemetery.Count); }
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; } } }