Beispiel #1
0
        public Sprite GetActorSprite(string actorName, string actorEmotion = "default")
        {
            ActorDescriptor actor = null;

            if (!_actors.TryGetValue(actorName, out actor))
            {
                Debug.LogError($"{_tag} Actor name {actorName} is not in the manifest");
                return(null);
            }

            string actorResource = null;

            if (!actor.emotions.TryGetValue(actorEmotion, out actorResource))
            {
                Debug.LogWarning($"{_tag} Emotion {actorEmotion} is not in descriptor for {actorName}, substituting default emotion instead");
                if (!actor.emotions.TryGetValue("default", out actorResource))
                {
                    Debug.LogError($"{_tag} Default emotion is not in descriptor for {actorName}, bailing out");
                    return(null);
                }
            }

            var actorSprite = LoadResource(actorResource);

            if (actorSprite == null)
            {
                Debug.LogError($"{_tag} Resource {actorResource} for {actorName} (emotion {actorEmotion}) is missing!");
            }

            return(actorSprite);
        }
Beispiel #2
0
        public void Setup(ActorDescriptor descriptor)
        {
            if(_actorDescriptor!=null)
                throw new InvalidOperationException("Cannot call Setup twice.");

            _actorDescriptor = descriptor;
            _poller = new AsyncPoller(descriptor.Interval, (Func<CancellationToken, Task<bool>>)Process);
        }
Beispiel #3
0
        public void Setup(ActorDescriptor descriptor)
        {
            if (_actorDescriptor != null)
            {
                throw new InvalidOperationException("Cannot call Setup twice.");
            }

            _actorDescriptor = descriptor;
            _poller          = new AsyncPoller(descriptor.Interval, (Func <CancellationToken, Task <bool> >)Process);
        }
Beispiel #4
0
        public void RegisterHandler(Func <Event, IEventQueueOperator, Task> handler, ActorDescriptor descriptor)
        {
            var name = new QueueName(descriptor.SourceQueueName);
            Func <Message, CancellationToken, Task> h = (Message m, CancellationToken token) => ProcessMessage(m, token, handler, descriptor);
            var options = new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                MaxConcurrentCalls   = descriptor.DegreeOfParallelism,
                MaxAutoRenewDuration = descriptor.MaximumLease.HasValue ? descriptor.MaximumLease.Value : _maxAutoRenew,
                AutoComplete         = true
            };

            if (name.IsSimpleQueue)
            {
                var client = _clientProvider.GetQueueClient(name);
                client.RegisterMessageHandler(h, options);
            }
            else
            {
                var client = _clientProvider.GetSubscriptionClient(name);
                client.RegisterMessageHandler(h, options);
            }
        }
Beispiel #5
0
        private async Task ProcessMessage(Message m, CancellationToken cancellationToken,
                                          Func <Event, IEventQueueOperator, Task> handler, ActorDescriptor descriptor)
        {
            var name = new QueueName(descriptor.SourceQueueName);

            await handler(m.ToEvent(name), this);
        }
Beispiel #6
0
 public void RegisterHandler(Func <Event, IEventQueueOperator, Task> handler, ActorDescriptor descriptor)
 {
     throw new NotSupportedException("Is not event-driven");
 }
Beispiel #7
0
 public void RegisterHandler(Func <Event, Task <IEnumerable <Event> > > handler, ActorDescriptor descriptor)
 {
     throw new NotSupportedException("Is not event-driven");
 }
Beispiel #8
0
        private async Task ProcessMessage(Message m, CancellationToken cancellationToken,
                                          Func <Event, Task <IEnumerable <Event> > > handler, ActorDescriptor descriptor)
        {
            var name     = new QueueName(descriptor.SourceQueueName);
            var messages = await handler(m.ToEvent(name));

            await PushBatchAsync(messages);
        }
 public void RegisterHandler(Func <Event, Task <IEnumerable <Event> > > handler, ActorDescriptor descriptor)
 {
     throw new NotImplementedException();
 }