private void Refresh()
 {
     m_lstDifficultyInfo = null;
     // Check File
     if (m_DifficultyControlDataMap == null || m_DifficultyControlDataMap.MapFileData == null)
     {
         return;
     }
     if (m_DifficultyControlDataMap.MapFileData.Count <= 0)
     {
         return;
     }
     // Game Difficulty
     if (!m_DifficultyControlDataMap.MapFileData.ContainsKey(m_GameID))
     {
         m_DifficultyCount     = 0;
         m_DifficultyLastCount = 0;
         return;
     }
     m_DifficultyControlData = m_DifficultyControlDataMap.MapFileData[m_GameID];
     // Difficulty Count
     m_DifficultyCount     = m_DifficultyControlData.DifficultyConfig.Count;
     m_DifficultyLastCount = m_DifficultyCount;
     // Editor Data
     m_lstDifficultyInfo = new List <DifficultyInfo>();
     foreach (string diffName in m_DifficultyControlData.DifficultyConfig.Keys)
     {
         DifficultyInfo temp = new DifficultyInfo();
         temp.Name   = diffName;
         temp.Offset = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].DifficultyOffset);
         temp.Range  = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].DifficultyRange);
         Dictionary <string, float> effect            = new Dictionary <string, float>();
         DefaultUserTalent          defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
         foreach (string talentName in defaultUserTalent.MapTalent.Keys)
         {
             if (m_DifficultyControlData.DifficultyConfig[diffName].TalentEffect.ContainsKey(talentName))
             {
                 float effectValue = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].TalentEffect[talentName]);
                 effect.Add(talentName, effectValue);
             }
             else
             {
                 effect.Add(talentName, 0f);
             }
         }
         temp.TalentEffects = effect;
         // add to list
         m_lstDifficultyInfo.Add(temp);
     }
 }
Esempio n. 2
0
 public void StartGame(DifficultyInfo _difficulty)
 {
     currentDifficulty = _difficulty;
     if (!(currentDifficulty.Name == Difficulty.Custom))
     {
         GetComponent <MakeGrid>().Create(new MakeGrid.GridArgs(_difficulty.XSize, _difficulty.YSize));
     }
     else
     {
         int numOfRows = PlayerPrefs.GetInt(difficultySettingsData.Difficulties.CustomPlayerPref.Row.Name);
         int numOfCols = PlayerPrefs.GetInt(difficultySettingsData.Difficulties.CustomPlayerPref.Col.Name);
         GetComponent <MakeGrid>().Create(new MakeGrid.GridArgs(numOfRows, numOfCols));
     }
     Randomise.ColourTiles(allTiles, out TilePairs);
     StartCoroutine(GetComponentInChildren <Countdown>(true).StartCountdown());
 }
        /// <summary>
        /// Displays difficulty info scales.
        /// </summary>
        private void SetupDifficulty(IPlayableMap map, DifficultyInfo difficulty)
        {
            var mapDifficulty = map.Detail.Difficulty;

            switch (map.PlayableMode)
            {
            // TODO: Handle other modes that should display different label values.

            default:
                GetCell().Setup("AR", mapDifficulty.ApproachRate, 10f);
                GetCell().Setup("CS", mapDifficulty.CircleSize, 10f);
                GetCell().Setup("HP", mapDifficulty.HpDrainRate, 10f);
                GetCell().Setup("OD", mapDifficulty.OverallDifficulty, 10f);
                break;
            }

            // Display BPM value
            bpmInfo.Setup("BPM", map.ControlPoints.CommonBpm.ToString("N0"));

            // Display overall scale
            difficultyScale.Setup("Diff. scale", difficulty.Scale, 10f);
            difficultyScale.Active = true;
        }
Esempio n. 4
0
    void Start()
    {
        difficultyInfo = new DifficultyInfo[3];
        difficultyInfo[0] = new DifficultyInfo(7, 5); // easy
        difficultyInfo[1] = new DifficultyInfo(7, 3); // medium
        difficultyInfo[2] = new DifficultyInfo(7, 2); // hard

        updateEnemyInfos = new Queue<UpdateEnemyInfo>();
        enemyInfos = GetEnemyInfo();
        nextInfoUpdate = Time.time + updateInfoInterval;
        nextActTime = Time.time + difficultyInfo[difficulty].actInterval;
    }
    private void OnGUI()
    {
        #region Setting
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("重置", GUILayout.Width(60f)))
            {
                LoadFile();
                Repaint();
            }
            if (GUILayout.Button(m_lstDifficultyInfo == 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_lstDifficultyInfo == null)
        {
            return;
        }

        #region Difficulty Count
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            GUILayout.Space(5f);
            EditorGUILayout.LabelField("难度维度:", GUILayout.Width(60f));
            m_DifficultyCount = EditorGUILayout.IntField(m_DifficultyCount, GUILayout.Width(60f));
            GUILayout.Space(5f);
            if (GUILayout.Button("+", EditorStyles.miniButtonLeft, GUILayout.Width(30f)))
            {
                m_DifficultyCount++;
            }
            if (GUILayout.Button("-", EditorStyles.miniButtonRight, GUILayout.Width(30f)))
            {
                if (m_DifficultyCount > 0)
                {
                    m_DifficultyCount--;
                }
            }
            //Init Data
            if (m_DifficultyCount < m_DifficultyLastCount && m_DifficultyCount >= 0)
            {
                int removeCount = m_DifficultyLastCount - m_DifficultyCount;
                for (int i = 0; i < removeCount; i++)
                {
                    m_lstDifficultyInfo.RemoveAt(m_lstDifficultyInfo.Count - 1);
                }
            }
            else if (m_DifficultyCount > m_DifficultyLastCount)
            {
                int extraCount = m_DifficultyCount - m_DifficultyLastCount;
                for (int i = 0; i < extraCount; i++)
                {
                    DifficultyInfo tmpData = new DifficultyInfo();
                    tmpData.Name          = "";
                    tmpData.Offset        = 0f;
                    tmpData.Range         = 0f;
                    tmpData.TalentEffects = new Dictionary <string, float>();
                    DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
                    foreach (string talentName in defaultUserTalent.MapTalent.Keys)
                    {
                        tmpData.TalentEffects.Add(talentName, 0f);
                    }
                    m_lstDifficultyInfo.Add(tmpData);
                }
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        #region Difficuly 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) });
                // Offset & Range
                EditorGUILayout.LabelField("基础值", GUILayout.Width(m_fNodeSpace));
                EditorGUILayout.LabelField("浮动范围", GUILayout.Width(m_fNodeSpace));
                // 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_lstDifficultyInfo != null && m_lstDifficultyInfo.Count > 0)
            {
                for (int i = 0; i < m_lstDifficultyInfo.Count; i++)
                {
                    GUILayout.Space(5f);
                    EditorGUILayout.BeginHorizontal();
                    {
                        m_lstDifficultyInfo[i].Name = EditorGUILayout.TextField(m_lstDifficultyInfo[i].Name, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        m_lstDifficultyInfo[i].Offset = EditorGUILayout.Slider(m_lstDifficultyInfo[i].Offset, 0f, 1f, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        m_lstDifficultyInfo[i].Range = EditorGUILayout.Slider(m_lstDifficultyInfo[i].Range, 0f, 1f, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        // tmp list
                        List <UserTalentInfo> effectList = new List <UserTalentInfo>();
                        foreach (string talentName in m_lstDifficultyInfo[i].TalentEffects.Keys)
                        {
                            UserTalentInfo effect = new UserTalentInfo();
                            effect.TalentName  = talentName;
                            effect.TalentValue = m_lstDifficultyInfo[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_lstDifficultyInfo[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_DifficultyLastCount = m_DifficultyCount;
    }
    private void OnGUI()
    {
        #region Setting
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("重置", GUILayout.Width(60f)))
            {
                LoadFile();
                Repaint();
            }
            if (GUILayout.Button(m_lstDifficultyInfo == 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_lstDifficultyInfo == null)
            return;

        #region Difficulty Count
        GUILayout.Space(15f);
        EditorGUILayout.BeginHorizontal();
        {
            GUILayout.Space(5f);
            EditorGUILayout.LabelField("难度维度:", GUILayout.Width(60f));
            m_DifficultyCount = EditorGUILayout.IntField(m_DifficultyCount, GUILayout.Width(60f));
            GUILayout.Space(5f);
            if (GUILayout.Button("+", EditorStyles.miniButtonLeft, GUILayout.Width(30f)))
            {
                m_DifficultyCount++;
            }
            if (GUILayout.Button("-", EditorStyles.miniButtonRight, GUILayout.Width(30f)))
            {
                if (m_DifficultyCount > 0)
                    m_DifficultyCount--;
            }
            //Init Data
            if (m_DifficultyCount < m_DifficultyLastCount && m_DifficultyCount >= 0)
            {
                int removeCount = m_DifficultyLastCount - m_DifficultyCount;
                for (int i = 0; i < removeCount; i++)
                {
                    m_lstDifficultyInfo.RemoveAt(m_lstDifficultyInfo.Count - 1);
                }
            }
            else if (m_DifficultyCount > m_DifficultyLastCount)
            {
                int extraCount = m_DifficultyCount - m_DifficultyLastCount;
                for (int i = 0; i < extraCount; i++)
                {
                    DifficultyInfo tmpData = new DifficultyInfo();
                    tmpData.Name = "";
                    tmpData.Offset = 0f;
                    tmpData.Range = 0f;
                    tmpData.TalentEffects = new Dictionary<string, float>();
                    DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
                    foreach (string talentName in defaultUserTalent.MapTalent.Keys)
                    {
                        tmpData.TalentEffects.Add(talentName, 0f);
                    }
                    m_lstDifficultyInfo.Add(tmpData);
                }
            }
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        #region Difficuly 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) });
                // Offset & Range
                EditorGUILayout.LabelField("基础值", GUILayout.Width(m_fNodeSpace));
                EditorGUILayout.LabelField("浮动范围", GUILayout.Width(m_fNodeSpace));
                // 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_lstDifficultyInfo != null && m_lstDifficultyInfo.Count > 0)
            {
                for (int i = 0; i < m_lstDifficultyInfo.Count; i++)
                {
                    GUILayout.Space(5f);
                    EditorGUILayout.BeginHorizontal();
                    {
                        m_lstDifficultyInfo[i].Name = EditorGUILayout.TextField(m_lstDifficultyInfo[i].Name, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        m_lstDifficultyInfo[i].Offset = EditorGUILayout.Slider(m_lstDifficultyInfo[i].Offset, 0f, 1f, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        m_lstDifficultyInfo[i].Range = EditorGUILayout.Slider(m_lstDifficultyInfo[i].Range, 0f, 1f, GUILayout.Width(m_fNodeSpace - 5f));
                        GUILayout.Space(5f);
                        // tmp list
                        List<UserTalentInfo> effectList = new List<UserTalentInfo>();
                        foreach (string talentName in m_lstDifficultyInfo[i].TalentEffects.Keys)
                        {
                            UserTalentInfo effect = new UserTalentInfo();
                            effect.TalentName = talentName;
                            effect.TalentValue = m_lstDifficultyInfo[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_lstDifficultyInfo[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_DifficultyLastCount = m_DifficultyCount;
    }
 private void Refresh()
 {
     m_lstDifficultyInfo = null;
     // Check File
     if (m_DifficultyControlDataMap == null || m_DifficultyControlDataMap.MapFileData == null)
     {
         return;
     }
     if (m_DifficultyControlDataMap.MapFileData.Count <= 0)
     {
         return;
     }
     // Game Difficulty
     if (!m_DifficultyControlDataMap.MapFileData.ContainsKey(m_GameID))
     {
         m_DifficultyCount = 0;
         m_DifficultyLastCount = 0;
         return;
     }
     m_DifficultyControlData = m_DifficultyControlDataMap.MapFileData[m_GameID];
     // Difficulty Count
     m_DifficultyCount = m_DifficultyControlData.DifficultyConfig.Count;
     m_DifficultyLastCount = m_DifficultyCount;
     // Editor Data
     m_lstDifficultyInfo = new List<DifficultyInfo>();
     foreach (string diffName in m_DifficultyControlData.DifficultyConfig.Keys)
     {
         DifficultyInfo temp = new DifficultyInfo();
         temp.Name = diffName;
         temp.Offset = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].DifficultyOffset);
         temp.Range = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].DifficultyRange);
         Dictionary<string, float> effect = new Dictionary<string, float>();
         DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent();
         foreach (string talentName in defaultUserTalent.MapTalent.Keys)
         {
             if (m_DifficultyControlData.DifficultyConfig[diffName].TalentEffect.ContainsKey(talentName))
             {
                 float effectValue = AdaptiveDifficultyManager.ConvertFloat(m_DifficultyControlData.DifficultyConfig[diffName].TalentEffect[talentName]);
                 effect.Add(talentName, effectValue);
             }
             else
             {
                 effect.Add(talentName, 0f);
             }
         }
         temp.TalentEffects = effect;
         // add to list
         m_lstDifficultyInfo.Add(temp);
     }
 }