コード例 #1
0
    public void Play(string text, FloatingNumber.Type type)
    {
        if (!_isLock)
        {
            _isLock = true;
            Debug.Log("dequeue");
            FloatingNumber floatingNumber = _poolQueue.Dequeue();
            floatingNumber.Play(text, type, transform.position);

            Timer unlockTimer = new Timer(CycleTime, () => //顯示下一個數字
            {
                _isLock = false;
                if (_dataQueue.Count > 0)
                {
                    Data data = _dataQueue.Dequeue();
                    Play(data.Text, data.Type);
                }
            });

            Timer recycleTimer = new Timer(Duration, () => //當前的數字消失
            {
                Debug.Log("enqueue");
                _poolQueue.Enqueue(floatingNumber);
            });
        }
        else
        {
            Data data = new Data(text, type);
            _dataQueue.Enqueue(data);
        }
    }
コード例 #2
0
ファイル: BuffSkill.cs プロジェクト: a710594/Touhou_Dungeon
    public override void SetEffect(BattleCharacter target, Dictionary <BattleCharacter, List <FloatingNumberData> > floatingNumberDic)
    {
        HitType hitType = CheckHit(_user, target.Info, target.LiveState);

        if (Data.Target == SkillData.TargetType.Us) //目標為我方則必中
        {
            hitType = HitType.Hit;
        }

        if (hitType != HitType.Miss)
        {
            target.SetBuff(Data.StatusID, Lv);
        }

        string text = "";

        FloatingNumber.Type floatingNumberType = FloatingNumber.Type.Other;

        if (hitType == HitType.Hit)
        {
            floatingNumberType = FloatingNumber.Type.Other;
            text = BattleStatusData.GetData(Data.StatusID).Message;
        }
        else if (hitType == HitType.Miss)
        {
            floatingNumberType = FloatingNumber.Type.Miss;
            text = "Miss";
        }

        _floatingNumberDic = floatingNumberDic;
        SetFloatingNumberDic(target, floatingNumberType, text);

        CheckSubSkill(target, hitType);
    }
コード例 #3
0
ファイル: PoisonSkill.cs プロジェクト: a710594/Touhou_Dungeon
    public override void SetEffect(BattleCharacter target, Dictionary <BattleCharacter, List <FloatingNumberData> > floatingNumberDic)
    {
        HitType hitType = CheckHit(_user, target.Info, target.LiveState);

        if (hitType != HitType.Miss)
        {
            target.Info.SetPoison(_poison, CalculateDamage(target.Info));
        }

        string text = "";

        FloatingNumber.Type floatingNumberType = FloatingNumber.Type.Other;

        if (hitType == HitType.Hit)
        {
            floatingNumberType = FloatingNumber.Type.Poison;
            text = BattleStatusData.GetData(Data.StatusID).Message;
        }
        else if (hitType == HitType.Miss)
        {
            floatingNumberType = FloatingNumber.Type.Miss;
            text = "Miss";
        }

        _floatingNumberDic = floatingNumberDic;
        SetFloatingNumberDic(target, floatingNumberType, text);

        CheckSubSkill(target, hitType);
    }
コード例 #4
0
ファイル: Skill.cs プロジェクト: a710594/Touhou_Dungeon
 protected void SetFloatingNumberDic(BattleCharacter character, FloatingNumber.Type type, string text)
 {
     if (!_floatingNumberDic.ContainsKey(character))
     {
         _floatingNumberDic.Add(character, new List <FloatingNumberData>());
     }
     _floatingNumberDic[character].Add(new FloatingNumberData(type, text));
 }
コード例 #5
0
    public override void SetEffect(BattleCharacter target, Dictionary <BattleCharacter, List <FloatingNumberData> > floatingNumberDic)
    {
        HitType hitType = CheckHit(_user, target.Info, target.LiveState);

        if (Data.Target == SkillData.TargetType.Us) //目標為我方則必中
        {
            hitType = HitType.Hit;
        }

        if (hitType != HitType.Miss)
        {
            target.SetStriking(Data.StatusID);
        }

        string text = "";

        FloatingNumber.Type floatingNumberType = FloatingNumber.Type.Other;

        if (hitType == HitType.Hit)
        {
            floatingNumberType = FloatingNumber.Type.Other;
            text = BattleStatusData.GetData(Data.StatusID).Message;
        }
        else if (hitType == HitType.Miss)
        {
            floatingNumberType = FloatingNumber.Type.Miss;
            text = "Miss";
        }

        _floatingNumberDic = floatingNumberDic;
        SetFloatingNumberDic(target, floatingNumberType, text);

        CheckSubSkill(target, hitType);

        //Timer timer1 = new Timer(Data.ShowTime / 2f, () =>
        //{
        //    if (hitType != Skill.HitType.Miss)
        //    {
        //        target.SetStriking(Data.StatusID);

        //        BattleUI.Instance.SetFloatingNumber(target, BattleStatusData.GetData(Data.StatusID).Message, FloatingNumber.Type.Other);
        //    }
        //    else
        //    {
        //        BattleUI.Instance.SetFloatingNumber(target, "Miss", FloatingNumber.Type.Miss);
        //    }
        //});

        //Timer timer2 = new Timer(_floatingNumberTime + Data.ShowTime / 2f, () =>
        //{
        //    CheckSubSkill(target, hitType);
        //});
    }
コード例 #6
0
ファイル: AttackSkill.cs プロジェクト: a710594/Touhou_Dungeon
    public override void SetEffect(BattleCharacter target, Dictionary <BattleCharacter, List <FloatingNumberData> > floatingNumberDic)
    {
        HitType hitType = CheckHit(_user, target.Info, target.LiveState);

        int damage = 0;

        if (hitType == HitType.Critical)
        {
            damage = CalculateDamage(_user, target.Info, true, true);
        }
        else if (hitType == HitType.Hit)
        {
            damage = CalculateDamage(_user, target.Info, false, true);
        }

        string text = "";

        FloatingNumber.Type floatingNumberType = FloatingNumber.Type.Other;
        if (hitType == Skill.HitType.Critical)
        {
            floatingNumberType = FloatingNumber.Type.Critical;
            text = damage.ToString();
        }
        else if (hitType == Skill.HitType.Hit)
        {
            floatingNumberType = FloatingNumber.Type.Damage;
            text = damage.ToString();
        }
        else if (hitType == Skill.HitType.Miss)
        {
            floatingNumberType = FloatingNumber.Type.Miss;
            text = "Miss";
        }
        else if (hitType == Skill.HitType.NoDamage)
        {
            floatingNumberType = FloatingNumber.Type.Miss;
            text = "NoDamage";
        }

        target.SetDamage(damage);

        _floatingNumberDic = floatingNumberDic;
        SetFloatingNumberDic(target, floatingNumberType, text);

        if (_subSkill != null && _subSkill.Data.Type == SkillData.TypeEnum.CureMySelf && hitType != HitType.Miss && hitType != HitType.NoDamage)
        {
            ((CureMyselfSkill)_subSkill).SetDamage(damage);
        }

        CheckSubSkill(target, hitType);
    }
コード例 #7
0
    public override void SetEffect(BattleCharacter target, Dictionary <BattleCharacter, List <FloatingNumberData> > floatingNumberDic)
    {
        HitType hitType = HitType.Hit;

        BattleController.Instance.ActAgain(target);

        string text = "";

        FloatingNumber.Type floatingNumberType = FloatingNumber.Type.Other;

        floatingNumberType = FloatingNumber.Type.Other;
        text = BattleStatusData.GetData(Data.StatusID).Message;
        _floatingNumberDic = floatingNumberDic;
        SetFloatingNumberDic(target, floatingNumberType, text);

        CheckSubSkill(target, hitType);
    }
コード例 #8
0
ファイル: BattleUI.cs プロジェクト: a710594/Touhou_Dungeon
 public void SetFloatingNumber(BattleCharacter character, string text, FloatingNumber.Type type)
 {
     _floatingNumberPoolDic[character].transform.position = Camera.main.WorldToScreenPoint(character.Sprite.transform.position);
     _floatingNumberPoolDic[character].Play(text, type);
 }
コード例 #9
0
 public Data(string text, FloatingNumber.Type type)
 {
     Text = text;
     Type = type;
 }
コード例 #10
0
 public FloatingNumberData(FloatingNumber.Type type, string text)
 {
     Type = type;
     Text = text;
 }