Esempio n. 1
0
    public bool Hit(GameObject target, SkillCell skill = null)
    {
        atkAnimName = this.owner.name + "_atk";
        UnitStats ownerStats  = owner.GetComponent <UnitStats>();
        UnitStats targetStats = target.GetComponent <UnitStats>();

        if (!isMagic)
        {
            MPCost = 0;
        }
        if (ownerStats.realMP >= MPCost)
        {
            float currentAtkMultipilier = (Random.value * (maxAtkMultiplier - minAtkMultiplier)) + minAtkMultiplier;
            float damage = currentAtkMultipilier * (isMagic ? ownerStats.INT + float.Parse(skill.Data.damage) : ownerStats.ATK);
            damage = Mathf.Max(0, damage - targetStats.DEF * .25f);
            //播放伤害信息
            messageBox.GetComponent <MessageManager>().SetAtkText(owner.name, target.name, damage, isMagic);
            //播放攻击动画
            ownerStats.anim.Play(atkAnimName);
            StartCoroutine(ReceiveDamageWait(targetStats, damage, skill));
            ownerStats.realMP -= MPCost;
            StartCoroutine("TurnWait");
            return(true);
        }
        return(false);
    }
Esempio n. 2
0
 // Public
 public new void SetParam(BaseCell baseCell, BasePanel rootPanel)
 {
     base.SetParam(baseCell, rootPanel);
     if (baseCell is ItemCell)
     {
         ItemCell itemCell = baseCell as ItemCell;
         imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + itemCell.item.iconName);
     }
     if (baseCell is EquipCell)
     {
         EquipCell equipCell = baseCell as EquipCell;
         // Check Empty Cell
         if (equipCell.item == null)
         {
             Destroy(gameObject);
             return;
         }
         imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + equipCell.item.iconName);
     }
     if (baseCell is SkillCell)
     {
         SkillCell skillCell = baseCell as SkillCell;
         imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName);
     }
 }
Esempio n. 3
0
 public void SelectSkill(SkillCell skl)
 {
     //TO DO: 根据转递回来的参数设置PlayerUnitAction中的技能名
     this.currentUnit.GetComponent <PlayerUnitAction>().useSkill = skl;
     if (this.currentUnit.GetComponent <UnitStats>().realMP < float.Parse(skl.Data.cost))
     {
         Debug.Log("MP is not enough");
         return;
     }
     this.skillLayer.SetActive(false);
     this.SelectAction(ActionType.MagicalAttack);
 }
Esempio n. 4
0
    IEnumerator ReceiveDamageWait(UnitStats targetStats, float damage, SkillCell skill = null)
    {
        yield return(new WaitForSeconds(0.5f));

        if (skill != null)
        {
            //播放技能动画和音效
            audioPlayer.PlayOneShot(skill.sound, 1);
            skillAnim.Play("ID-" + skill.Data.ID);
        }
        targetStats.ReceiveDamage(damage);
        Debug.Log("ReceiveDamageWait over. time passed 1 second");
    }
Esempio n. 5
0
    // Public
    public void AddSkill(BaseSkill baseSkill)
    {
        foreach (SkillCell cell in listSkillCells)
        {
            if (cell.skill.name == baseSkill.name)
            {
                return;
            }
        }
        SkillCell skillCell = new SkillCell();

        skillCell.skill = baseSkill;
        listSkillCells.Add(skillCell);
    }
Esempio n. 6
0
    public void Init(Unit caster)
    {
        // Test Needed
        this.caster = caster;

        for (int i = 0; i < 4; i++)
        {
            SkillCells[i] = new SkillCell();
            SkillCells[i].Init(caster);
            // 设置初始技能
            ISkill tmpSkill = SkillFactory.CreateSkill(caster.attributes.data.skills[i]);
            if (tmpSkill != null)
            {
                SkillCells[i].CurrentSkill = tmpSkill;
            }
        }
    }
Esempio n. 7
0
    public void Init(Unit caster)
    {
        // Test Needed
        this.caster = caster;

        for (int i = 0; i < 4; i++)
        {
            SkillCells[i] = new SkillCell();
            SkillCells[i].Init(caster);
            // 设置初始技能
            ISkill tmpSkill = ConcreteSkillFactory.CreateSkill(caster.attributes.data.skills[i]);
            if (tmpSkill != null)
            {
                SkillCells[i].CurrentSkill = tmpSkill;
            }
        }

        EventMgr.KeyDownEvent.AddListener(SwitchCell);
        EventMgr.MouseButtonDownEvent.AddListener(CellMouseBTNDown);
        EventMgr.MouseButtonUpEvent.AddListener(CellMouseBTNUp);
    }
Esempio n. 8
0
 // Public
 public void SetParam(HotBarCell hotBarCell, BasePanel rootPanel)
 {
     base.SetParam(baseCell, rootPanel);
     if (hotBarCell.baseCell == null)
     {
         imageInnerIcon.gameObject.SetActive(false);
         return;
     }
     if (hotBarCell.baseCell is ItemCell)
     {
         ItemCell itemCell = hotBarCell.baseCell as ItemCell;
         imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + itemCell.item.iconName);
         imageInnerIcon.gameObject.SetActive(true);
     }
     if (hotBarCell.baseCell is SkillCell)
     {
         SkillCell skillCell = hotBarCell.baseCell as SkillCell;
         imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName);
         imageInnerIcon.gameObject.SetActive(true);
     }
 }
Esempio n. 9
0
 // Public
 public void SetParam(SkillCell skillCell, BasePanel rootPanel)
 {
     base.SetParam(skillCell, rootPanel);
     imageInnerIcon.sprite = Resources.Load <Sprite>("Icons/" + skillCell.skill.iconName);
 }
    /*
     *
     *  Callback Methodes
     *
     */

    void Awake()
    {
        skillCell = (SkillCell)target;
    }