Esempio n. 1
0
    public void Confirm()
    {
        //技能逻辑
        var currentHp    = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").value;
        var currentHPMax = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").valueMax;

        //“修养”接口预留(通过控制factor)

        RoundManager.GetInstance().Invoke(() => {
            var restValue = (int)(currentHPMax * factor);
            restValue     = currentHp + restValue > currentHPMax ? currentHPMax - currentHp : restValue;

            var hp = currentHp + restValue;

            UIManager.GetInstance().FlyNum(character.GetComponent <CharacterStatus>().arrowPosition / 2 + character.position + Vector3.down * 0.2f, restValue.ToString(), UIManager.hpColor);


            ChangeData.ChangeValue(character, "hp", hp);
            //持续到回合结束的防御力debuff
            var buff = new DataBuff(1, "def", -5);
            buff.Apply(character);
            character.GetComponent <CharacterStatus>().Buffs.Add(buff);

            //回合直接结束
            UnityEngine.Object.Destroy(restUI);
            skillState = SkillState.confirm;
            character.GetComponent <Unit>().OnUnitEnd();
            RoundManager.GetInstance().EndTurn();
        }, 0.5f);
    }
Esempio n. 2
0
    private void Confirm()
    {
        var animator = character.GetComponent <Animator>();

        animator.SetInteger("Skill", 2);
        UnityEngine.Object.Destroy(restoreChakraUI);

        RoundManager.GetInstance().Invoke(() => {
            animator.speed = 0;
            FXManager.GetInstance().Spawn("Chakra", animator.GetBoneTransform(HumanBodyBones.Chest).position, 3f);
        }, 0.5f);
        RoundManager.GetInstance().Invoke(() => {
            animator.speed = 1;
            animator.SetInteger("Skill", 0);
            var currentHp    = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").value;
            var mud          = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mud").value;
            var restoreValue = slider.value - character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mp").value;
            var hp           = currentHp - mud * restoreValue;
            ChangeData.ChangeValue(character, "hp", (int)hp);
            ChangeData.ChangeValue(character, "mp", (int)slider.value);

            UIManager.GetInstance().FlyNum(character.GetComponent <CharacterStatus>().arrowPosition / 2 + character.position + Vector3.down * 0.2f, restoreValue.ToString(), UIManager.mpColor);

            var buff = new DataBuff(1, "def", -5);
            buff.Apply(character);
            character.GetComponent <CharacterStatus>().Buffs.Add(buff);

            character.GetComponent <Unit>().OnUnitEnd();   //真正的回合结束所应执行的逻辑。
            RoundManager.GetInstance().EndTurn();

            skillState = SkillState.confirm;
        }, 0.5f + 3.4f);
    }
Esempio n. 3
0
    public void Confirm(int value)                                                                                                //此value为改变后的结果
    {
        var currentHp    = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").value;                //获取当前HP
        var mud          = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mud").value;               //获取mud属性
        var restoreValue = (float)value - character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mp").value; //计算恢复的值
        var hp           = currentHp - mud * restoreValue;                                                                        //计算损失的HP

        ChangeData.ChangeValue(character, "hp", (int)hp);                                                                         //执行改变
        ChangeData.ChangeValue(character, "mp", value);

        var buff = new DataBuff(1, "def", -5);

        buff.Apply(character);
        character.GetComponent <CharacterStatus>().Buffs.Add(buff);
        skillState = SkillState.confirm;

        character.GetComponent <Unit>().OnUnitEnd();   //真正的回合结束所应执行的逻辑。
        RoundManager.GetInstance().EndTurn(character);
    }
Esempio n. 4
0
    public void Confirm()
    {
        //技能逻辑
        var currentHp    = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").value;
        var currentHPMax = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").valueMax;
        //“修养”接口预留(通过控制factor)
        var restValue = (int)(currentHPMax * factor);
        var hp        = currentHp + restValue > currentHPMax ? currentHPMax : currentHp + restValue;

        ChangeData.ChangeValue(character, "hp", hp);
        //持续到回合结束的防御力debuff
        var buff = new DataBuff(1, "def", -5);

        buff.Apply(character);
        character.GetComponent <CharacterStatus>().Buffs.Add(buff);

        //回合直接结束
        UnityEngine.Object.Destroy(restUI);
        skillState = SkillState.confirm;
        character.GetComponent <Unit>().OnUnitEnd();
        RoundManager.GetInstance().EndTurn();
    }
Esempio n. 5
0
    private void Confirm()
    {
        var currentHp    = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "hp").value;
        var mud          = character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mud").value;
        var restoreValue = slider.value - character.GetComponent <CharacterStatus>().attributes.Find(d => d.eName == "mp").value;
        var hp           = currentHp - mud * restoreValue;

        ChangeData.ChangeValue(character, "hp", (int)hp);
        ChangeData.ChangeValue(character, "mp", (int)slider.value);

        var buff = new DataBuff(1, "def", -5);

        buff.Apply(character);
        character.GetComponent <CharacterStatus>().Buffs.Add(buff);

        UnityEngine.Object.Destroy(restoreChakraUI);

        character.GetComponent <Unit>().OnUnitEnd();   //真正的回合结束所应执行的逻辑。
        RoundManager.GetInstance().EndTurn(character);

        skillState = SkillState.confirm;
    }