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); } }
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); }
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); }
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)); }
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); //}); }
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); }
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); }
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); }
public Data(string text, FloatingNumber.Type type) { Text = text; Type = type; }
public FloatingNumberData(FloatingNumber.Type type, string text) { Type = type; Text = text; }