Ejemplo n.º 1
0
        void ActivateScene(SceneDto scene, string displayName, int userLevel)
        {
            if (scene.Level > userLevel)
            {
                Chat(GetNeedToLevelUpMessage(scene, displayName, userLevel));
                return;
            }
            string sceneName = GetSceneName(scene);

            if (sceneName == null)
            {
                return;
            }

            double minutesSinceLastSceneActivation    = GetTimeSinceLastSceneActivation(scene).TotalMinutes;
            double minutesSinceLastCategoryActivation = GetTimeSinceLastCategoryActivation(scene).TotalMinutes;

            var adjustedMinutesToSame = GetSpanWaitAdjust(userLevel) * scene.MinMinutesToSame;

            if (adjustedMinutesToSame > minutesSinceLastSceneActivation && userLevel < 99)
            {
                double minutesToWait = scene.MinMinutesToSame - minutesSinceLastSceneActivation;
                Chat($"I already said that @{displayName}. You'll have to wait another {minutesToWait:0.#} minutes until I can say that again.");
                return;
            }
            ActivatingScene(scene);
            obsWebsocket.SetCurrentScene(sceneName);
        }
Ejemplo n.º 2
0
 TimeSpan GetTimeSinceLastCategoryActivation(SceneDto scene)
 {
     if (lastCategoryPlayTime.ContainsKey(scene.Category))
     {
         return(DateTime.Now - lastCategoryPlayTime[scene.Category]);
     }
     return(TimeSpan.MaxValue);
 }
Ejemplo n.º 3
0
 TimeSpan GetTimeSinceLastSceneActivation(SceneDto scene)
 {
     if (lastScenePlayTime.ContainsKey(scene.SceneName))
     {
         return(DateTime.Now - lastScenePlayTime[scene.SceneName]);
     }
     return(TimeSpan.MaxValue);
 }
Ejemplo n.º 4
0
        private string GetSceneName(SceneDto scene)
        {
            string sceneName = scene.SceneName;

            if (sceneName.EndsWith("*"))
            {
                sceneName = SelectRandomScene(sceneName);
            }
            return(sceneName);
        }
Ejemplo n.º 5
0
 private void ActivateSceneIfPermitted(SceneDto scene, string displayName, int userLevel)
 {
     if (RestrictedSceneIsActive())
     {
         Chat(GetBreakMessage());
     }
     else
     {
         ActivateScene(scene, displayName, userLevel);
     }
 }
Ejemplo n.º 6
0
        string GetNeedToLevelUpMessage(SceneDto scene, string displayName, int userLevel)
        {
            string learnMore = "You can learn about botcasting levels here: https://github.com/MillerMark/MrAnnouncerBot";

            switch (RandomInt(4))
            {
            case 0:
                return($"{displayName}, that's a level {scene.Level} spell, but alas, you are a level {userLevel} {GetLevelName(userLevel)}. " + learnMore);

            case 1:
                return($"Unfortunately {displayName}, there's no way a level {userLevel} {GetLevelName(userLevel)} can botcast level {scene.Level} spell! " + learnMore);

            case 2:
                return($"{displayName}, you'll need to level-up to {scene.Level} before you botcast that spell! " + learnMore);

            default:
                return($"{displayName} that's a level {scene.Level} spell! You need to level-up first! " + learnMore);
            }
        }
Ejemplo n.º 7
0
        void ActivatingScene(SceneDto scene)
        {
            DateTime now = DateTime.Now;

            if (!lastScenePlayTime.ContainsKey(scene.SceneName))
            {
                lastScenePlayTime.Add(scene.SceneName, now);
            }
            else
            {
                lastScenePlayTime[scene.SceneName] = now;
            }

            if (!lastCategoryPlayTime.ContainsKey(scene.Category))
            {
                lastCategoryPlayTime.Add(scene.Category, now);
            }
            else
            {
                lastCategoryPlayTime[scene.Category] = now;
            }
        }
Ejemplo n.º 8
0
 void ActivatingScene(SceneDto scene)
 {
     ActivatingSceneByName(scene.SceneName, scene.Category);
 }