Beispiel #1
0
        /// <summary>
        /// 查询某signal的所有KeyName
        /// </summary>
        /// <param name="Signal"></param>
        /// <param name="mycom"></param>
        /// <returns></returns>
        private List <CKeyName> SelectKeyNames(string Signal, MySqlConnection OpenedConn)
        {
            string          sql      = string.Format("select ID,KeyName,Odr from KeyTable where ExcelSignal='{0}' order by Odr", Signal);
            List <CKeyName> keyNames = null;
            //需要关闭
            MySqlDataReader reader = new MySqlCommand(sql, OpenedConn).ExecuteReader();

            try
            {
                if (reader.HasRows)
                {
                    keyNames = new List <CKeyName>();
                    while (reader.Read())
                    {
                        CKeyName one = new CKeyName();
                        one.Id      = reader.GetInt32(0);
                        one.KeyName = reader.GetString(1);
                        one.Odr     = reader.GetInt32(2);
                        keyNames.Add(one);
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                reader.Close();
            }
            return(keyNames);
        }
Beispiel #2
0
        public async Task <UIElement> GetUIAsync([EngineNS.Editor.Editor_RNameMacrossType(typeof(EngineNS.UISystem.UIElement))] RName name,
                                                 string keyName = "__default", bool forceLoad = false)
        {
            if (name == null || name.IsExtension(CEngineDesc.UIExtension) == false)
            {
                return(null);
            }
            if (name.RNameType != RName.enRNameType.Game)
            {
                throw new InvalidOperationException("暂不支持非游戏UI");
            }
            if (string.IsNullOrEmpty(keyName))
            {
                keyName = "__default";
            }
            var       rc  = CEngine.Instance.RenderContext;
            var       key = new CKeyName(name, keyName);
            UIElement result;

            bool bFound = true;

            lock (UserUIs)
            {
                if (UserUIs.TryGetValue(key, out result) == false)
                {
                    var nameSpace  = name.RelativePath().Replace("/", ".");
                    var typeName   = nameSpace + name.PureName();
                    var resultType = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly.GetType(typeName);
                    if (resultType == null)
                    {
                        return(null);
                    }
                    result = System.Activator.CreateInstance(resultType) as UIElement;
                    bFound = false;
                    UserUIs.Add(key, result);
                }
            }

            if (bFound)
            {
                if (forceLoad)
                {
                    var atts     = result.GetType().GetCustomAttributes(typeof(Editor_UIControlInitAttribute), false);
                    var att      = atts[0] as Editor_UIControlInitAttribute;
                    var initType = att.InitializerType;
                    var init     = System.Activator.CreateInstance(initType) as UIElementInitializer;
                    await result.Initialize(rc, init);
                }
            }
            else
            {
                var atts     = result.GetType().GetCustomAttributes(typeof(Editor_UIControlInitAttribute), false);
                var att      = atts[0] as Editor_UIControlInitAttribute;
                var initType = att.InitializerType;
                var init     = System.Activator.CreateInstance(initType) as UIElementInitializer;
                await result.Initialize(rc, init);
            }
            return(result);
        }
Beispiel #3
0
 public bool RemoveUIFromDic(RName name, string keyName)
 {
     lock (UserUIs)
     {
         var key = new CKeyName(name, keyName);
         return(UserUIs.Remove(key));
     }
 }
Beispiel #4
0
        public List <CKeyName> loadKeyNameForExcelAndGroup(string signal, int Group_id = -1)
        {
            List <CKeyName> result = null;
            string          sql    = string.Format("Select ID,KeyName,Group_ID={1} from KeyTable where ExcelSignal='{0}'", signal, Group_id);
            MySqlConnection conn   = new MySqlConnection(this.connectMessage);
            MySqlDataReader reader = null;

            try
            {
                conn.Open();
                MySqlCommand command = new MySqlCommand(sql, conn);
                reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    result = new List <CKeyName>();
                }
                while (reader.Read())
                {
                    CKeyName one = new CKeyName();
                    one.Id      = reader.GetInt32(0);
                    one.KeyName = reader.GetString(1);
                    if (!reader.IsDBNull(2))
                    {
                        one.IsCheck = reader.GetBoolean(2);
                    }
                    result.Add(one);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally {
                reader.Close();
                conn.Close();
                conn.Dispose();
            }
            return(result);
        }
Beispiel #5
0
 public bool Equals(CKeyName tag)
 {
     return(RName.Equals(tag.RName) && KeyName == tag.KeyName);
 }