/// <summary>
 /// Broadcast an advertisement to a list of advertisement receievers.
 /// </summary>
 void BroadcastToReceivers(IAdvertisement advertisement, List <IAdvertisementReceiver> receivers)
 {
     foreach (IAdvertisementReceiver receiver in receivers)
     {
         BroadcastToReceiver(advertisement, receiver);
     }
 }
Esempio n. 2
0
        int GetAdvertisementRank(IAdvertisement advertisement)
        {
            if (advertisement.GroupId == agent.GroupId)
            {
                return(0);
            }

            List <ITrait> desires = agent.Desires;
            List <ITrait> ads     = advertisement.Traits;

            int rank = 0;

            foreach (ITrait attribute in ads)
            {
                foreach (ITrait desire in desires)
                {
                    if (attribute.Id == desire.Id)
                    {
                        int attributeRank = attribute.Quantity * desire.Quantity;
                        rank += attributeRank;
                    }
                }
            }
            return(rank);
        }
        public static async Task PrepareAsync(this IAdvertisement self)
        {
            var promoter        = self.Promoter;
            var invokeException = default(Exception);
            var invokeResult    = default(bool?);

            promoter.ExceptionDetected += OnExceptionDetected;
            self.Prepare(
                () => invokeResult = true,
                () => invokeResult = false);

            while (!invokeResult.HasValue)
            {
                await Task.Delay(MillisecondsDelay);
            }

            promoter.ExceptionDetected -= OnExceptionDetected;

            if (!invokeResult.Value)
            {
                throw invokeException ?? new InvalidOperationException();
            }

            void OnExceptionDetected(Exception exception)
            {
                invokeException = exception;
            }
        }
Esempio n. 4
0
        void CreateAndBroadcastAdvertisement()
        {
            List <Vector2Int> broadcastLocations = GetBroadcastLocations();
            IAdvertisement    advertisement      = Advertisement.Create(advertisingMapElement.Stats, advertisingMapElement.Map, advertisingMapElement.Location, broadcastLocations, advertisingMapElement.GroupId);

            advertisingMapElement.BroadcastAdvertisement(advertisement, excludeReceiver);
        }
Esempio n. 5
0
        public void Main()
        {
            // I need an ad for an image
            IAdvertisement imageAd = Advertisement.ForImage();

            // Now I need an ad for text
            IAdvertisement textAd = Advertisement.ForText();

            // Now I'm only coding to the IAdvertisement interface
        }
    public void Init()
    {
        switch (advertisementType)
        {
        case AdvertisementType.Unity:
            advertisement = new UnityAdvertisement("", true);
            break;

        case AdvertisementType.Admob:
            advertisement = null;
            break;
        }
    }
Esempio n. 7
0
        private string MakeUrl(IAdvertisement adItem, bool isLink, bool isEmailLayout)
        {
            if (string.IsNullOrEmpty(adItem?.Slot_ID) || string.IsNullOrEmpty(adItem.Zone))
            {
                return(string.Empty);
            }

            var adDomain = isEmailLayout ? _dependencies.SiteRootContext.Item?.Email_Ad_Domain : _dependencies.SiteRootContext.Item?.Ad_Domain;

            if (string.IsNullOrEmpty(adDomain))
            {
                return(string.Empty);
            }

            return(Format(isLink, adDomain, adItem.Zone, adItem.Slot_ID));
        }
        protected void Broadcast(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver = null)
        {
            calledInstanceIds.Clear();
            List <IAdvertisementReceiver> mapReceivers = advertisement.Map.GetMapElementsAtCells <IAdvertisementReceiver>(advertisement.BroadcastLocations);

            foreach (IAdvertisementReceiver mapReceiver in mapReceivers)
            {
                if (receiversByInstanceId.ContainsKey(mapReceiver.InstanceId) && calledInstanceIds.Contains(mapReceiver.InstanceId) == false)
                {
                    if (mapReceiver != excludeReceiver)
                    {
                        mapReceiver.ReceiveAdvertisement(advertisement);
                    }
                    calledInstanceIds.Add(mapReceiver.InstanceId);
                }
            }
        }
Esempio n. 9
0
        void HandleAdvertisement(IAdvertisement advertisement)
        {
            int rank = GetAdvertisementRank(advertisement);

            if (rank > 0)
            {
                bool isRankGreater = GetIsAdRankGreaterThanTarget(rank);
                if (isRankGreater)
                {
                    agent.TargetAdvertisement = RankedAdvertisement.Create(advertisement, rank);
                    agent.TargetLocation      = advertisement.Location;

                    if (string.IsNullOrEmpty(targetFoundTransition) == false)
                    {
                        agent.HandleTransition(targetFoundTransition);
                    }
                }
            }
        }
        public static async Task ShowAsync(this IAdvertisement self)
        {
            var promoter         = self.Promoter;
            var outputException  = default(Exception);
            var outputShowResult = default(ShowResult?);

            promoter.ExceptionDetected += OnExceptionDetected;
            self.Show(
                () => outputShowResult = ShowResult.Complete,
                () => outputShowResult = ShowResult.Skip,
                () => outputShowResult = ShowResult.Failure);

            while (!outputShowResult.HasValue)
            {
                await Task.Delay(MillisecondsDelay);
            }

            promoter.ExceptionDetected -= OnExceptionDetected;

            switch (outputShowResult.Value)
            {
            case ShowResult.Complete:
                break;

            case ShowResult.Skip:
                throw new SkipException();

            case ShowResult.Failure:
                throw outputException ?? new InvalidOperationException();
            }

            void OnExceptionDetected(Exception exception)
            {
                outputException = exception;
            }
        }
Esempio n. 11
0
 public Task <IPeripheralConnection> ConnectPatternAsync(IAdvertisement reference, int period, int before, int after, int attempts)
 {
     // pattern connect has no benefit on iOS,
     // the system is able to scan and connect to multiple devices in parallel
     return(ConnectAsync(before + period * attempts + after));
 }
Esempio n. 12
0
 void IAdvertisementBroadcaster.Broadcast(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver)
 {
     broadcaster.Broadcast(advertisement, excludeReceiver);
 }
Esempio n. 13
0
 void IAdvertisementBroadcaster.Broadcast(IAdvertisement advertisement)
 {
     broadcaster.Broadcast(advertisement);
 }
Esempio n. 14
0
 protected void BroadcastAdvertisement(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver)
 {
     Broadcaster.Broadcast(advertisement, excludeReceiver);
 }
Esempio n. 15
0
 /// <summary>
 /// Broadcast a given advertisement with an excluded receiver.
 /// </summary>
 /// <param name="advertisement">The advertisement to be broadcasted</param>
 /// <param name="excludeReceiver">A receiver that won't receive that broadcasted advertisement</param>
 void IAdvertiser.BroadcastAdvertisement(IAdvertisement advertisement, IAdvertisementReceiver excludeReceiver) => BroadcastAdvertisement(advertisement, excludeReceiver);
Esempio n. 16
0
 protected void BroadcastAdvertisement(IAdvertisement advertisement)
 {
     Broadcaster.Broadcast(advertisement);
 }
Esempio n. 17
0
 /// <summary>
 /// Adds a <see cref="IAdvertisement"/> instance to <see cref="IPlaylistItem.InterstitialAdvertisements"/> collection of caller <see cref="IPlaylistItem"/> instance.
 /// </summary>
 /// <param name="playlistItem">Caller <see cref="IPlaylistItem"/> instance.</param>
 /// <param name="advertisement"><see cref="IAdvertisement"/> instance to add.</param>
 /// <returns>The caller <see cref="IPlaylistItem"/> instance with <see cref="IAdvertisement"/> instance added to <see cref="IPlaylistItem.InterstitialAdvertisements"/> collection.</returns>
 public static IPlaylistItem WithInterstitialAdvertisement(this IPlaylistItem playlistItem, IAdvertisement advertisement)
 {
     playlistItem.InterstitialAdvertisements.Add(advertisement);
     return playlistItem;
 }
Esempio n. 18
0
 public AdvertisementService(UserRepository userRepository, AdvertisementRepository advertisementRepository)
 {
     _advertisementRepository = advertisementRepository;
     _userRepository          = userRepository;
 }
Esempio n. 19
0
 public string GetImageSrc(IAdvertisement adItem, bool isEmailLayout = false) => MakeUrl(adItem, false, isEmailLayout);
Esempio n. 20
0
 public string GetLink(IAdvertisement adItem, bool isEmailLayout     = false) => MakeUrl(adItem, true, isEmailLayout);
 /// <summary>
 /// Broadcast an advertisement to a single advertisement receiver.
 /// </summary>
 void BroadcastToReceiver(IAdvertisement advertisement, IAdvertisementReceiver receiver)
 {
     receiver.ReceiveAdvertisement(advertisement);
 }
Esempio n. 22
0
 /// <summary>
 /// Broadcast a given advertisement.
 /// </summary>
 void IAdvertiser.BroadcastAdvertisement(IAdvertisement advertisement) => BroadcastAdvertisement(advertisement);
Esempio n. 23
0
 /// <summary>
 /// Sets <see cref="IPlaylistItem.PostRollAdvertisement"/> property of caller <see cref="IPlaylistItem"/> instance to given <see cref="IAdvertisement"/> instance.
 /// </summary>
 /// <param name="playlistItem">Caller <see cref="IPlaylistItem"/> instance.</param>
 /// <param name="advertisement">Given <see cref="IAdvertisement"/> instance. </param>
 /// <returns>The caller <see cref="IPlaylistItem"/> instance with <see cref="IPlaylistItem.PostRollAdvertisement"/> property setted to given <see cref="IAdvertisement"/> instance.</returns>
 public static IPlaylistItem WithPostRollAdvertisement(this IPlaylistItem playlistItem, IAdvertisement advertisement)
 {
     playlistItem.PostRollAdvertisement = advertisement;
     return playlistItem;
 }