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 OnDomainFocusedChanged(IDomainsLayer obj)
        {
            this.domainLayerFocused = obj as ALayer2D;

            if (obj.DomainFocused != null)
            {
                CJStarDomain     domainFocused     = (obj as ALayer2D).GetEntityFromEntity2D(obj.DomainFocused) as CJStarDomain;
                BoardBannerLayer parentBannerLayer = this.parentLayer as BoardBannerLayer;

                this.domainToolTip.DisplayToolTip(domainFocused, parentBannerLayer.Player, parentBannerLayer.Opponent);
            }
            else
            {
                this.domainToolTip.HideToolTip();
            }
        }