Esempio n. 1
0
    /// <summary>
    /// 加载二进制配置
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="path">二进制文件路径</param>
    /// <returns></returns>
    public T LoadBinaryConfigData <T>(string binaryPath) where T : ConfigDataBase
    {
        if (string.IsNullOrEmpty(binaryPath))
        {
            Debug.Log("二进制文件路径为空");
            return(default(T));
        }
        if (m_configDataDic.ContainsKey(binaryPath))
        {
            return((T)m_configDataDic[binaryPath]);
        }

        ConfigDataBase data = GameDataConvert.BinaryDeserialize <T>(binaryPath);

#if UNITY_EDITOR
        if (data == null)
        {
            Debug.Log("二进制文件加载失败,尝试加载xml");
            string xmlPath = binaryPath.Replace("Binary", "Xml").Replace(".bytes", ".xml");
            data = GameDataConvert.XmlDeserializeInEditorMode <T>(xmlPath);
        }
#endif
        if (data != null)
        {
            data.Init();

            m_configDataDic.Add(binaryPath, data);

            return(data as T);
        }
        return(default(T));
    }
 private void Window_KeyDown(object sender, KeyEventArgs e)
 {
     if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O))
     {
         ConfigDataBase config = new ConfigDataBase();
         config.ShowDialog();
     }
 }
Esempio n. 3
0
    /// <summary>
    ///     分析单个数据表
    /// </summary>
    private static Dictionary <int, ConfigDataBase> BinaryParse(byte[] binary, Type configType)
    {
        Dictionary <int, ConfigDataBase> dic = new Dictionary <int, ConfigDataBase>();

        //Head Begin//

        //二进制源下标
        int index = 0;

        //创建行头清单
        //总行数
        int configArrayLength = BitConverter.ToInt32(binary, index);

        index += 4;
        int[] configArray = new int[configArrayLength];
        for (int i = 0; i < configArray.Length; i++)
        {
            configArray[i] = BitConverter.ToInt32(binary, index);
            index         += 4;
        }

        //创建列头清单
        //总列数
        int columnListCount = BitConverter.ToInt32(binary, index);

        index += 4;
        List <KeyValuePair <string, DataTypeCode> > columnList =
            new List <KeyValuePair <string, DataTypeCode> >(columnListCount);

        for (int i = 0; i < columnListCount; i++)
        {
            int stringlength = BitConverter.ToInt32(binary, index);
            index += 4;
            string key = System.Text.Encoding.UTF8.GetString(binary, index, stringlength);
            index += stringlength;
            byte value = binary[index++];
            columnList.Add(new KeyValuePair <string, DataTypeCode>(key, (DataTypeCode)value));
        }

        int headOffset = index;

        //Head End//

        for (int i = 0; i < configArray.Length; i++)
        {
            ConfigDataBase configData = Activator.CreateInstance(configType) as ConfigDataBase;
            int            id         = configData.Init(binary, configArray[i] + headOffset, columnList);

            if (dic.ContainsKey(id))
            {
                Debug.LogError("静态表" + configType.ToString() + "存在重复ID " + id.ToString());
                continue;
            }

            dic.Add(id, configData);
        }
        return(dic);
    }
Esempio n. 4
0
    public T GetConfigData <T>(string path) where T : ConfigDataBase
    {
        if (string.IsNullOrEmpty(path))
        {
            return(default(T));
        }
        ConfigDataBase data = null;

        if (m_configDataDic.TryGetValue(path, out data))
        {
            return(data as T);
        }
        else
        {
            //LoadBinaryConfigData(path);
        }

        return(default(T));
    }
Esempio n. 5
0
        private void serverDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ConfigDataBase configDataBase = new ConfigDataBase();

            configDataBase.ShowDialog();
        }