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); } }
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(); }
void SetModel(ICardManagerModel newModel) { if (this.model == newModel) { return; } if (this.model != null) { this.model.Dispose(); } this.model = newModel; }
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); }
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(); }
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)); }
internal void RefreshPanelsLayout(ICardManagerModel model) { cardManager.LoadPanelNotes(model.GetNotes()); StartCoroutine(RefreshPanelsLayoutRoutine(model)); }