public async Task RunLeadingProcessAsync(IBattleEvent <TDomain> @event, TDomain domain) { foreach (var process in _purePassiveProcess.LeadingProcesses) { await process.RunAsync(@event, this, domain); } }
public async Task RunFollowingProcessAsync(IBattleEvent <TDomain> @event, TDomain domain) { foreach (var process in _process.FollowingProcesses) { await process.RunAsync(@event, this, domain); } }
public async Task HandleAsync(IBattleEvent <TDomain> @event) { await RunAsync(@event, p => p.RunLeadingProcessAsync(@event, _domain)); await @event.RunAsync(this, _domain); await RunAsync(@event, p => p.RunFollowingProcessAsync(@event, _domain)); }
private async Task RunAsync(IBattleEvent <TDomain> @event, Func <IPassiveProperty <TDomain>, Task> runner) { foreach (var property in @event.PassiveProcessSubject) { await runner.Invoke(property); } }
public async Task HandleAsync(IBattleEvent <TDomain> @event) { await _passiveHook.BeforeEventAsync(@event); await @event.RunAsync(this); await _passiveHook.AfterEventAsync(@event); }
public Task HandleAsync(IBattleEvent @event) { if (@event is BattleResultEvent <TBattleResult> result) { setter(result.Result); } return(Task.CompletedTask); }
public async Task RunAsync(IBattleEvent <TDomain> @event, IPassiveProperty <TDomain> self, TDomain context) { if (@event is TEvent ev) { await _processFunc.Invoke(ev, self, context); } }
public async Task RunAsync(IBattleEvent <TDomain> @event, IPassiveProperty <TDomain> self, TDomain context) { if (@event is TEvent ev) { if (self is PassiveProperty <TDomain, TDataStore> property) { await _processHook.Invoke(ev, property, context); } } }
// BattleService required methods protected override void OnBattleEvent(IBattleEvent e) { // TODO forward to combat log // evaluate if the game is over, or we have won switch (e.EventType) { case BattleEventType.DEATH: CheckForVictoryOrAnnilate(!e.SrcEntity.isPC); // break; } }
public async Task HandleAsync(IBattleEvent @event) { foreach (var item in handlers) { await item.HandleAsync(@event); if (isResultSet()) { return; } } }
protected abstract void OnBattleEvent(IBattleEvent e);
// INTERFACE CALLS TO DIGEST EVENTS public void PostBattleEvent(IBattleEvent e) { Debug.Log("On event: " + e); mBattleEventQueue.Enqueue(e); }
/// <summary> /// Post battle event /// </summary> /// <param name="e"></param> private void PostEvent(IBattleEvent e) { BattleSystem.Instance.PostBattleEvent(e); }
public PlayerBatlleCharacter(Player pl, int HP, string status, Battle battle, IBattleEvent Action) : base("Player", HP, status, battle) { player = pl; }
public Task BeforeEventAsync(IBattleEvent <TDomain> @event) => RunAsync(@event, p => p.RunLeadingProcessAsync(@event, _context));
public void AddEvent(IBattleEvent ibe) { Events.Add(ibe); }
public Task AfterEventAsync(IBattleEvent <TDomain> @event) => RunAsync(@event, p => p.RunFollowingProcessAsync(@event, _context));
public void AddEventNext(IBattleEvent ev) { Events.Insert(1, ev); }
public void PostBattleEvent(IBattleEvent e) { if (mService != null) { mService.PostBattleEvent(e); } }