Ejemplo n.º 1
0
 public bool IsContain(SkillFlag _allSkill, SkillFlag _sthSkill)
 {
     // 与运算, 如果sthSkill 与 _allSkill并不对应则会返回0
     return(0 != (_allSkill & _sthSkill));
 }
Ejemplo n.º 2
0
        private void OnGUI()
        {
            EditorGUILayout.BeginVertical();

            if (createCommanderEditor != null)
            {
                GUILayout.Label(createCommanderEditor.editorTarget.unitName);
                GUILayout.Label(new GUIContent(createCommanderEditor.editorTarget.activityConfig.normalSprite.texture));
            }
            else if (soliderConfig != null)
            {
                GUILayout.Label(soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].soliderType.ToString());
                GUILayout.Label(new GUIContent(soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].activityConfig.normalSprite.texture));
            }



            int index = 0;

            for (int i = 0; i < Enum.GetValues(typeof(SkillFlag)).Length; i++)
            {
                SkillFlag currentFlag = (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i);

                if (index == 0)
                {
                    EditorGUILayout.BeginHorizontal();
                }

                index++;
                toggleRuntimeArray[i] = EditorGUILayout.ToggleLeft(currentFlag.ToString(),
                                                                   toggleRuntimeArray[i]);

                if (index == 3)
                {
                    index = 0;
                    EditorGUILayout.EndHorizontal();
                }
            }
            if (index != 0)
            {
                EditorGUILayout.EndHorizontal();
            }

            if (toggleInitArray[0] == toggleRuntimeArray[0])
            {
                for (int i = 1; i < toggleRuntimeArray.Length; i++)
                {
                    if (toggleInitArray[i] != toggleRuntimeArray[i])
                    {
                        toggleInitArray[i] = toggleRuntimeArray[i];
                        if (toggleRuntimeArray[i])
                        {
                            toggleInitArray[0] = toggleRuntimeArray[0] = false;

                            if (createCommanderEditor != null)
                            {
                                createCommanderEditor.editorTarget.skillMastery =
                                    createCommanderEditor.editorTarget.skillMastery |
                                    (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i);
                            }
                            else if (soliderConfig != null)
                            {
                                soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery =
                                    soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery |
                                    (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i);
                            }
                        }
                        else
                        {
                            if (createCommanderEditor != null)
                            {
                                createCommanderEditor.editorTarget.skillMastery =
                                    createCommanderEditor.editorTarget.skillMastery &
                                    ~(SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i);
                            }
                            else if (soliderConfig != null)
                            {
                                soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery =
                                    soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery &
                                    ~(SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i);
                            }

                            if (!toggleRuntimeArray.Any(x => x))
                            {
                                if (createCommanderEditor != null)
                                {
                                    createCommanderEditor.editorTarget.skillMastery = 0;
                                }
                                else if (soliderConfig != null)
                                {
                                    soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = 0;
                                }

                                toggleRuntimeArray[0] = toggleInitArray[0] = true;
                            }
                        }
                    }
                }
            }
            else
            {
                toggleInitArray[0] = toggleRuntimeArray[0];
                if (toggleRuntimeArray[0])
                {
                    if (createCommanderEditor != null)
                    {
                        createCommanderEditor.editorTarget.skillMastery = 0;
                    }
                    else if (soliderConfig != null)
                    {
                        soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = 0;
                    }

                    for (int i = 1; i < toggleInitArray.Length; i++)
                    {
                        toggleInitArray[i] = toggleRuntimeArray[i] = false;
                    }
                }
            }



            EditorGUILayout.EndVertical();
        }