Esempio n. 1
0
    public IAsyncEnumerable <Item> GetItemsByIds(
        IReadOnlyCollection <int> itemIds,
        Language?language = default,
        MissingMemberBehavior missingMemberBehavior = default,
        IProgress <ICollectionContext>?progress     = default,
        CancellationToken cancellationToken         = default
        )
    {
        var producer = SplitQuery.Create <int, Item>(
            async(range, ct) =>
        {
            var request = new ItemsByIdsRequest(range)
            {
                Language = language,
                MissingMemberBehavior = missingMemberBehavior
            };
            var response = await request.SendAsync(http, ct).ConfigureAwait(false);
            return(response.Values);
        },
            progress
            );

        return(producer.QueryAsync(itemIds, cancellationToken: cancellationToken));
    }
Esempio n. 2
0
 // provides a closure around a split query
 private static Query CloseQuery(SplitQuery split)
 {
     return entity => split(
         entity.GetComponent<PositionComponent>(),
         entity.GetComponent<MovementComponent>(),
         entity.GetComponent<SpriteComponent>(),
         entity.GetComponent<InputComponent>(),
         entity.GetComponent<CollisionComponent>(),
         entity.GetComponent<LadderComponent>(),
         entity.GetComponent<TimerComponent>(),
         entity.GetComponent<HealthComponent>(),
         entity.GetComponent<StateComponent>(),
         entity.GetComponent<WeaponComponent>(),
         Game.CurrentGame.Player
     );
 }