private void Refresh()
 {
     m_lstEventEffectInfo = null;
     // Check File
     if (m_EventControlDataMap == null || m_EventControlDataMap.MapFileData == null)
     {
         return;
     }
     if (m_EventControlDataMap.MapFileData.Count <= 0)
     {
         return;
     }
     // Game Talent
     if (!m_EventControlDataMap.MapFileData.ContainsKey(m_GameID))
     {
         m_EventCount     = 0;
         m_EventLastCount = 0;
         return;
     }
     m_EventControlData = m_EventControlDataMap.MapFileData[m_GameID];
     // Event Count
     m_EventCount     = m_EventControlData.EventConfig.Count;
     m_EventLastCount = m_EventCount;
     // Editor Data
     m_lstEventEffectInfo = new List <EventEffectInfo>();
     foreach (string eventName in m_EventControlData.EventConfig.Keys)
     {
         EventEffectInfo temp = new EventEffectInfo();
         temp.EventName = eventName;
         Dictionary <string, float> effect            = new Dictionary <string, float>();
         DefaultUserTalent          defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
         foreach (string talentName in defaultUserTalent.MapTalent.Keys)
         {
             if (m_EventControlData.EventConfig[eventName].TalentEffect.ContainsKey(talentName))
             {
                 float effectValue = AdaptiveDifficultyManager.ConvertFloat(m_EventControlData.EventConfig[eventName].TalentEffect[talentName]);
                 effect.Add(talentName, effectValue);
             }
             else
             {
                 effect.Add(talentName, 0f);
             }
         }
         temp.TalentEffects = effect;
         // add to list
         m_lstEventEffectInfo.Add(temp);
     }
 }
    private void OnGUI()
    {
        #region Setting
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("重置", GUILayout.Width(60f)))
            {
                LoadFile();
                Repaint();
            }
            if (GUILayout.Button(m_lstEventEffectInfo == null ? "生成" : "保存", GUILayout.Width(60f)))
            {
                SaveFile();
                Repaint();
            }
            if (GUILayout.Button("同步", GUILayout.Width(60f)))
            {
                SysnFile();
                LoadFile();
                Repaint();
            }
            if (GUILayout.Button("合并", GUILayout.Width(60f)))
            {
                MergeFile();
                LoadFile();
                Repaint();
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        #region Game ID
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            EditorGUILayout.LabelField("游戏ID : ", GUILayout.Width(60f));
            m_GameID_InputField = EditorGUILayout.IntField(m_GameID_InputField, GUILayout.Width(60f));
            if (GUILayout.Button("加载", GUILayout.Width(60f)))
            {
                m_GameID = m_GameID_InputField;
                //GUI.SetNextControlName("Input");
                //EditorUtility.DisplayDialog("加载成功", "加载成功", "确定");
                //GUI.FocusControl("Input");
                Refresh();
                this.Focus();
            }

            GUILayout.Space(15f);
            EditorGUILayout.LabelField("显示宽度 : ", GUILayout.Width(60f));
            m_fNodeSpace = EditorGUILayout.Slider(m_fNodeSpace, 100f, 300f, GUILayout.Width(200f));
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        if (m_lstEventEffectInfo == null)
        {
            return;
        }

        #region Event Count
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            GUILayout.Space(5f);
            EditorGUILayout.LabelField("事件数量:", GUILayout.Width(60f));
            m_EventCount = EditorGUILayout.IntField(m_EventCount, GUILayout.Width(60f));
            GUILayout.Space(5f);
            if (GUILayout.Button("+", EditorStyles.miniButtonLeft, GUILayout.Width(30f)))
            {
                m_EventCount++;
            }
            if (GUILayout.Button("-", EditorStyles.miniButtonRight, GUILayout.Width(30f)))
            {
                if (m_EventCount > 0)
                {
                    m_EventCount--;
                }
            }
            //Init Data
            if (m_EventCount < m_EventLastCount && m_EventCount >= 0)
            {
                int removeCount = m_EventLastCount - m_EventCount;
                for (int i = 0; i < removeCount; i++)
                {
                    m_lstEventEffectInfo.RemoveAt(m_lstEventEffectInfo.Count - 1);
                }
            }
            else if (m_EventCount > m_EventLastCount)
            {
                int extraCount = m_EventCount - m_EventLastCount;
                for (int i = 0; i < extraCount; i++)
                {
                    EventEffectInfo tmpData = new EventEffectInfo();
                    tmpData.EventName     = "";
                    tmpData.TalentEffects = new Dictionary <string, float>();
                    DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
                    foreach (string talentName in defaultUserTalent.MapTalent.Keys)
                    {
                        tmpData.TalentEffects.Add(talentName, 0f);
                    }
                    m_lstEventEffectInfo.Add(tmpData);
                }
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        #region Event Data
        m_EventScorllPos = EditorGUILayout.BeginScrollView(m_EventScorllPos);
        {
            // Data Name
            GUILayout.Space(15f);
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("事件 \\ 天赋", GUILayout.Width(m_fNodeSpace));
                //GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandHeight(true), GUILayout.Width(1) });
                // Talent Effect
                DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
                foreach (string talentName in defaultUserTalent.MapTalent.Keys)
                {
                    EditorGUILayout.LabelField(talentName, GUILayout.Width(m_fNodeSpace));
                }
            }
            EditorGUILayout.EndHorizontal();
            GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw hor line
            // Data List
            if (m_lstEventEffectInfo != null && m_lstEventEffectInfo.Count > 0)
            {
                for (int i = 0; i < m_lstEventEffectInfo.Count; i++)
                {
                    GUILayout.Space(5f);
                    EditorGUILayout.BeginHorizontal();
                    {
                        m_lstEventEffectInfo[i].EventName = EditorGUILayout.TextField(m_lstEventEffectInfo[i].EventName, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        // tmp list
                        List <UserTalentInfo> effectList = new List <UserTalentInfo>();
                        foreach (string talentName in m_lstEventEffectInfo[i].TalentEffects.Keys)
                        {
                            UserTalentInfo effect = new UserTalentInfo();
                            effect.TalentName  = talentName;
                            effect.TalentValue = m_lstEventEffectInfo[i].TalentEffects[talentName];
                            effectList.Add(effect);
                        }
                        // update data
                        for (int num = 0; num < effectList.Count; num++)
                        {
                            effectList[num].TalentValue = EditorGUILayout.Slider(effectList[num].TalentValue, -1f, 1f, GUILayout.Width(m_fNodeSpace - 5f));
                            GUILayout.Space(5f);
                            m_lstEventEffectInfo[i].TalentEffects[effectList[num].TalentName] = effectList[num].TalentValue;
                        }
                    }
                    EditorGUILayout.EndHorizontal();
                    GUILayout.Space(5f);
                    GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); //draw hor line
                }
            }
        }
        EditorGUILayout.EndScrollView();
        #endregion

        m_EventLastCount = m_EventCount;
    }