Esempio n. 1
0
        public VocabularyProcessor(ILineCollectionFilter lineCollectionFilter
                                   , LineService lineService
                                   , IVocabularyAccessor vocabularyAccessor
                                   , IImageAccessor imageAccessor
                                   , IRandomNumberService randomNumberService
                                   , ISettingsAccessor settingsAccessor
                                   )
        {
            var settings = settingsAccessor.GetSettings();

            _lineCollectionFilter = lineCollectionFilter;
            _lineService          = lineService;
            _vocabularyAccessor   = vocabularyAccessor;
            _vocabularyProcessors = new List <IVocabularyProcessor>
            {
                new ImageVocabularyProcessor(imageAccessor),
                new RandomVocabularyProcessor(lineService, randomNumberService),
                new SessionVocabularyProcessor(),
                new SettingsVocabularyProcessor(settingsAccessor)
            };
            _codeVocabulary = new Dictionary <string, Func <string, Session, string> >
            {
                { "#DommeName", (line, session) => line.Replace("#DommeName", session.Domme.Name) },
                { "#DomAge", (line, session) => line.Replace("#DomAge", session.Domme.Age.ToString()) },
                { "#DomApathy", (line, session) => line.Replace("#DomApathy", session.Domme.ApathyLevel.ToString()) },
                { "#DomAvgCockMin", (line, session) => line.Replace("#DomAvgCockMin", session.Domme.CockSmallLimit.ToString()) },
                { "#DomAvgCockMax", (line, session) => line.Replace("#DomAvgCockMax", session.Domme.CockBigLimit.ToString()) },
                { "#DomBirthdayMonth", (line, session) => line.Replace("#DomBirthdayMonth", session.Domme.BirthDay.ToString("MMMM")) },
                { "#DomBirthdayDay", (line, session) => line.Replace("#DomBirthdayDay", session.Domme.BirthDay.Day.ToString()) },
                { "#DomCup", (line, session) => line.Replace("#DomCup", session.Domme.CupSize.ToString()) },
                { "#DomEyes", (line, session) => line.Replace("#DomEyes", session.Domme.EyeColor) },
                { "#DomHair", (line, session) => line.Replace("#DomHair", session.Domme.HairColor) },
                { "#DomHairLength", (line, session) => line.Replace("#DomHairLength", session.Domme.HairLength.ToString()) },
                { "#DomHonorific", (line, session) => line.Replace("#DomHonorific", session.Domme.Honorific) },
                { "#DomLargeCockMin", (line, session) => line.Replace("#DomLargeCockMin", (session.Domme.CockBigLimit + 1).ToString()) },
                { "#DomLevel", (line, session) => line.Replace("#DomLevel", session.Domme.DomLevel.ToString()) },
                { "#DomMood", (line, session) => line.Replace("#DomMood", session.Domme.MoodLevel.ToString()) },
                { "#DomMoodMax", (line, session) => line.Replace("#DomMoodMax", session.Domme.MoodHappy.ToString()) },
                { "#DomMoodMin", (line, session) => line.Replace("#DomMoodMin", session.Domme.MoodAngry.ToString()) },
                { "#DomName", (line, session) => line.Replace("#DomName", session.Domme.Name) },
                { "#DomOrgasmRate", (line, session) => line.Replace("#DomOrgasmRate", "allow " + session.Domme.AllowsOrgasms.ToString().ToLower()) },
                { "#DomRuinRate", (line, session) => line.Replace("#DomRuinRate", "ruin " + session.Domme.RuinsOrgasms.ToString().ToLower()) },
                { "#DomSelfAgeMax", (line, session) => line.Replace("#DomSelfAgeMax", session.Domme.AgeOldLimit.ToString()) },
                { "#DomSelfAgeMin", (line, session) => line.Replace("#DomSelfAgeMin", session.Domme.AgeYoungLimit.ToString()) },
                { "#DomSmallCockMax", (line, session) => line.Replace("#DomSmallCockMax", (session.Domme.CockSmallLimit - 1).ToString()) },
                { "#DomSubAgeMax", (line, session) => line.Replace("#DomSubAgeMax", session.Domme.SubAgeOldLimit.ToString()) },
                { "#DomSubAgeMin", (line, session) => line.Replace("#DomSubAgeMin", session.Domme.SubAgeYoungLimit.ToString()) },

                { "#GreetSub", (line, session) => line.Replace("#GreetSub", GetGreetingReplacement(DateTime.Now)) },
                { "#EdgeTaunt", (line, session) => line.Replace("#EdgeTaunt", GetEdgeTaunt(session)) },
                { "#PetName", GetPetName },

                { "#SubName", (line, session) => line.Replace("#SubName", session.Sub.Name) },
                { "#SubAge", (line, session) => line.Replace("#SubAge", session.Sub.Age.ToString()) },
                { "#SubBirthdayMonth", (line, session) => line.Replace("#SubBirthdayMonth", session.Sub.Birthday.ToString("MMMM")) },
                { "#SubBirthdayDay", (line, session) => line.Replace("#SubBirthdayDay", session.Sub.Birthday.Day.ToString()) },
                { "#SubCockSize", (line, session) => line.Replace("#SubCockSize", session.Sub.CockSize.ToString()) },
                { "#SubEyes", (line, session) => line.Replace("#SubEyes", session.Sub.EyeColor) },
                { "#SubHair", (line, session) => line.Replace("#SubHair", session.Sub.HairColor) },
                { "#SubWritingTaskMax", (line, session) => line.Replace("#SubWritingTaskMax", session.Sub.WritingTaskMax.ToString()) },
                { "#SubWritingTaskMin", (line, session) => line.Replace("#SubWritingTaskMin", session.Sub.WritingTaskMin.ToString()) },

                { "#ShortName", (line, session) => line.Replace("#ShortName", settings.Domme.GlitterContactName) },
                { "#GlitterContact1", (line, session) => line.Replace("#GlitterContact1", session.Glitter[0].Name) },
                { "#Contact1", (line, session) => line.Replace("#Contact1", session.Glitter[0].Name) },
                { "#GlitterContact2", (line, session) => line.Replace("#GlitterContact2", session.Glitter[1].Name) },
                { "#Contact2", (line, session) => line.Replace("#Contact2", session.Glitter[1].Name) },
                { "#GlitterContact3", (line, session) => line.Replace("#GlitterContact3", session.Glitter[2].Name) },
                { "#Contact3", (line, session) => line.Replace("#Contact3", session.Glitter[2].Name) },
                { "#GlitterContact4", (line, session) => line.Replace("#GlitterContact4", session.Glitter[3].Name) },
                { "#Contact4", (line, session) => line.Replace("#Contact4", session.Glitter[3].Name) },

                //{ "#CBTCockCount", (line, session) => line.Replace("#CBTCockCount", session.CbtCockCount) },
                //{ "#CBTBallsCount", (line, session) => line.Replace("#CBTBallsCount", session.CbtBallsCount) },

                //{ "#OrgasmLockDate",  (line, session) => session.Sub.IsOrgasmRestricted ? line.Replace("#OrgasmLockDate", "#CockToClit") :"#C**k" },
                { "#C**k", (line, session) => line.Replace("#C**k", session.Sub.CallCockAClit ? "#CockToClit" :"#C**k") },
                { "stroking", (line, session) => session.Sub.CallCockAClit ? line.Replace("stroking", "#StrokingToRubbing") :"stroking" },
                { "#Balls", (line, session) => session.Sub.CallBallsAPussy ? line.Replace("#Balls", "#BallsToPussy") :"#Balls" },
                { "those #Balls", (line, session) => session.Sub.CallBallsAPussy ? line.Replace("those #Balls", "that #BallsToPussy") :"those #Balls" },
                { "#SessionEdges", (line, session) => line.Replace("#SessionEdges", session.Sub.EdgeCount.ToString()) },
                // Not sure if this is torture level or how many times it's been done
                { "#SessionCBTCock", (line, session) => line.Replace("#SessionCBTCock", session.Sub.CockTortureLevel.ToString()) },
                { "#SessionCBTBalls", (line, session) => line.Replace("#SessionCBTBalls", session.Sub.BallsTortureLevel.ToString()) },
                { "#GeneralTime", (line, session) => line.Replace("#GeneralTime", GetGeneralTime(DateTime.Now)) },
                { "#CurrentTime", (line, session) => line.Replace("#CurrentTime", DateTime.Now.ToString("h:mm")) },
                { "#CurrentDay", (line, session) => line.Replace("#CurrentDay", DateTime.Now.ToString("dddd")) },
                { "#CurrentMonth", (line, session) => line.Replace("#CurrentMonth", DateTime.Now.ToString("MMMMM")) },
                { "#CurrentYear", (line, session) => line.Replace("#CurrentYear", DateTime.Now.ToString("yyyy")) },
                { "#CurrentDate", (line, session) => line.Replace("#CurrentDate", DateTime.Now.ToShortDateString()) },
                { "#RP_CaseNumber", (line, session) => line.Replace("#RP_CaseNumber", session.GameBoard.SelectedCases.LastOrDefault().ToString()) },
                { "#RP_EdgeOffer", (line, session) => line.Replace("#RP_EdgeOffer", (session.GameBoard.Offer?.Edges).GetValueOrDefault().ToString()) },
                { "#RP_TokenOffer", (line, session) => line.Replace("#RP_TokenOffer", (session.GameBoard.Offer?.Tokens).GetValueOrDefault().ToString()) },
                { "#RP_RespondCase", (line, session) => line.Replace("#RP_RespondCase", session.GameBoard.LastSelectedCase?.ToString() ?? string.Empty) },
            };
        }
Esempio n. 2
0
        public SessionEngine(ISettingsAccessor settingsAccessor
                             , IStringService stringService
                             , IScriptAccessor scriptAccessor
                             , ITimerFactory timerFactory
                             , IFlagAccessor flagAccessor
                             , IImageAccessor imageAccessor
                             , IVideoAccessor videoAccessor
                             , IVariableAccessor variableAccessor
                             , ITauntAccessor tauntAccessor
                             , ISystemVocabularyAccessor systemVocabularyAccessor
                             , IVocabularyAccessor vocabularyAccessor
                             , ILineCollectionFilter lineCollectionFilter
                             , IRandomNumberService randomNumberService
                             , IConfigurationAccessor configurationAccessor
                             , INotifyUser notifyUser
                             , IPathsAccessor pathsAccessor
                             , IGetCommandProcessorsService getCommandProcessorsService
                             , IInterpolationProcessor interpolationProcessor
                             )
        {
            CommandProcessors = getCommandProcessorsService.CreateCommandProcessors();

            CommandProcessors[Keyword.StartStroking].CommandProcessed += StartStrokingCommandProcessed;
            CommandProcessors[Keyword.Edge].CommandProcessed          += EdgeCommandProcessed;
            CommandProcessors[Keyword.End].CommandProcessed           += EndCommandProcessed;
            CommandProcessors[Keyword.TauntFromFile].CommandProcessed += TauntFromFileCommandProcessed;

            CommandProcessors[Keyword.ShowImage].CommandProcessed         += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowButtImage].CommandProcessed     += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowBoobsImage].CommandProcessed    += ShowImageCommandProcessed;
            CommandProcessors[Keyword.SearchImageBlog].CommandProcessed   += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowHardcoreImage].CommandProcessed += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowSoftcoreImage].CommandProcessed += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowLesbianImage].CommandProcessed  += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowBlowjobImage].CommandProcessed  += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowFemdomImage].CommandProcessed   += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowLezdomImage].CommandProcessed   += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowHentaiImage].CommandProcessed   += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowGayImage].CommandProcessed      += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowMaledomImage].CommandProcessed  += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowCaptionsImage].CommandProcessed += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowGeneralImage].CommandProcessed  += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowLikedImage].CommandProcessed    += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowDislikedImage].CommandProcessed += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowBlogImage].CommandProcessed     += ShowImageCommandProcessed;
            CommandProcessors[Keyword.NewBlogImage].CommandProcessed      += ShowImageCommandProcessed;
            CommandProcessors[Keyword.ShowLocalImage].CommandProcessed    += ShowImageCommandProcessed;

            CommandProcessors[Keyword.PlayVideo].CommandProcessed              += PlayVideoCommandProcessed;
            CommandProcessors[Keyword.PlayJoiVideo].CommandProcessed           += PlayVideoCommandProcessed;
            CommandProcessors[Keyword.PlayCockHeroVideo].CommandProcessed      += PlayVideoCommandProcessed;
            CommandProcessors[Keyword.PlayCensorshipSucks].CommandProcessed    += PlayCensorshipSucksVideoTauntCommandProcessed;
            CommandProcessors[Keyword.PlayRedLightGreenLight].CommandProcessed += PlayRedLightGreenLightVideoTauntCommandProcessed;
            CommandProcessors[Keyword.StopVideo].CommandProcessed              += StopVideoCommandProcessed;
            CommandProcessors[Keyword.PauseVideo].CommandProcessed             += PauseVideoCommandProcessed;
            CommandProcessors[Keyword.UnpauseVideo].CommandProcessed           += UnpauseVideoCommandProcessed;
            CommandProcessors[Keyword.ShowCensorshipBar].CommandProcessed      += ShowCensorshipBarCommandProcessed;
            CommandProcessors[Keyword.HideCensorshipBar].CommandProcessed      += HideCensorshipBarCommandProcessed;

            CommandProcessors[Keyword.SendDailyTasks].CommandProcessed     += RequestTaskCommandProcessed;
            CommandProcessors[Keyword.VitalSubAssignment].CommandProcessed += VitalSubAssignmentCommandProcessed;

            MessageProcessors = CreateMessageProcessors(settingsAccessor, stringService, new LineService(), systemVocabularyAccessor, variableAccessor, new RandomNumberService());

            MessageProcessors[MessageProcessor.ScriptResponse].MessageProcessed += ScriptResponse_MessageProcessed;
            MessageProcessors[MessageProcessor.EdgeDetection].MessageProcessed  += EdgeDetection_MessageProcessed;

            CommandProcessors[Keyword.RiskyPickStart].CommandProcessed += RiskyPickStartCommandProcessed;

            CommandProcessors[Keyword.LikeImage].BeforeCommandProcessed += LikeImageCommandProcessed;

            _scriptAccessor        = scriptAccessor;
            _variableAccessor      = variableAccessor;
            _configurationAccessor = configurationAccessor;
            _scriptTimer           = timerFactory.Create();
            _scriptTimer.Elapsed  += _scriptTimer_Elapsed;

            _tauntTimer          = timerFactory.Create();
            _tauntTimer.Elapsed += _tauntTimer_Elapsed;

            _teaseCountDown          = timerFactory.Create();
            _teaseCountDown.Elapsed += _teaseCountDown_Elapsed;

            _vocabularyProcesser    = new VocabularyProcessor(lineCollectionFilter, new LineService(), vocabularyAccessor, imageAccessor, randomNumberService, settingsAccessor);
            _interpolationProcessor = interpolationProcessor;
        }