public static void AddActions(this Menu.MenuItemCollection items, IEnumerable<MenuAction> actions)
 {
     foreach (var menuAction in actions)
     {
         items.AddAction(menuAction);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Shortcut for adding an element action.
        /// </summary>
        /// <param name="element"></param>
        /// <param name="name"></param>
        /// <param name="execute"></param>
        /// <param name="canExecute"></param>
        /// <returns></returns>
        public static IElementAction AddAction(this Element element, string name, Action execute, Func<bool> canExecute = null)
        {
            if (element == null) throw new ArgumentNullException(nameof(element));
            if (execute == null) throw new ArgumentNullException(nameof(execute));

            var action = new ElementAction(name, execute, canExecute);

            element.AddAction(action);

            return action;
        }
    public static int ImportLegacyData(this LetterAnimation letter_anim, List<object> data_list, int index_offset = 0)
    {
        KeyValuePair<string, string> value_pair;
        string key, value;
        int idx;
        int loop_idx = 0, action_idx = 0;

        for (idx = index_offset; idx < data_list.Count; idx++)
        {
            value_pair = (KeyValuePair<string, string>)data_list[idx];
            key = value_pair.Key;
            value = value_pair.Value;

            if (key.Equals("ANIM_DATA_END"))
                // reached end of this animations import data
                break;

            switch (key)
            {
                case "m_letters_to_animate":
                    var letter_list = value.StringToList(';');
                    letter_anim.m_letters_to_animate = new List<int>();
                    if (letter_list != null)
                        foreach (var obj in letter_list)
                            letter_anim.m_letters_to_animate.Add(int.Parse(obj.ToString()));
                    break;
                case "m_letters_to_animate_custom_idx":
                    letter_anim.m_letters_to_animate_custom_idx = int.Parse(value);
                    break;
                case "m_letters_to_animate_option":
                    letter_anim.m_letters_to_animate_option = (LETTERS_TO_ANIMATE)int.Parse(value);
                    break;

                // LOOP DATA IMPORT
                case "LOOP_DATA_START":
                    if (loop_idx == letter_anim.NumLoops)
                        letter_anim.AddLoop();
                    break;
                case "LOOP_DATA_END":
                    loop_idx++;
                    break;
                case "m_delay_first_only":
                    letter_anim.GetLoop(loop_idx).m_delay_first_only = bool.Parse(value);
                    break;
                case "m_end_action_idx":
                    letter_anim.GetLoop(loop_idx).m_end_action_idx = int.Parse(value);
                    break;
                case "m_loop_type":
                    letter_anim.GetLoop(loop_idx).m_loop_type = (LOOP_TYPE)int.Parse(value);
                    break;
                case "m_number_of_loops":
                    letter_anim.GetLoop(loop_idx).m_number_of_loops = int.Parse(value);
                    break;
                case "m_start_action_idx":
                    letter_anim.GetLoop(loop_idx).m_start_action_idx = int.Parse(value);
                    break;

                // ACTION DATA IMPORT
                case "ACTION_DATA_START":
                    if (action_idx == letter_anim.NumActions)
                        letter_anim.AddAction();
                    idx = letter_anim.GetAction(action_idx).ImportLegacyData(data_list, idx + 1);
                    action_idx ++;
                    break;
            }
        }

        // Remove any extra LoopData or LetterAction instances that existed prior to importing
        if (letter_anim.NumLoops > loop_idx)
            letter_anim.RemoveLoops(loop_idx, letter_anim.NumLoops - loop_idx);

        if (letter_anim.NumActions > action_idx)
            letter_anim.RemoveActions(action_idx, letter_anim.NumActions - action_idx);

        return idx;
    }