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); }
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(); })); }
/// <summary> /// 通常攻撃でダメージを受ける /// </summary> /// <param name="value"></param> public void TakeDamage(BattleCharacter attacker, int value) { TakeDamageRaw(value); }