예제 #1
0
    IEnumerator PanelPlacementRoutine(ICardManagerModel model)
    {
        yield return(null);

        foreach (CardPanel panel in panels)
        {
            PlacePanel(panel);
            if (!GetOrganizedPanels())
            {
                // To fix a bug where panels get 0 width + height
                UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(panel.rectTransform);
            }
        }
        yield return(null);

        if (GetOrganizedPanels())
        {
            foreach (CardPanel panel in panels)
            {
                panel.SetUseMetadata(null);
            }
            // To fix a bug where horizontal layout group is not laid out properly
            UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(panelParent);
        }
    }
예제 #2
0
    IEnumerator RefreshPanelsLayoutRoutine(ICardManagerModel model)
    {
        ViewState view = model.GetViewState();

        if (view.IsValid())
        {
            SetOrganizedPanels(!view.customLayout);
        }
        else
        {
            SetOrganizedPanels(true);
        }

        yield return(PanelPlacementRoutine(model));

        if (view.IsValid())
        {
            zoomableRect.SetCanvasScale(view.scale);
            zoomableRect.SetAbsolutePosition(view.viewPosition);
        }
        else
        {
            ZoomOutToAllPanels();
        }

        ShowPanelCanvas();
    }
예제 #3
0
 void SetModel(ICardManagerModel newModel)
 {
     if (this.model == newModel)
     {
         return;
     }
     if (this.model != null)
     {
         this.model.Dispose();
     }
     this.model = newModel;
 }
예제 #4
0
    void OpenContent(VoosActor actor)
    {
        bool actorChanged = actor != this.actor;

        SetActor(actor);
        if (actorChanged)
        {
            onActorChanged?.Invoke(actor);
        }
        ICardManagerModel model = behaviorCards.GetCardManager(actor);

        cardManager.Close();
        cardManager.Open(model);
    }
예제 #5
0
    public void Open(ICardManagerModel model)
    {
        gameObject.SetActive(true);
        SetModel(model);

        panelManager.ClearPanels();
        ClearPanelNotes();
        foreach (var item in model.GetAssignedPanels())
        {
            panelManager.AddPanel(item, false /*from library */, false /*dragged on */);
        }
        panelManager.RefreshPanelsLayout(model);

        Update();
    }
예제 #6
0
    internal void SetupPanelPlacementAndNotes(ICardManagerModel model)
    {
        // ViewState vs = model.GetViewState();

        /* if (vs.IsValid())
         * {
         * addPanelRect.anchoredPosition = vs.addPanelPosition;
         * }
         * else
         * {
         * addPanelRect.anchoredPosition = Vector2.zero;
         * } */

        cardManager.LoadPanelNotes(model.GetNotes());
        StartCoroutine(PanelPlacementRoutine(model));
    }
예제 #7
0
 internal void RefreshPanelsLayout(ICardManagerModel model)
 {
     cardManager.LoadPanelNotes(model.GetNotes());
     StartCoroutine(RefreshPanelsLayoutRoutine(model));
 }