Esempio n. 1
0
 private void ClearAllPanel(UIDisplayControl ctrl)
 {
     if (ctrl == null)
     {
         return;
     }
     if (!ctrl.ClearOpened)
     {
         return;
     }
     for (int i = 0; i < OpenedUIList.Count; i++)
     {
         GameObject panel = OpenedUIList[i];
         // 不存在的跳过
         if (!panel)
         {
             continue;
         }
         UIPanelBehaviour script = panel.GetComponent <UIPanelBehaviour>();
         // 已关闭的跳过
         if (!script.GetActiveSelf())
         {
             continue;
         }
         // 关闭该界面
         StartCoroutine(ClosePanel(script, false));
     }
     OpenedUIList.Clear();
     ClosedUIList.Clear();
 }
Esempio n. 2
0
    public void KillEnemy(EnemyBehaviour enemy)
    {
        if (Enemies.Contains(enemy))
        {
            Enemies.Remove(enemy);
        }

        LevelStats.KilledEnemy++;
        UIPanelBehaviour.SetWaveProgress(LevelStats.KilledEnemy, LevelStats.LevelDefinition.TotalEnemy);
        InitEnemyWave();
    }
Esempio n. 3
0
    private void CloseAllPanel(params string[] dontCloseUIName)
    {
        List <GameObject> list = new List <GameObject>();

        for (int i = 0; i < OpenedUIList.Count; i++)
        {
            GameObject panel = OpenedUIList[i];
            // 不存在的跳过
            if (!panel)
            {
                continue;
            }
            UIPanelBehaviour script = panel.GetComponent <UIPanelBehaviour>();
            // 已关闭的跳过
            if (!script.GetActiveSelf())
            {
                continue;
            }
            // 过滤
            bool b = false;
            for (int k = 0; k < dontCloseUIName.Length; k++)
            {
                if (panel.name == dontCloseUIName[k])
                {
                    b = true;
                    break;
                }
            }
            if (b)
            {
                continue;
            }
            // 关闭该界面
            StartCoroutine(ClosePanel(script, false));
            // 加入到关闭表内
            list.Add(OpenedUIList[i]);
        }
        // 把该阶段的界面加入关闭表
        if (list.Count > 0)
        {
            ClosedUIList.Add(list);
        }
        // 把关闭的UI从打开表内清除
        for (int i = 0; i < list.Count; i++)
        {
            if (OpenedUIList.Contains(list[i]))
            {
                OpenedUIList.Remove(list[i]);
            }
        }
    }
    public override void Kill()
    {
        ShipStats.Health -= 1;
        UIPanelBehaviour.SetHealth(ShipStats.Health, false);

        if (ShipStats.Health == 0)
        {
            ScreenManager.ActiveLoseScreen();
            LevelManager.OnEndLevel();
            gameObject.SetActive(false);
            return;
        }

        StartCoroutine(ShipRendererBehaviour.AnimColor(Color.red));
    }
Esempio n. 5
0
    private IEnumerator OnShowPanel(UIPanelBehaviour behaviour, object[] args)
    {
        string           uiName = behaviour.name;
        UIDisplayControl ctrl   = GlobalConfig.GetUIDisplayControl(uiName);

        ClearAllPanel(ctrl);
        string dontCloseUI = ctrl != null ? ctrl.DontClose : string.Empty;

        if (dontCloseUI != "All" && !string.IsNullOrEmpty(dontCloseUI))
        {
            CloseAllPanel(dontCloseUI.Split(','));
        }
        StartCoroutine(behaviour.Show(args));
        OpenedUIList.Add(behaviour.gameObject);
        ShowUIListContent();
        yield return(null);
    }
Esempio n. 6
0
    /// <summary>
    /// Show the panel with the given id
    /// </summary>
    /// <param name="id">EnumUi id</param>
    /// <param name="timeIndependantRendering">set true to do rendering without animations</param>
    public static void RenderPanel(EnumUI id, bool timeIndependantRendering = false)
    {
        ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == id);

        if (!instance.loadedPanels.ContainsKey(id))
        {
            GameObject       spawnedPanel     = Instantiate(panel.panelPrefab, instance.containerTransform);
            UIPanelBehaviour uiPanelBehaviour = panel.uiPanelBehaviour;
            uiPanelBehaviour.panel              = spawnedPanel;
            uiPanelBehaviour.canvasGroup        = spawnedPanel.gameObject.GetComponent <CanvasGroup>();
            instance._animationStartCanvasGroup = uiPanelBehaviour.canvasGroup;
            instance.loadedPanels.Add(panel.id, uiPanelBehaviour);
            instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering;
            spawnedPanel.SetActive(true);
            spawnedPanel.transform.localScale = Vector3.one;
            spawnedPanel.transform.SetAsLastSibling();
            if (!timeIndependantRendering)
            {
                instance.AnimateStart(spawnedPanel, panel.startAnimation);
            }

            instance.renderingPanelsStack.Push(panel.id);
        }
        else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Hidden)
        {
            GameObject loadedPanel = instance.loadedPanels[id].panel;
            instance._animationStartCanvasGroup       = instance.loadedPanels[id].canvasGroup;
            instance._animationStartCanvasGroup.alpha = 1f;
            instance.loadedPanels[id].EnumUiState     = EnumUIState.Rendering;
            loadedPanel.SetActive(true);
            loadedPanel.transform.localScale = Vector3.one;
            loadedPanel.transform.SetAsLastSibling();
            if (!timeIndependantRendering)
            {
                instance.AnimateStart(loadedPanel, panel.startAnimation);
            }

            instance.renderingPanelsStack.Push(panel.id);
        }
        else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Rendering)
        {
            Debug.Log("The panel " + panel.panelName + " is already Rendering");
        }
    }
Esempio n. 7
0
    private IEnumerator OnClosePanel(UIPanelBehaviour script, bool bPlaySound)
    {
        bool bActive = script.GetActiveSelf();

        if (!bActive)
        {
            yield break;
        }
        yield return(StartCoroutine(ClosePanel(script, bPlaySound)));

        OpenedUIList.RemoveAt(OpenedUIList.Count - 1);
        string           uiName = script.name;
        UIDisplayControl ctrl   = GlobalConfig.GetUIDisplayControl(uiName);

        if (ctrl != null)
        {
            if (ctrl.JustCloseSelfWhenClosing)
            {
                yield break;
            }
        }
        if (ClosedUIList.Count <= 0)
        {
            yield break;
        }
        List <GameObject> lastClosedUIList = ClosedUIList[ClosedUIList.Count - 1];

        for (int i = 0; i < lastClosedUIList.Count; i++)
        {
            GameObject panel = lastClosedUIList[i];
            if (!panel)
            {
                continue;
            }
            UIPanelBehaviour panelScript = panel.GetComponent <UIPanelBehaviour>();
            StartCoroutine(panelScript.ReShow());
            OpenedUIList.Add(panel);
        }
        ClosedUIList.RemoveAt(ClosedUIList.Count - 1);
        ShowUIListContent();
    }
Esempio n. 8
0
 private IEnumerator ClosePanel(UIPanelBehaviour script, bool bPlaySound, bool bDelay = true)
 {
     yield return(StartCoroutine(script.Close(bPlaySound, bDelay)));
 }