示例#1
0
 public void Setup(BattleCharacter battleCharacter)
 {
     battleCharacter.CurrentSpec.Status.hitPoint
     .Subscribe(x =>
     {
         hitPointSlider.value = battleCharacter.HitPointRate;
         hitPointText.text    = x.ToString();
     })
     .AddTo(this);
     battleCharacter.CurrentSpec.Status.attack
     .Subscribe(x =>
     {
         attackText.text = ScriptLocalization.UI.AttackFormat.Format(x.ToString());
     })
     .AddTo(this);
 }
示例#2
0
        public IObservable <Unit> Invoke(BattleSystem battleSystem, BattleCharacter attacker, BattleCharacter target)
        {
            return(Observable.Defer(() =>
            {
                var damageResult = attacker.GiveDamage(target);
                battleSystem.AddLog(ScriptLocalization.UI.Sentence_Attack.Format(attacker.CurrentSpec.Name, target.CurrentSpec.Name, damageResult.damage));

                var otherStreams = new List <IObservable <Unit> >();

                otherStreams.Add(Observable.Timer(TimeSpan.FromSeconds(1.0f)).AsUnitObservable());

                foreach (var s in attacker.Skills.OfType <IOnGiveDamage>())
                {
                    otherStreams.Add(s.OnGiveDamage(battleSystem, attacker, target));
                }

                foreach (var s in target.Skills.OfType <IOnTakeDamage>())
                {
                    otherStreams.Add(s.OnTakeDamage(battleSystem, attacker, target));
                }

                return otherStreams.Concat().AsSingleUnitObservable();
            }));
        }
示例#3
0
 /// <summary>
 /// 通常攻撃でダメージを受ける
 /// </summary>
 /// <param name="value"></param>
 public void TakeDamage(BattleCharacter attacker, int value)
 {
     TakeDamageRaw(value);
 }