Esempio n. 1
0
 public async Task RunLeadingProcessAsync(IBattleEvent <TDomain> @event, TDomain domain)
 {
     foreach (var process in _purePassiveProcess.LeadingProcesses)
     {
         await process.RunAsync(@event, this, domain);
     }
 }
Esempio n. 2
0
 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);
 }
Esempio n. 7
0
 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;
                }
            }
        }
Esempio n. 11
0
 protected abstract void OnBattleEvent(IBattleEvent e);
Esempio n. 12
0
 // INTERFACE CALLS TO DIGEST EVENTS
 public void PostBattleEvent(IBattleEvent e)
 {
     Debug.Log("On event: " + e);
     mBattleEventQueue.Enqueue(e);
 }
Esempio n. 13
0
 /// <summary>
 /// Post battle event
 /// </summary>
 /// <param name="e"></param>
 private void PostEvent(IBattleEvent e)
 {
     BattleSystem.Instance.PostBattleEvent(e);
 }
Esempio n. 14
0
 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));
Esempio n. 16
0
 public void AddEvent(IBattleEvent ibe)
 {
     Events.Add(ibe);
 }
 public Task AfterEventAsync(IBattleEvent <TDomain> @event)
 => RunAsync(@event, p => p.RunFollowingProcessAsync(@event, _context));
Esempio n. 18
0
 public void AddEventNext(IBattleEvent ev)
 {
     Events.Insert(1, ev);
 }
Esempio n. 19
0
 public void PostBattleEvent(IBattleEvent e)
 {
     if (mService != null) {
         mService.PostBattleEvent(e);
     }
 }