コード例 #1
0
    public void DoColliderAction(ICharaBattle player)
    {
        _colliderCount++;
        if (_colliderInfo.ColliderMax != -1 && _colliderCount >= _colliderInfo.ColliderMax)
        {
            Complete();
            return;
        }
        if (null != _colliderInfo.FightEffectList && _colliderInfo.FightEffectList.Count > 0)
        {
            Vector3 dir = new Vector3(_collider.x, 0, _collider.y);
            dir = (player.MovePos - dir).normalized;

            for (int i = 0; i < _colliderInfo.FightEffectList.Count; i++)
            {
                FightEffectInfo info = _colliderInfo.FightEffectList[i];
                if (info.EffectTarget == FIGHT_EF_TARGET.SELF)
                {
                    FightEffectDefine.ParseEffect(_skillPlayer, info, _skillPlayer.BattleId, dir);
                }
                else
                {
                    SkillCommand command = null;
                    if (info.EffectType == FIGHT_EF_TPYE.ACTION)
                    {
                        uint frame = ZTBattleSceneManager.GetInstance().SceneFrame;
                        command = FightDefine.GetSkillCommand(player.BattleId, frame, info.Param1, dir, player.MovePos);
                    }
                    FightEffectDefine.ParseEffect(player, info, _skillPlayer.BattleId, dir, command);
                }
            }
        }
    }
コード例 #2
0
 private static void AddBuff(ICharaBattle battleInfo, FightEffectInfo effect, uint userId)
 {
     if (userId <= 0)
     {
         return;
     }
     battleInfo.AddBuff(new BuffData(effect.Param1, ZTBattleSceneManager.GetInstance().SceneFrame, userId));
 }
コード例 #3
0
    //激活技能
    private static void ActivateSkill(ICharaBattle battleInfo, FightEffectInfo effect)
    {
        int skillId = effect.Param1;

        if (skillId > 0)
        {
            battleInfo.ActivateSkillId = skillId;
        }
    }
コード例 #4
0
    private static void DoAction(ICharaBattle battleInfo, FightEffectInfo effect, uint userId = 0, Vector3 dir = default(Vector3), object takeParam = null)
    {
        SkillCommand skill = takeParam as SkillCommand;

        if (null != skill && null != battleInfo)
        {
            battleInfo.SkillCommand(skill);
        }
    }
コード例 #5
0
 //震屏
 private static void SharkScreen(ICharaBattle battleInfo, FightEffectInfo effect, uint userId)
 {
     //非玩家自己 不需要震动
     if (battleInfo.BattleId == ZTBattleSceneManager.GetInstance().MyPlayer.BattleId || userId == ZTBattleSceneManager.GetInstance().MyPlayer.BattleId)
     {
         int   time   = effect.Param1;
         float offset = effect.Param2 / IntToFloat;
         ZTBattleSceneManager.GetInstance().SharkScreen(time, offset);
     }
 }
コード例 #6
0
    private static void RemoveBuff(ICharaBattle battleInfo, FightEffectInfo effect)
    {
        switch ((BUFF_REMOVE_TYPE)effect.Param1)
        {
        case BUFF_REMOVE_TYPE.ID:
            battleInfo.RemoveBuff(effect.Param2);
            break;

        case BUFF_REMOVE_TYPE.TYPE:
            battleInfo.RemoveBuffByType(effect.Param2);
            break;
        }
    }
コード例 #7
0
    private static void CalculateHurt(ICharaBattle battleInfo, FightEffectInfo effect, uint userId)
    {
        ICharaFight target = battleInfo as ICharaFight;
        ICharaFight user   = ZTBattleSceneManager.GetInstance().GetCharaById(userId) as ICharaFight;

        if (null == target || null == user)
        {
            return;
        }
        HurtInfo hurtInfo = new HurtInfo();

        hurtInfo.Type     = HURT_TYPE.NORMAL;
        hurtInfo.BattleId = battleInfo.BattleId;
        hurtInfo.Pos      = battleInfo.MovePos;
        hurtInfo.Value    = -user.Attack;

        target.AddHurt(hurtInfo);
    }
コード例 #8
0
    private static void ChangeAttribute(ICharaBattle battleInfo, FightEffectInfo effect)
    {
        ICharaFight target = battleInfo as ICharaFight;

        if (null == target)
        {
            return;
        }

        float multi = 0; //乘数
        int   value = 0; //值

        //按以下选项修改上面属性
        switch ((ATT_ALTER_TYPE)effect.Param2)
        {
        case ATT_ALTER_TYPE.VALUE:
            value = effect.Param3;
            break;

        case ATT_ALTER_TYPE.PRECENT:
            multi = effect.Param3 / 100.0f;
            break;
        }

        //改变的属性选择
        switch ((ATTRIBUTE)effect.Param1)
        {
        case ATTRIBUTE.ATTACK:
            target.Attack += Mathf.CeilToInt(target.Attack * multi) + value;
            break;

        case ATTRIBUTE.HP:
            int      result   = Mathf.CeilToInt(target.MaxHp * multi) + value;
            HurtInfo hurtInfo = new HurtInfo();
            hurtInfo.Type     = HURT_TYPE.NORMAL;
            hurtInfo.BattleId = battleInfo.BattleId;
            hurtInfo.Pos      = battleInfo.MovePos;
            hurtInfo.Value    = result;
            target.AddHurt(hurtInfo);
            break;
        }
    }
コード例 #9
0
    /// <summary>
    /// 解析技能效果
    /// </summary>
    /// <param name="battleInfo">生效者id</param>
    /// <param name="effect">效果信息</param>
    /// <param name="userId">使用者id</param>
    /// <param name="dir">方向(击退 等带方向效果附带参数)</param>
    /// <param name="takeParam">技能 等附带参数</param>
    public static void ParseEffect(ICharaBattle battleInfo, FightEffectInfo effect, uint userId = 0, Vector3 dir = default(Vector3), object takeParam = null)
    {
        if (null == battleInfo)
        {
            return;
        }

        switch (effect.EffectType)
        {
        case FIGHT_EF_TPYE.NONE:
            break;

        case FIGHT_EF_TPYE.SHARK:
            SharkScreen(battleInfo, effect, userId);
            break;

        case FIGHT_EF_TPYE.HURT:
            CalculateHurt(battleInfo, effect, userId);
            break;

        case FIGHT_EF_TPYE.ADD_BUFF:
            AddBuff(battleInfo, effect, userId);
            break;

        case FIGHT_EF_TPYE.RE_BUFF:
            RemoveBuff(battleInfo, effect);
            break;

        case FIGHT_EF_TPYE.ACTION:
            DoAction(battleInfo, effect, userId, dir, takeParam);
            break;

        case FIGHT_EF_TPYE.ARRTIBUTE:
            ChangeAttribute(battleInfo, effect);
            break;

        case FIGHT_EF_TPYE.ACTIVATE:
            ActivateSkill(battleInfo, effect);
            break;
        }
    }
コード例 #10
0
ファイル: SkillAssetEditor.cs プロジェクト: moto2002/ZTGame
    private void UpdateFightEffectItem(FightEffectInfo effectInfo)
    {
        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal();
        GUILayout.Label("EffectType:", GUILayout.Width(100));
        effectInfo.EffectType = (FIGHT_EF_TPYE)EditorGUILayout.EnumPopup("", effectInfo.EffectType);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("EffectType:", GUILayout.Width(100));
        effectInfo.EffectTarget = (FIGHT_EF_TARGET)EditorGUILayout.EnumPopup("", effectInfo.EffectTarget);
        GUILayout.EndHorizontal();

        if (effectInfo.EffectType == FIGHT_EF_TPYE.ARRTIBUTE)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("ATTRIBUTE:", GUILayout.Width(100));
            effectInfo.Param1 = (int)(ATTRIBUTE)EditorGUILayout.EnumPopup("", ((ATTRIBUTE)effectInfo.Param1));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("ATT_ALTER_TYPE:", GUILayout.Width(150));
            effectInfo.Param2 = (int)(ATT_ALTER_TYPE)EditorGUILayout.EnumPopup("", ((ATT_ALTER_TYPE)effectInfo.Param2));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Param:", GUILayout.Width(100));
            effectInfo.Param3 = EditorGUILayout.IntField(effectInfo.Param3);
            GUILayout.EndHorizontal();
        }
        else if (effectInfo.EffectType == FIGHT_EF_TPYE.SHARK)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("SharkTime:", GUILayout.Width(100));
            effectInfo.Param1 = EditorGUILayout.IntField(effectInfo.Param1);
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.Label("Offset:", GUILayout.Width(100));
            effectInfo.Param2 = EditorGUILayout.IntField(effectInfo.Param2);
            GUILayout.EndHorizontal();
        }
        else if (effectInfo.EffectType == FIGHT_EF_TPYE.RE_BUFF)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("RemoveType:", GUILayout.Width(100));
            effectInfo.Param1 = (int)(BUFF_REMOVE_TYPE)EditorGUILayout.EnumPopup("", ((BUFF_REMOVE_TYPE)effectInfo.Param1));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            string label = "BuffId:";
            if ((BUFF_REMOVE_TYPE)effectInfo.Param1 == BUFF_REMOVE_TYPE.TYPE)
            {
                label = "BuffType:";
            }

            GUILayout.Label(label, GUILayout.Width(100));
            effectInfo.Param2 = EditorGUILayout.IntField(effectInfo.Param2);
            GUILayout.EndHorizontal();
        }
        else if (effectInfo.EffectType == FIGHT_EF_TPYE.NONE || effectInfo.EffectType == FIGHT_EF_TPYE.HURT)
        {
            //do nothing
        }
        else
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Param:", GUILayout.Width(100));
            effectInfo.Param1 = EditorGUILayout.IntField(effectInfo.Param1);
            GUILayout.EndHorizontal();
        }

        GUILayout.EndVertical();
    }