Ejemplo n.º 1
0
    private void CacheChangeData(BulletParasChangeData changeData)
    {
        changeData.isCached = true;
        float beginValue;

        if (!_bullet.GetBulletPara(changeData.paraType, out beginValue))
        {
            changeData.isFinish = true;
            Logger.LogWarn("ParasChange Warn :ParaType is not valid for bullet");
        }
        else
        {
            changeData.begin = beginValue;
            float value = GetValueByChangeValue(changeData.changeValue);
            switch (changeData.changeMode)
            {
            case ParaChangeMode.ChangeTo:
                changeData.end = value;
                break;

            case ParaChangeMode.IncBy:
                changeData.end = changeData.begin + value;
                break;

            case ParaChangeMode.DecBy:
                changeData.end = changeData.begin - value;
                break;
            }
        }
    }
Ejemplo n.º 2
0
    private BulletParasChangeData CreateChangeData(BulletParaType paraType, InterpolationMode intMode)
    {
        BulletParasChangeData changeData = ObjectsPool.GetInstance().GetPoolClassAtPool <BulletParasChangeData>();

        changeData.paraType = paraType;
        changeData.mode     = intMode;
        changeData.GetInterpolationValueFunc = MathUtil.GetInterpolationFloatFunc(changeData.mode);
        return(changeData);
    }
Ejemplo n.º 3
0
    private void UpdateChangeData(int idx)
    {
        BulletParasChangeData changeData = _changeList[idx];

        if (!changeData.isFinish)
        {
            if (changeData.delay > 0)
            {
                changeData.delay--;
            }
            else
            {
                if (changeData.repeatIntervalTime == 0)
                {
                    if (!changeData.isCached)
                    {
                        CacheChangeData(changeData);
                    }
                    changeData.changeTime++;
                    float changeValue = changeData.GetInterpolationValueFunc(changeData.begin, changeData.end, changeData.changeTime, changeData.changeDuration);
                    _bullet.SetBulletPara(changeData.paraType, changeValue);
                    if (changeData.changeTime >= changeData.changeDuration)
                    {
                        changeData.repeatCount--;
                        if (changeData.repeatCount <= 0)
                        {
                            changeData.isFinish = true;
                        }
                        else
                        {
                            changeData.repeatIntervalTime = changeData.repeatInterval;
                            // 再次执行时需要重新计算一下各个数值
                            changeData.isCached = false;
                        }
                    }
                }
                if (changeData.repeatIntervalTime > 0)
                {
                    changeData.repeatIntervalTime--;
                }
            }
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 添加改变参数的事件
    /// </summary>
    /// <param name="para">参数类型</param>
    /// <param name="changeMode">改变的模式,(增加到、减少到、变化到)</param>
    /// <param name="changeValue">改变的值</param>
    /// <param name="valueOffset">改变的值的上下偏移</param>
    /// <param name="delay">延迟</param>
    /// <param name="duration">变化的持续时间</param>
    /// <param name="intMode">变化的插值方式</param>
    /// <param name="repeatCount">重复次数</param>
    /// <param name="repeatInterval">重复的时间间隔</param>
    public void AddParaChangeEvent(BulletParaType para, ParaChangeMode changeMode,
                                   ParaChangeValue value, int delay, float duration, InterpolationMode intMode, int repeatCount, int repeatInterval)
    {
        BulletParasChangeData changeData = CreateChangeData(para, intMode);

        changeData.changeMode  = changeMode;
        changeData.changeValue = value;
        changeData.delay       = delay;
        changeData.changeTime  = 0;
        // duration小于等于0时默认设置为1,以免报错
        if (duration <= 0)
        {
            duration = 1;
        }
        changeData.changeDuration = duration;
        changeData.repeatCount    = repeatCount;
        changeData.repeatInterval = repeatInterval;
        _changeList.Add(changeData);
        _listCount++;
    }