Esempio n. 1
0
    /// <summary>
    /// 加载并创建技能实例
    /// </summary>
    /// <param name="skillNum">技能ID</param>
    /// <param name="skillHolder">技能持有单位</param>
    /// <param name="skillLevel">技能等级</param>
    /// <returns>技能实例</returns>
    public SkillInfo CreateSkillInfo(int skillNum, DisplayOwner skillHolder, int skillLevel = 1)
    {
        SkillInfo result = null;

        // 验证技能ID的有效性
        if (skillNum <= 0)
        {
            return(null);
        }
        // 检查缓存
        if (SkillInfoDic.ContainsKey(skillNum))
        {
            // 复制技能数据
            result = SkillInfoDic[skillNum];
        }
        else
        {
            // 从AB文件中加载
            var skillTxt = GetSkillScript(skillNum, SkillManager.Single.RunType);
            if (!string.IsNullOrEmpty(skillTxt))
            {
                result = FormulaConstructor.SkillConstructor(skillTxt);
                // 将其放入缓存
                AddSkillInfo(result);
            }
        }
        result = CopySkillInfo(result);
        result.ReleaseMember = skillHolder;
        result.ReplaceData(skillLevel);
        // 将技能实现放入实现列表
        skillInstanceDic.Add(result.AddtionId, result);
        return(result);
    }
Esempio n. 2
0
    /// <summary>
    /// 加载buff类
    /// 如果缓存中没有就从文件照片那个加载
    /// </summary>
    /// <param name="buffId">buffID</param>
    /// <param name="receive">buff的接受者</param>
    /// <param name="release">buff的释放者</param>
    /// <param name="buffRank">Buff等级</param>
    /// <returns></returns>
    public BuffInfo CreateBuffInfo(int buffId, DisplayOwner receive, DisplayOwner release, int buffRank = 1)
    {
        BuffInfo result = null;

        // 验证技能ID的有效性
        if (buffId > 0)
        {
            // 检查缓存
            if (buffDic.ContainsKey(buffId))
            {
                // 复制buff
                result = buffDic[buffId];
            }
            else
            {
                // 加载文件内容
                var buffTxt = GetBuffScript(buffId, SkillManager.Single.RunType);
                if (!string.IsNullOrEmpty(buffTxt))
                {
                    result = FormulaConstructor.BuffConstructor(buffTxt);
                    // 将其放入缓存
                    AddBuffInfo(result);
                }
            }
        }
        result = CopyBuffInfo(result);
        result.ReplaceData(buffRank);
        // 将实现放入实现列表
        buffInstanceDic.Add(result.AddtionId, result);
        result.ReceiveMember = receive;
        result.ReleaseMember = release;
        result.BuffRank      = buffRank;
        return(result);
    }
Esempio n. 3
0
 void Start()
 {
     // 加载技能内容
     skillInfo  = FormulaConstructor.SkillConstructor(formulaStr);
     skillInfo2 = FormulaConstructor.SkillConstructor(formulaStr2);
     skillInfo3 = FormulaConstructor.SkillConstructor(formulaStr3);
 }
Esempio n. 4
0
    /// <summary>
    /// 加载Remain类
    /// 如果缓存中没有就从文件照片那个加载
    /// </summary>
    /// <param name="remainId">RemainID</param>
    /// <param name="release">Remain的释放者</param>
    /// <param name="level">Remain等级</param>
    /// <returns></returns>
    public RemainInfo CreateRemainInfo(int remainId, DisplayOwner release, int level = 1)
    {
        RemainInfo result = null;

        // 验证技能ID的有效性
        if (remainId > 0)
        {
            // 检查缓存
            if (remainDic.ContainsKey(remainId))
            {
                // 复制buff
                result = remainDic[remainId];
            }
            else
            {
                // 加载文件内容
                var buffTxt = GetRemainScript(remainId, SkillManager.Single.RunType);
                if (!string.IsNullOrEmpty(buffTxt))
                {
                    result = FormulaConstructor.RemainConstructor(buffTxt);
                    // 将其放入缓存
                    AddRemainInfo(result);
                }
            }
        }

        if (result == null)
        {
            return(null);
        }

        result = CopyRemainInfo(result);
        result.ReplaceData(level);
        // 将实现放入实现列表
        remainInstanceDic.Add(result.AddtionId, result);
        result.ReleaseMember = release;
        return(result);
    }
Esempio n. 5
0
    /// <summary>
    /// 初始化技能
    /// </summary>
    private void InitSkill()
    {
        // 加载技能
        string formulaStr  = @"SkillNum(1001)
{
        Point(1,test/ExplordScope,0,0,3,10,1,10),
        CollisionDetection(0, 10, 1, 0, -1, 10, 0, 0, -1, 1)
        {
            Skill(1, 1002, 1)
            //PointToObj(1,test/TrailPrj,10,0,10,1,10),
            //Point(1,test/ExplordScope,1,0,3,10,1,10),
        }
}";
        string formulaStr2 = @"SkillNum(1002)
{
        PointToObj(1,test/TrailPrj,10,0,10,1,10),
        Point(1,test/ExplordScope,0,3,10,1,10),
}";
        string formulaStr3 = @"SkillNum(1003)
{
        SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1)
        {
            //PointToObj(1,test/TrailPrj,10,0,10,1,10),
            Point(1,test/ExplordScope,1,{%1},10,1,10),
        }
}
        // 数据
        [
            TriggerLevel1(1)
            TriggerLevel2(1)
            100, 5
        ]
";
        string formulaStr4 = @"SkillNum(1004)
{
            TargetPointSelector(1,3,90,0)
            //Move(1, 2, 3, false)
            SlideCollisionDetection(1, 0, 2, 1, 100, 40, -1)
            //PointToPoint(1,test/TrailPrj,0,2,10,0,10,1,10),
}
[
    IsActive(true,101001)
]
";
        string formulaStr5 = @"SkillNum(1005)
        {
            SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1)
            {
                //If(1, 0, Health, 0_100)
                //{
                    HealthChange(1,0,0,0,1)
                    //PointToObj(1,test/TrailPrj,10,0,10,1,10),
                    Point(1,test/ExplordScope,1,{%1},10,1,10),   
                //}
            }
        
        }

        [
            TriggerLevel1(1)
            TriggerLevel2(1)
            Description(哟哦哦{%0},哦哟哦哟{%1})
            100, 5
        ]
";
        string formulaStr6 = @"SkillNum(1006)
        {
            HealthChange(1,0,0,0,1)
        }
";

        string formulaStr7 = @"SkillNum(1007)
        {
            SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1)
            {
                //If(1, 0, Health, 0_100)
                //{
                    Buff(1,1007, 1)
                    Buff(1,1008, 1)
                    //PointToObj(1,test/TrailPrj,10,0,10,1,10),
                    //Point(1,test/ExplordScope,1,{%1},10,1,10),   
                //}
            }
        }

        [
            CDTime(1)
            CDGroup(2)
            Icon(test/Icon1)
            ReleaseTime(10)
            TriggerLevel1(1)
            TriggerLevel2(1)
            Description(Test{%0},测试{%1})
            100, 5
        ]
";
        string formulaStr8 = @"SkillNum(1008)
        {
            // 选择目标点
            TargetPointSelector(1,3,<Attack1>+10,0)
            Remain(1, 2, 10000, false)
        }

        [
            CDTime(1)
            CDGroup(2)
            Icon(test/Icon1)
            ReleaseTime(10)
            TriggerLevel1(1)
            TriggerLevel2(1)
            Description(Test{%0},测试{%1})
            10, 5
        ]
";
        string formulaStr9 = @"SkillNum(1009)
        {
            CollisionDetection(0, 50, 1, 1, -1, 100, 100, 0, 101009, true)
            {
                //If(1,0,IsMechanic,false_true)
                //{
                    PointToObj(1,zidan1.prefab,10,0,10,1,10),
                    //Point(1,test/ExplordScope,1,0,3,10,1,10),
                //}
            }
            // 选择目标点
            // TargetPointSelector(1,0,10,10)
            // Remain(1, 2, 10000, false)
        }

        [
            CDTime(1)
            CDGroup(2)
            Icon(test/Icon1)
            ReleaseTime(10)
            TriggerLevel1(1)
            TriggerLevel2(1)
            Description(Test{%0},测试{%1})
            100, 5
        ]
";

        string formulaStr10 = @"SkillNum(1010)
        {
            Death(1,0)   
        }
";
        string formulaStr11 = @"SkillNum(1011)
        {
            SummonedUnit(1,1,3,101001,1)   
        }
";
        string formulaStr12 = @"SkillNum(10006)
        Action
        {

        }
		[
            ChangeData(IsDambody, true, 0)
		]
";
        string buffStr1     = @"BuffNum(1007)
        Action
        {
            HealthChange(1,0,0,0,1,1,0)
        }

        [
            TickTime(1)
            BuffTime(10)
            TriggerLevel1(4)
            TriggerLevel2(18)
            BuffLevel(1)
            BuffGroup(1)
            ChangeData(CurrentHP,100,0)
        ]
";

        string buffStr2 = @"BuffNum(1008)
        Action
        {
            ResistDemage(1,3,1,true)
            {
                Point(1,test/ExplordScope,0,3,10,1,10),  
            }
        }
        [
            BuffTime(10)
            TriggerLevel1(3)
            TriggerLevel2(10)
            DetachTriggerLevel1(3)
            DetachTriggerLevel2(10)
            DetachQualified(ResistDemage,<=,0.0f)
        ]
";

        // 光环1
        string remainStr1 = @"RemainNum(10000)
        Action
        {
            //Point(1,test/ExplordScope,0,3,10,1,10)
        }
        Enter
        {
            Point(1,test/ExplordScope,1,5,10,1,10)
        }
        Out
        {
            Point(1,test/ExplordScope,1,5,10,1,10)
        }
        [
            Range(60)
            DuringTime(10)
            ActionTime(1)
            ActionCamp(1)
            IsFollow(false)
        ]
";


        //var skillInfo = FormulaConstructor.SkillConstructor(formulaStr);
        //var skillInfo2 = FormulaConstructor.SkillConstructor(formulaStr2);
        //var skillInfo3 = FormulaConstructor.SkillConstructor(formulaStr3);
        //var skillInfo4 = FormulaConstructor.SkillConstructor(formulaStr4);
        //var skillInfo5 = FormulaConstructor.SkillConstructor(formulaStr5);
        //var skillInfo7 = FormulaConstructor.SkillConstructor(formulaStr7);
        var skillInfo8  = FormulaConstructor.SkillConstructor(formulaStr8);
        var skillInfo9  = FormulaConstructor.SkillConstructor(formulaStr9);
        var skillInfo10 = FormulaConstructor.SkillConstructor(formulaStr10);
        var skillInfo11 = FormulaConstructor.SkillConstructor(formulaStr11);
        var skillInfo12 = FormulaConstructor.SkillConstructor(formulaStr12);

        var buffInfo1 = FormulaConstructor.BuffConstructor(buffStr1);
        var buffInfo2 = FormulaConstructor.BuffConstructor(buffStr2);

        remain = FormulaConstructor.RemainConstructor(remainStr1);

        //SkillManager.Single.AddSkillInfo(skillInfo);
        //SkillManager.Single.AddSkillInfo(skillInfo2);
        //SkillManager.Single.AddSkillInfo(skillInfo3);
        //SkillManager.Single.AddSkillInfo(skillInfo4);
        //SkillManager.Single.AddSkillInfo(skillInfo5);
        //SkillManager.Single.AddSkillInfo(skillInfo7);
        SkillManager.Single.AddSkillInfo(skillInfo8);
        SkillManager.Single.AddSkillInfo(skillInfo9);
        SkillManager.Single.AddSkillInfo(skillInfo10);
        SkillManager.Single.AddSkillInfo(skillInfo11);
        SkillManager.Single.AddSkillInfo(skillInfo12);


        BuffManager.Single.AddBuffInfo(buffInfo1);
        BuffManager.Single.AddBuffInfo(buffInfo2);

        RemainManager.Single.AddRemainInfo(remain);

        //Debug.Log(skillInfo5.GetReplacedDescription(1));

        //foreach (var item in "{%1} + {%2}{%3}".Split('{', '}'))
        //{
        //    Debug.Log(item);
        //}
    }