Пример #1
0
        private void Destroy(PanelId panelId)
        {
            Panel needDestroyPanel = this.panelCache[panelId];

            this.panelCache.Remove(panelId);
            needDestroyPanel.Dispose();
        }
Пример #2
0
 public PanelConfig(PanelId panelId, PanelType panelType, Type bindViewType, PanelLifespan panelLifespan)
 {
     this.PanelId       = panelId;
     this.PanelType     = panelType;
     this.BindViewType  = bindViewType;
     this.PanelLifespan = panelLifespan;
 }
Пример #3
0
 public void SaveHeader(XmlTextWriter writer)
 {
     writer.WriteAttributeString("Type", GetType().Name);
     writer.WriteAttributeString("Id", Id.ToString());
     writer.WriteAttributeString("PanelId", PanelId.ToString());
     writer.WriteAttributeString("Name", Name);
     writer.WriteAttributeString("Description", Description);
 }
Пример #4
0
        internal void UpdatePanel(PanelId panelId, object data, bool loadPanel)
        {
            panelsMap[panelId].Data = data;

            if (loadPanel)
            {
                LoadPanel(panelId);
            }
        }
Пример #5
0
        /// <summary>
        /// 关闭面板,会直接销毁
        /// </summary>
        /// <param name="name"></param>
        public void ClosePanel(PanelId panel)
        {
            GameObject panelObject = null;

            if (panelLoads.TryGetValue(panel, out panelObject))
            {
                panelLoads.Remove(panel);
                Destroy(panelObject);
            }
        }
Пример #6
0
    public bool GetStatus(PanelId panelId, ControlType controlType)
    {
        switch (panelId)
        {
        case PanelId.First:
            return(GetStatusOnPanel(firstPanel, controlType));

        case PanelId.Second:
            return(GetStatusOnPanel(secondPanel, controlType));

        case PanelId.Third:
        default:
            return(GetStatusOnPanel(thirdPanel, controlType));
        }
    }
Пример #7
0
    public string GetName(PanelId panelId, ControlType controlType)
    {
        switch (panelId)
        {
        case PanelId.First:
            return(GetNameOnPanel(firstPanel, controlType));

        case PanelId.Second:
            return(GetNameOnPanel(secondPanel, controlType));

        case PanelId.Third:
        default:
            return(GetNameOnPanel(thirdPanel, controlType));
        }
    }
Пример #8
0
    public void SetStatus(PanelId panelId, ControlType controlType, bool value)
    {
        switch (panelId)
        {
        case PanelId.First:
            SetStatusOnPanel(firstPanel, controlType, value);
            break;

        case PanelId.Second:
            SetStatusOnPanel(secondPanel, controlType, value);
            break;

        case PanelId.Third:
            SetStatusOnPanel(thirdPanel, controlType, value);
            break;
        }
    }
Пример #9
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            int hash = 17;

            hash = hash * 23 + Id.GetHashCode();
            hash = hash * 23 + OrgId.GetHashCode();
            hash = hash * 23 + DashboardId.GetHashCode();
            hash = hash * 23 + PanelId.GetHashCode();
            hash = hash * 23 + Name.GetHashCode();
            hash = hash * 23 + Message.GetHashCode();
            hash = hash * 23 + State.GetHashCode();
            hash = hash * 23 + Settings.GetHashCode();
            hash = hash * 23 + Frequency.GetHashCode();
            hash = hash * 23 + NewStateDate.GetHashCode();
            hash = hash * 23 + StateChanges.GetHashCode();

            return(hash);
        }
Пример #10
0
        public async Task Load(PanelId panelId, bool showWhenDone = true, object param = null)
        {
            try
            {
                Panel panel;
                if (this.panelCache.TryGetValue(panelId, out panel))
                {
                    if (panel.PanelLifespan == PanelLifespan.Dynamic)
                    {
                        this.dynamicPanelIds.Remove(panelId);
                    }
                    if (!panel.IsShow && showWhenDone)
                    {
                        panel.OnShow(param);
                    }
                    return;
                }

                if (this.isLoading.Contains(panelId))
                {
                    Debug.LogWarning($"Panel {panelId} is already loading.");
                    return;
                }
                this.isLoading.Add(panelId);
                Type        type   = this.panelTypes[panelId];
                PanelConfig config = this.panelConfigs[panelId];
                await Game.ResourcesComponent.LoadBundleAsync($"{panelId}");

                GameObject go = GameObject.Instantiate((GameObject)Game.ResourcesComponent.GetAsset($"{panelId}", $"{panelId}.prefab"));
                panel = (Panel)ObjectFactory.CreateEntity(type);
                panel.Awake(go, config);
                this.isLoading.Remove(panelId);
                this.panelCache.Add(panelId, panel);
                if (showWhenDone)
                {
                    panel.OnShow(param);
                }
                return;
            }
            catch (Exception e)
            {
                throw new Exception($"{panelId} UI 错误: {e}");
            }
        }
Пример #11
0
        /// <summary>
        /// 初始化
        /// </summary>
        private void Init()
        {
            panelPaths = new Dictionary <PanelId, string>();
            panelTypes = new Dictionary <PanelId, Type>();

            //初始化,找到所有的面板
            var typelist = Util.GetAllTypes(typeof(LuaFrameworkPanelAttribute));

            for (int i = 0; i < typelist.Count; i++)
            {
                Type panel_type = typelist[i];
                LuaFrameworkPanelAttribute att = (LuaFrameworkPanelAttribute)Attribute.GetCustomAttribute(panel_type, typeof(LuaFrameworkPanelAttribute));
                PanelId panel_id   = att.panelId;
                string  panel_path = att.resPath;

                panelPaths.Add(panel_id, panel_path);
                panelTypes.Add(panel_id, panel_type);
            }
        }
Пример #12
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            int hash = 17;

            hash = hash * 23 + Id.GetHashCode();
            hash = hash * 23 + OrgId.GetHashCode();
            hash = hash * 23 + UserId.GetHashCode();
            hash = hash * 23 + Title.GetHashCode();
            hash = hash * 23 + Text.GetHashCode();
            hash = hash * 23 + DashboardId.GetHashCode();
            hash = hash * 23 + PanelId.GetHashCode();
            hash = hash * 23 + Time.GetHashCode();

            if (null != Alert)
            {
                hash = hash * 23 + Alert.GetHashCode();
            }

            return(hash);
        }
Пример #13
0
        public void Close(PanelId panelId, object param = null)
        {
            Panel panel;

            if (this.panelCache.TryGetValue(panelId, out panel))
            {
                if (panel.IsShow)
                {
                    panel.OnClose(param);
                    if (panel.PanelLifespan == PanelLifespan.Dynamic)
                    {
                        this.dynamicPanelIds.Add(panelId);
                        if (this.dynamicPanelIds.Count > DYNAMIC_LIMIT)
                        {
                            PanelId needDestroyId = this.dynamicPanelIds[0];
                            this.dynamicPanelIds.RemoveAt(0);
                            Destroy(needDestroyId);
                        }
                    }
                }
                return;
            }
        }
Пример #14
0
        /// <summary>
        /// 打开面板
        /// </summary>
        /// <param name="panel"></param>
        public void OpenPanel(PanelId panel)
        {
            //path
            string panel_path = "";

            if (!panelPaths.TryGetValue(panel, out panel_path))
            {
                return;
            }
            //type
            Type panel_type = null;

            if (!panelTypes.TryGetValue(panel, out panel_type))
            {
                return;
            }
            //加载, 只允许一个面板实例存在
            GameObject panelObject = null;

            if (!panelLoads.TryGetValue(panel, out panelObject))
            {
                CreatePanel(panel_path, (go) =>
                {
                    if (go != null)
                    {
                        go.AddComponent(panel_type);
                        go.SetActive(true);
                    }
                });
            }
            else
            {
                panelObject.SetActive(false);
                panelObject.SetActive(true);
            }
        }
Пример #15
0
 private void WaitForPanelToDisplay()
 {
     Report.Write("At WaitForPanelToDisplay.");
     PanelId.WaitUntilExists(3);
 }
Пример #16
0
 PanelConfigAttribute(PanelId panelId, PanelType panelType, Type bindViewType, PanelLifespan panelLifespan = PanelLifespan.Dynamic)
 {
     PanelConfig = new PanelConfig(panelId, panelType, bindViewType, panelLifespan);
 }
Пример #17
0
    public void ToggleStatus(PanelId panelId, ControlType controlType)
    {
        bool currentStatus = GetStatus(panelId, controlType);

        SetStatus(panelId, controlType, !currentStatus);
    }
Пример #18
0
 public void Open(PanelId panelId, object param = null)
 {
     this.Load(panelId, true, param).WrapErrors();
 }