public override AbstractDataModule MergeState(Dictionary <string, object> other)
        {
            var newIns = new DataModuleUI(this, other);

            if (!IsStateDifference(this, newIns))
            {
                return(this);
            }
            return(newIns);
        }
        public DataModuleUI(DataModuleUI baseState, Dictionary <string, object> other)
        {
            if (other == null)
            {
                return;
            }
            if (baseState != null)
            {
                IsShowLoading    = baseState.IsShowLoading;
                IsHudShow        = baseState.IsHudShow;
                CurrentMenuName  = baseState.CurrentMenuName;
                CurrentPopupName = baseState.CurrentPopupName;
            }

            IsShowLoading    = GetValue <bool>(other, "IsShowLoading", IsShowLoading);
            IsHudShow        = GetValue <bool>(other, "IsHudShow", IsHudShow);
            CurrentMenuName  = GetValue <string>(other, "CurrentMenuName", CurrentMenuName);
            CurrentPopupName = GetValue <string>(other, "CurrentPopupName", CurrentPopupName);
        }