public override void InitializeLayer(IObject2DFactory factory) { base.InitializeLayer(factory); this.LevelTurnPhase = TurnPhase.VOID; BoardBannerLayer boardBannerLayer = this.parentLayer as BoardBannerLayer; this.headerEntity2D = new HeaderEntity2D(this, boardBannerLayer.Player, boardBannerLayer.Opponent); this.scoreDomainLabel2D = new ScoreDomainLabel2D(this, boardBannerLayer.Player, boardBannerLayer.Opponent); this.turnBanner2D.ResetTurn(boardBannerLayer.MaxTurnCount); this.cardsToPlaceBanner2D.ResetTurn(); this.domainToolTip.HideToolTip(); this.cardFocused = null; this.domainLayerFocused = null; this.cardFocusedLayers.Clear(); this.domainsLayers.Clear(); this.scoreLayers.Clear(); if (this.world2D.TryGetTarget(out World2D world2D)) { foreach (ALayer2D layer in world2D.LayersList) { ICardFocusedLayer cardFocusedLayer = layer as ICardFocusedLayer; if (cardFocusedLayer != null) { this.cardFocusedLayers.Add(cardFocusedLayer); } IDomainsLayer domainLayer = layer as IDomainsLayer; if (domainLayer != null) { this.domainsLayers.Add(domainLayer); domainLayer.StartDomainEvaluated += OnStartDomainsEvaluated; domainLayer.DomainEvaluated += OnDomainEvaluated; domainLayer.EndDomainEvaluated += OnEndDomainsEvaluated; domainLayer.DomainFocusedChanged += OnDomainFocusedChanged; domainLayer.NbCardsToPlaceChanged += OnNbCardsToPlaceChanged; } IScoreLayer scoreLayer = layer as IScoreLayer; if (scoreLayer != null) { this.scoreLayers.Add(scoreLayer.PlayerName, scoreLayer); } } } }
private void UpdateFocusedEntity(Time deltaTime) { ICardFocusedLayer firstCardLayerFocused = this.cardFocusedLayers.FirstOrDefault(pElem => pElem.CardFocused != null); ALayer2D layer2D = firstCardLayerFocused as ALayer2D; if (firstCardLayerFocused != null) { CardEntity2D cardFocused = firstCardLayerFocused.CardFocused; if (this.cardFocused != cardFocused) { CardEntity cardEntity = layer2D.GetEntityFromEntity2D(cardFocused) as CardEntity; this.cardToolTip.DisplayToolTip(cardEntity.Card, cardFocused); this.cardFocused = cardFocused; } if (this.cardToolTip.IsActive) { Vector2f cardFocusedPosition = this.cardFocused.Position; Vector2f cardPositionInWindow = layer2D.GetPositionInWindow(cardFocusedPosition); if (cardPositionInWindow.Y > this.defaultViewSize.Y / 2) { cardFocusedPosition.Y -= this.cardFocused.Canevas.Height / 2; cardFocusedPosition = this.GetPositionInScene(layer2D.GetPositionInWindow(cardFocusedPosition)); cardFocusedPosition.X -= this.cardToolTip.Canevas.Width / 2; cardFocusedPosition.Y -= this.cardToolTip.Canevas.Height; } else { cardFocusedPosition.Y += this.cardFocused.Canevas.Height / 2; cardFocusedPosition = this.GetPositionInScene(layer2D.GetPositionInWindow(cardFocusedPosition)); cardFocusedPosition.X -= this.cardToolTip.Canevas.Width / 2; } this.cardToolTip.Position = cardFocusedPosition; } } else { this.cardToolTip.HideToolTip(); this.cardFocused = null; } if (this.domainToolTip.IsActive) { Vector2f mousePositionInWindow = this.domainLayerFocused.GetPositionInWindow(new Vector2f(this.domainLayerFocused.MousePosition.X, this.domainLayerFocused.MousePosition.Y)); Vector2f domainTooltipPosition = this.GetPositionInScene(mousePositionInWindow); if (mousePositionInWindow.Y > this.defaultViewSize.Y / 2) { domainTooltipPosition.Y -= this.domainToolTip.Canevas.Height; } //domainTooltipPosition.X -= this.domainToolTip.Canevas.Width / 2; this.domainToolTip.Position = domainTooltipPosition; this.domainToolTip.UpdateGraphics(deltaTime); } }