private GameObject GetPrefab(RavenhillViewType viewType) { if (cachedPrefabs.ContainsKey(viewType)) { return(cachedPrefabs[viewType]); } else { string path = GetPath(viewType); if (!string.IsNullOrEmpty(path)) { GameObject prefab = Resources.Load <GameObject>(path); if (prefab != null) { cachedPrefabs[viewType] = prefab; } else { throw new ResourceFailedLoadException(path); } return(prefab); } else { throw new UnityException($"Not founded path for view type: {viewService}"); } } }
public override GameObject ShowView(RavenhillViewType type, object data = null) { GameObject resultObject = null; if (openedViews.ContainsKey(type)) { GameObject existingViewObj = openedViews[type]; if (existingViewObj) { existingViewObj.GetComponentInChildren <RavenhillBaseView>()?.Setup(data); resultObject = existingViewObj; } else { openedViews.Remove(type); resultObject = CreatePrefabAndAddToScreen(type, data); openedViews.Add(type, resultObject); } } else { resultObject = CreatePrefabAndAddToScreen(type, data); openedViews.Add(type, resultObject); } RavenhillEvents.OnViewAdded(type); return(resultObject); }
public override void RemoveView(RavenhillViewType viewType) { if (openedViews.ContainsKey(viewType)) { GameObject instance = openedViews[viewType]; openedViews.Remove(viewType); if (instance) { RavenhillBaseView baseView = instance.GetComponentInChildren <RavenhillBaseView>(); baseView?.OnViewWillBeClosed(); if (baseView) { baseView.FadeOut(); } else { GameObject.Destroy(instance); } lastViewRemovedTime = Time.time; RavenhillEvents.OnViewRemoved(viewType); } } }
private GameObject CreatePrefabAndAddToScreen(RavenhillViewType viewType, object data = null) { GameObject prefab = GetPrefab(viewType); GameObject instance = GameObject.Instantiate <GameObject>(prefab); RavenhillBaseView baseView = instance.GetComponentInChildren <RavenhillBaseView>(); baseView?.Setup(data); ICanvasSerive canvasService = engine.GetService <ICanvasSerive>(); canvasService?.Add(instance.transform); SetSibling(baseView); return(instance); }
public override GameObject GetView(RavenhillViewType viewType) { return(openedViews.GetOrDefault(viewType)); }
public override bool ExistView(RavenhillViewType viewType) { return(openedViews.ContainsKey(viewType)); }
private System.Collections.IEnumerator CorRemoveView(RavenhillViewType viewType, float delay) { yield return(new WaitForSeconds(delay)); RemoveView(viewType); }
public override void RemoveView(RavenhillViewType viewType, float delay) { engine.StartCoroutine(CorRemoveView(viewType, delay)); }
public abstract void RemoveView(RavenhillViewType viewType);
public abstract void ShowViewWithDelay(RavenhillViewType viewType, float delay, object data = null);
private void OnViewRemoved(RavenhillViewType viewType) { viewRemovedLastTime = Time.time; }
private System.Collections.IEnumerator CorShowViewWithDelay(RavenhillViewType type, float delay, object data) { yield return(new WaitForSeconds(delay)); ShowView(type, data); }
public override void ShowViewWithDelay(RavenhillViewType viewType, float delay, object data = null) { Debug.Log($"SHow view {viewType} with delay {delay}"); engine.StartCoroutine(CorShowViewWithDelay(viewType, delay, data)); }
public abstract GameObject GetView(RavenhillViewType viewType);
public abstract void RemoveView(RavenhillViewType viewType, float delay);
public abstract void ShowViewWithCondition(RavenhillViewType viewType, System.Func <bool> predicate, object data = null);
public string GetPath(RavenhillViewType viewType) { return(prefabPath.ContainsKey(viewType) ? prefabPath[viewType] : string.Empty); }
private void OnViewAdded(RavenhillViewType viewType) { isStopped = viewService.hasModals; }
public override void ShowViewWithCondition(RavenhillViewType viewType, Func <bool> predicate, object data = null) { engine.StartCoroutine(CorShowViewWithCondition(viewType, predicate, data)); }
public abstract bool ExistView(RavenhillViewType viewType);
public static void OnViewRemoved(RavenhillViewType type) { ViewRemoved?.Invoke(type); }
private System.Collections.IEnumerator CorShowViewWithCondition(RavenhillViewType viewType, Func <bool> predicate, object data = null) { yield return(new WaitUntil(predicate)); ShowView(viewType, data); }
private void OnViewRemoved(RavenhillViewType viewType) { lastViewRemoveTime = Time.time; }
public abstract GameObject ShowView(RavenhillViewType viewType, object data = null);