Ejemplo n.º 1
0
        public void Handle(PointRedemption pointRedemption, RedemptionOption redemptionOption)
        {
            if (redemptionOption == null)
            {
                return;
            }

            var audioFileReader = new AudioFileReader(redemptionOption.AudioFile);

            waveOutDevice.Init(audioFileReader);
            waveOutDevice.Play();

            // Could add a way to log that a redemption was successful
        }
Ejemplo n.º 2
0
        public void Save(PointRedemption pointRedemption)
        {
            EnsureFolderCreated();

            var existingRedemptions = new List <PointRedemption>();
            var fullPath            = FullFileName(PointRedemptionLogFileName);

            if (File.Exists(fullPath))
            {
                var existingRedemptionsJson = File.ReadAllText(fullPath);
                existingRedemptions = JsonConvert.DeserializeObject <List <PointRedemption> >(existingRedemptionsJson);
            }

            existingRedemptions.Add(pointRedemption);

            var newJson = JsonConvert.SerializeObject(existingRedemptions);

            File.WriteAllText(fullPath, newJson);
        }
        // Message status returns:
        // UNFULFILLED
        private void TwitchClient_OnRewardRedeemed(object sender, RewardRedeemedEvent e)
        {
            // TODO make proper mitigation of this issue.
            if (!string.Equals(e.Status, "UNFULFILLED", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var pointRedemption = new PointRedemption
            {
                DisplayName = e.DisplayName,
                Message     = e.Message,
                RewardId    = e.RewardId,
                RewardName  = e.RewardTitle,
                TimeStamp   = e.TimeStamp
            };

            var redemptionOption = repository.GetRedemptionOption(e.RewardTitle);

            if (redemptionOption == null)
            {
                redemptionOption = new RedemptionOption(e.RewardTitle);
                repository.Save(redemptionOption);
                OnNewRedemptionRewardDetected?.Invoke(this, "NEW REWARD DETECTED; NEEDS SETUP!");
            }
            else if (redemptionOption.OptionAction == OptionAction.NoAction)
            {
                OnExistingRedemptionRewardNeedingSetup?.Invoke(this, "EXISTING REWARD DETECTED, STILL NEED SETUP!");
            }
            else
            {
                // REDEEM THAT FUCKERRR!
                var redeemer = redeemerOchestrator.GetRedeemer(redemptionOption.OptionAction);
                redeemer.Handle(pointRedemption, redemptionOption);
            }

            repository.Save(pointRedemption);
            OnRewardRedeemed?.Invoke(this, pointRedemption);
        }
        public void Handle(PointRedemption pointRedemption, RedemptionOption redemptionOption)
        {
            if (redemptionOption.ExecuteOnRedeemer)
            {
                twitchClient.SendChatMessage($"{redemptionOption.ChatCommand} {pointRedemption.DisplayName}");
            }
            else if (redemptionOption.UsesInput)
            {
                twitchClient.SendChatMessage($"{redemptionOption.ChatCommand} {pointRedemption.Message}");
            }
            else
            {
                twitchClient.SendChatMessage($"{redemptionOption.ChatCommand}");
            }

            if (redemptionOption.RespondInChat)
            {
                // Not happy about blocking thread. Hmm
                Thread.Sleep(ResponseDelay);
                twitchClient.SendChatMessage($"{redemptionOption.ChatResponse}");
            }

            // Could add a way to log that a redemption was successful
        }
Ejemplo n.º 5
0
 public PointRedemptionItem(PointRedemption pointRedemption, Merchandise merchandise, long quantity)
 {
     _pointRedemption = pointRedemption;
     _merchandise     = merchandise;
     _quantity        = quantity;
 }