public void addEffectByConfig(string _effect_name, effectConfig effect_config)
    {
        if (!m_is_init)
        {
            init();
        }

        if (effect_config == null)
        {
            Debug.unityLogger.Log("effectsManager", "Effect was not found: " + _effect_name);
            return;
        }

        if (!isEffectRun(_effect_name))
        {
            effect_config.m_is_loop = false;
            cRunEffect root_effect = generateEffectFrom(effect_config);
            effect_config.IsMainEffect = true;

            if (root_effect != null)
            {
                //effect_config.m_final_action += _action;
                addEffect(effect_config.m_root_name, root_effect);
            }
        }
    }
Exemplo n.º 2
0
 public void doAction(effectConfig _config)
 {
     if (!m_effect_manager.isExistRunEffect())
     {
         m_final_panel.SetActive(true);
     }
 }
Exemplo n.º 3
0
 public bool addEffectToStorage(string _name, effectConfig _config)
 {
     if (!m_storage.ContainsKey(_name))
     {
         m_storage[_name] = _config;
         return(true);
     }
     return(false);
 }
        public bool behaviour_type_fill_rect(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;
            Image img = _config.m_control_object.GetComponent <Image>();

            if (_config.IsBegin)
            {
                _config.IsBegin = false;
                _config.m_control_object.SetActive(true);
            }

            if (_config.m_current_time >= _config.m_max_time)
            {
                _config.m_current_time = _config.m_max_time;
                _config.IsEnd          = true;

                if (img != null)
                {
                    img.fillAmount = 1;
                }
            }
            else
            {
                float delta_time = _config.m_current_time;
                float percents   = delta_time / _config.m_max_time;

                /*if (m_internal_tween_algorithm != null)
                 * {
                 *  percents = (float)m_internal_tween_algorithm(percents);
                 * }*/


                if (img != null)
                {
                    img.fillAmount = percents;
                }
            }
            return(true);
        }
        public cRunEffect(effectConfig _config)
        {
            m_config = _config;
            m_parts  = new List <cRunEffect>();

            if (_config.m_tween_algorithm_type == tweenAlgorithmFactory.eTweensAlgorithms.ParabolaWithParameters)
            {
                m_internal_tween_algorithm = (_1) => { return(tweenAlgorithmFactory.parabolaWithParameters(_1,
                                                                                                           m_config.m_arc_settings.m_parabala_params.x,
                                                                                                           m_config.m_arc_settings.m_parabala_params.y,
                                                                                                           m_config.m_arc_settings.m_parabala_params.z)); };
            }
            else
            {
                m_internal_tween_algorithm = tweenAlgorithmFactory.getAlgorithm(_config.m_tween_algorithm_type);
            }
        }
        public bool behaviour_type_counter(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;

            if (_config.IsBegin)
            {
                _config.IsBegin = false;
                _config.m_control_object.SetActive(true);
            }

            if (_config.m_current_time >= _config.m_max_time)
            {
                _config.m_current_time = _config.m_max_time;
                _config.IsEnd          = true;

                _config.CurrentCounter = _config.m_finish_counter;
            }
            else
            {
                float delta_time = _config.m_current_time;
                float percents   = delta_time / _config.m_max_time;

                if (m_internal_tween_algorithm != null)
                {
                    percents = (float)m_internal_tween_algorithm(percents);
                }

                int delta_size = (int)((_config.m_finish_counter - _config.m_start_counter) * percents);
                _config.CurrentCounter = _config.m_start_counter + delta_size;
            }
            return(true);
        }
        public bool behaviour_type_hide(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;
            _config.m_control_object.SetActive(false);
            _config.IsBegin = false;
            _config.IsEnd   = true;
            return(true);
        }
        public bool behaviour_type_rotate(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;

            if (_config.IsBegin)
            {
                _config.IsBegin = false;
                _config.m_control_object.SetActive(true);
            }

            if (_config.m_current_time >= _config.m_max_time)
            {
                _config.m_current_time = _config.m_max_time;
                _config.IsEnd          = true;

                _config.CurrentRotateZ = _config.m_finish_rotate_z;
            }
            else
            {
                float delta_time = _config.m_current_time;
                float percents   = delta_time / _config.m_max_time;

                if (m_internal_tween_algorithm != null)
                {
                    percents = (float)m_internal_tween_algorithm(percents);
                }

                var delta_size = (_config.m_finish_rotate_z - _config.m_start_rotate_z) * percents;
                _config.CurrentRotateZ = _config.m_start_rotate_z + delta_size * _config.m_rotate_speed;
            }
            return(true);
        }
        public bool behaviour_type_animation(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;

            if (_config.IsBegin)
            {
                _config.IsBegin = false;
                _config.m_control_object.SetActive(true);

                Animator anim_control = _config.m_control_object.GetComponent <Animator>();
                if (anim_control != null && _config.m_animate_begin_name_state != "")
                {
                    anim_control.SetInteger(_config.m_animate_begin_name_state, _config.m_animate_begin_state_value);
                }
            }

            if (_config.m_current_time >= _config.m_max_time)
            {
                _config.m_current_time = _config.m_max_time;
                _config.IsEnd          = true;

                Animator anim_control = _config.m_control_object.GetComponent <Animator>();
                if (anim_control != null && _config.m_animate_end_name_state != "")
                {
                    anim_control.SetInteger(_config.m_animate_end_name_state, _config.m_animate_end_state_value);
                }
            }


            return(true);
        }
        public bool behaviour_type_change_sprite(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;
            _config.IsBegin         = false;
            _config.IsEnd           = true;
            Image img = _config.m_control_object.GetComponent <Image>();

            if (img != null)
            {
                img.sprite = _config.m_new_sprite;
            }
            return(true);
        }
    public void restartLoopEffect(effectConfig _effect_config)
    {
        if (_effect_config == null)
        {
            Debug.unityLogger.Log("effectsManager", "Loop effect is null");
            return;
        }

        if (_effect_config.IsMainEffect)
        {
            _effect_config.m_delay_value = _effect_config.m_delta_time_loop;
            cRunEffect run = generateEffectFrom(_effect_config);

            if (run != null)
            {
                //_effect_config.m_final_action += _action;
                replaceEffect(_effect_config.m_root_name, run);
            }
        }
        else
        {
            Debug.unityLogger.Log("effectsManager", "Loop effect is not main");
        }
    }
    public cRunEffect generateEffectFrom(effectConfig _root_config)
    {
        _root_config.IsReadyForRemove = false;
        _root_config.Delay            = _root_config.m_delay_value;
        if (_root_config.m_type != eEffectType.COMPOUND_TYPE)
        {
            if (_root_config.m_control_object == null)
            {
                Debug.unityLogger.Log("effectsManager", "Not Compound Effect must have control object: " + _root_config.m_root_name + "/" + _root_config.m_type.ToString());
                return(null);
            }
            _root_config.IsVisibleState = _root_config.m_control_object.activeSelf;
        }

        if (_root_config.m_type == eEffectType.TERMINAL_MOVE_LINE_LOCAL_POS ||
            _root_config.m_type == eEffectType.TERMINAL_MOVE_ARC_LOCAL_POS)
        {
            if (_root_config.m_obj_finish_pos != null)
            {
                _root_config.m_finish_pos = new Vector2(_root_config.m_obj_finish_pos.transform.localPosition.x,
                                                        _root_config.m_obj_finish_pos.transform.localPosition.y);
            }

            if (!_root_config.m_is_use_external_start_position)
            {
                _root_config.m_start_pos = _root_config.m_control_object.transform.localPosition;
            }
        }
        else if (_root_config.m_type == eEffectType.TERMINAL_MOVE_LINE_GLOBAL_POS ||
                 _root_config.m_type == eEffectType.TERMINAL_MOVE_ARC_GLOBAL_POS)
        {
            if (_root_config.m_obj_finish_pos != null)
            {
                _root_config.m_finish_pos = new Vector2(_root_config.m_obj_finish_pos.transform.position.x,
                                                        _root_config.m_obj_finish_pos.transform.position.y);
            }

            if (!_root_config.m_is_use_external_start_position)
            {
                _root_config.m_start_pos = _root_config.m_control_object.transform.position;
            }
        }
        else if (_root_config.m_type == eEffectType.TERMINAL_CHANGE_SPRITE)
        {
            if (_root_config.m_control_object)
            {
                Image img = _root_config.m_control_object.GetComponent <Image>();
                if (img != null)
                {
                    _root_config.OldSprite = img.sprite;
                }
            }
        }
        else if (_root_config.m_type == eEffectType.TERMINAL_FILL_RECT)
        {
            if (_root_config.m_control_object)
            {
            }
        }
        else if (_root_config.m_type == eEffectType.TERMINAL_ANIMATION)
        {
        }

        cRunEffect root_effect = null;

        if (!_root_config.m_is_switch_off)
        {
            root_effect = cRunEffect.create(_root_config, this);

            foreach (Transform child in _root_config.gameObject.transform)
            {
                effectConfig child_config = child.GetComponent <effectConfig>();
                if (child_config != null && !child_config.m_is_switch_off)
                {
                    cRunEffect child_effect = generateEffectFrom(child_config);
                    if (child_effect != null)
                    {
                        //Debug.unityLogger.Log("Ariman", "generateEffectFrom: add: " + child_config.m_root_name);
                        root_effect.add(child_effect);
                    }
                }
            }
        }

        return(root_effect);
    }
 public bool behaviour_type1(effectConfig _config)
 {
     return(false);
 }
        public static cRunEffect create(effectConfig _config, effectsManager _manager)
        {
            cRunEffect effect = null;

            effect = new cRunEffect(_config);
            effect.setManager(_manager);

            if (_config.m_type == eEffectType.COMPOUND_TYPE)
            {
            }
            else if (_config.m_type == eEffectType.TERMINAL_ROTATE)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_rotate;
            }
            else if (_config.m_type == eEffectType.TERMINAL_MOVE_LINE_GLOBAL_POS ||
                     _config.m_type == eEffectType.TERMINAL_MOVE_LINE_LOCAL_POS)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_move_along_line;
                effect.m_trail_system  = Utilities.getTrailSystem();
                effect.m_trail_id      = effect.m_trail_system.addTrail();
            }
            else if (_config.m_type == eEffectType.TERMINAL_MOVE_ARC_GLOBAL_POS ||
                     _config.m_type == eEffectType.TERMINAL_MOVE_ARC_LOCAL_POS)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_move_along_arc;
                effect.m_trail_system  = Utilities.getTrailSystem();
                effect.m_trail_id      = effect.m_trail_system.addTrail();
            }
            else if (_config.m_type == eEffectType.TERMINAL_SCALE)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_scale;
            }
            else if (_config.m_type == eEffectType.TERMINAL_ARRIVE)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_arrive;
                if (effect.m_config.m_is_state_normalize)
                {
                    effect.m_config.m_control_object.SetActive(false);
                }
            }
            else if (_config.m_type == eEffectType.TERMINAL_HIDE)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_hide;
                if (effect.m_config.m_is_state_normalize)
                {
                    effect.m_config.m_control_object.SetActive(true);
                }
            }
            else if (_config.m_type == eEffectType.TERMINAL_CHANGE_SPRITE)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_change_sprite;
            }
            else if (_config.m_type == eEffectType.TERMINAL_FILL_RECT)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_fill_rect;
                if (effect.m_config.m_is_state_normalize)
                {
                    var img = effect.m_config.m_control_object.GetComponent <Image>();
                    if (img != null)
                    {
                        img.fillAmount = 0;
                    }
                }
            }
            else if (_config.m_type == eEffectType.TERMINAL_ANIMATION)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_animation;
                if (effect.m_config.m_is_state_normalize)
                {
                    var img = effect.m_config.m_control_object.GetComponent <Image>();
                    if (img != null)
                    {
                        img.fillAmount = 0;
                    }
                }
            }
            else if (_config.m_type == eEffectType.TERMINAL_CHANGE_COLOR)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_change_color;
            }
            else if (_config.m_type == eEffectType.TERMINAL_TEXT_COUNTER)
            {
                effect.m_config.m_mode = eEffectMode.TERMINAL_MODE;
                effect.m_behaviour     = effect.behaviour_type_counter;
            }
            return(effect);
        }
Exemplo n.º 15
0
    public static void effectFinalAction(effectConfig _config)
    {
        var main_logic = GameObject.Find("AppLogic").GetComponent <scriptAppLogic>();

        main_logic.doAction(_config);
    }
        public bool behaviour_move_along_arc(effectConfig _config)
        {
            var dt = Time.deltaTime;

            if (_config.Delay > 0)
            {
                _config.Delay -= dt;
                if (_config.Delay > 0)
                {
                    return(false);
                }
            }

            _config.m_current_time += dt;

            if (_config.IsBegin)
            {
                _config.IsBegin = false;
                _config.m_control_object.SetActive(true);

                if (_config.m_is_link_to_last_position)
                {
                    if (_config.m_type == eEffectType.TERMINAL_MOVE_ARC_LOCAL_POS)
                    {
                        _config.m_start_pos = _config.m_control_object.transform.localPosition;
                        _config.CurrentPos  = _config.m_control_object.transform.localPosition;
                    }
                    else if (_config.m_type == eEffectType.TERMINAL_MOVE_ARC_GLOBAL_POS)
                    {
                        _config.m_start_pos = _config.m_control_object.transform.position;
                        _config.CurrentPos  = _config.m_control_object.transform.position;
                    }
                }
                else
                {
                    _config.CurrentPos = _config.m_start_pos;
                }
            }

            if (_config.m_current_time >= _config.m_max_time)
            {
                _config.m_current_time = _config.m_max_time;
                _config.IsEnd          = true;

                _config.CurrentPos = _config.m_finish_pos;
            }
            else
            {
                float  delta_time = _config.m_current_time;
                double percents   = delta_time / _config.m_max_time;

                var    main_move       = (_config.m_finish_pos - _config.m_start_pos);
                double diff_progress_1 = percents - _config.LastProgress;
                _config.LastProgress = percents;

                if (m_internal_tween_algorithm != null)
                {
                    percents = m_internal_tween_algorithm(percents);
                }

                Vector2 delta_pos = main_move * (float)diff_progress_1;
                _config.CurrentPos += delta_pos;


                percents = Math.Sin(percents * Math.PI);

                double diff_progress2 = percents - _config.m_arc_settings.m_last_progress;
                _config.m_arc_settings.m_last_progress = percents;
                _config.CurrentPos = _config.CurrentPos + _config.m_arc_settings.m_arc_shift * (float)diff_progress2;
            }
            return(true);
        }
    public static void resetConfig(effectConfig _config)
    {
        if (_config == null)
        {
            return;
        }

        if (_config.m_type == eEffectType.TERMINAL_ROTATE)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                var temp = _config.m_control_object.transform.eulerAngles;
                temp.z = _config.m_start_rotate_z;
                _config.m_control_object.transform.eulerAngles = temp;
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_MOVE_LINE_LOCAL_POS ||
                 _config.m_type == eEffectType.TERMINAL_MOVE_ARC_LOCAL_POS)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                //_root_config.m_control_object.transform.localPosition = _root_config.m_start_pos;

                Vector3 temp = _config.m_start_pos;
                temp.z = _config.m_control_object.transform.localPosition.z;
                _config.m_control_object.transform.localPosition = temp;

                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_MOVE_LINE_GLOBAL_POS ||
                 _config.m_type == eEffectType.TERMINAL_MOVE_ARC_GLOBAL_POS)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                //_root_config.m_control_object.transform.position = _root_config.m_start_pos;

                Vector3 temp = _config.m_start_pos;
                temp.z = _config.m_control_object.transform.position.z;
                _config.m_control_object.transform.position = temp;

                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_SCALE)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                _config.m_control_object.transform.localScale = _config.m_start_scale;
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_ARRIVE)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                _config.m_control_object.SetActive(false);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_HIDE)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                _config.m_control_object.SetActive(true);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_CHANGE_SPRITE)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                var img = _config.m_control_object.GetComponent <Image>();
                if (img != null && _config.OldSprite != null)
                {
                    img.sprite = _config.OldSprite;
                }
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_FILL_RECT)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                var img = _config.m_control_object.GetComponent <Image>();
                if (img != null)
                {
                    img.fillAmount = 0;
                }
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_ANIMATION)
        {
            /*if (_root_config.m_is_child_node_reset_sign)
             * {
             *  var img = _root_config.m_control_object.GetComponent<Image>();
             *  if (img != null)
             *  {
             *      img.fillAmount = 0;
             *  }
             *  _root_config.m_control_object.SetActive(_root_config.Is_visible_state);
             * }*/
        }
        else if (_config.m_type == eEffectType.TERMINAL_CHANGE_COLOR)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                var img = _config.m_control_object.GetComponent <Image>();

                if (img != null)
                {
                    img.color = _config.m_start_color;
                }
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }
        else if (_config.m_type == eEffectType.TERMINAL_TEXT_COUNTER)
        {
            if (_config.m_is_child_node_reset_sign)
            {
                string pattern = _config.m_counter_pattern;
                string temp    = String.Format(pattern, _config.m_start_counter);
                Text   control = _config.m_control_object.GetComponent <Text>();
                if (control != null)
                {
                    control.text = temp;
                }
                _config.m_control_object.SetActive(_config.IsVisibleState);
            }
        }

        _config.clearConfig();

        foreach (Transform child in _config.gameObject.transform)
        {
            effectConfig child_config = child.GetComponent <effectConfig>();
            if (child_config != null && !child_config.m_is_switch_off)
            {
                resetConfig(child_config);
            }
        }
    }