Example #1
0
 public PollState(Random rng, StreamnesiaConfig config)
 {
     _rng = rng;
     _cooldownDurationInSeconds  = config.CooldownDurationInSeconds;
     _rapidfireDurationInSeconds = config.RapidfireDurationInSeconds;
     _votingDurationInSeconds    = config.VotingDurationInSeconds;
     _rapidfireChancePrecent     = config.RapidFireChancePercent;
 }
Example #2
0
        static async Task Main(string[] args)
        {
            StreamnesiaConfig config;

            if (File.Exists("streamnesia-config.json"))
            {
                config = JsonConvert.DeserializeObject <StreamnesiaConfig>(File.ReadAllText("streamnesia-config.json"));
            }
            else
            {
                config = new StreamnesiaConfig();
                File.WriteAllText("streamnesia-config.json", JsonConvert.SerializeObject(config));
            }

            IPayloadLoader payloadLoader = new LocalPayloadLoader(config);
            var            payloads      = await payloadLoader.GetPayloadsAsync();

            _ = CommandQueue.StartCommandProcessingAsync(CancellationToken.None);

            if (args.Length == 2 && args[0] == "--chaos" && uint.TryParse(args[1], out var wait))
            {
                await RunChaosModAsync(payloads, wait);
            }
            else if (args.Any() && args[0] == "--bot")
            {
                var bot = new Bot();
                bot.OnCommandSelected = index => {
                    if (index > 22 || index < 0)
                    {
                        return;
                    }

                    var p = payloads.ElementAt(index);
                    CommandQueue.AddPayload(p);
                };
                bot.OnMessageSent = async msg => {
                    await Amnesia.DisplayTextAsync(msg);
                };
                bot.OnDeathSet = msg => {
                    Amnesia.SetDeathHintTextAsync(msg);
                };
            }
            else if (args.Length == 2 && args[0] == "--run")
            {
                CommandQueue.AddPayload(payloads.First(p => p.Name.Contains(args[1])));
            }

            for (var i = 0; i < payloads.Count(); i++)
            {
                var p = payloads.ElementAt(i);
                Console.WriteLine($"{i} - {p.Name}");
            }

            await Task.Delay(-1);
        }
Example #3
0
        private StreamnesiaConfig GetStreamnesiaConfig()
        {
            if (!File.Exists(StreamnesiaConfigFile))
            {
                var config = new StreamnesiaConfig();
                File.WriteAllText(StreamnesiaConfigFile, JsonConvert.SerializeObject(config, Formatting.Indented));
                return(config);
            }

            return(JsonConvert.DeserializeObject <StreamnesiaConfig>(File.ReadAllText(StreamnesiaConfigFile)));
        }
Example #4
0
        public StreamnesiaHub(
            IHubContext <UpdateHub> hub,
            ICommandPoll poll,
            CommandQueue cmdQueue,
            IPayloadLoader payloadLoader,
            Bot bot,
            Random rng,
            PollState pollState,
            StreamnesiaConfig config,
            IServerLogger logger
            )
        {
            _hub           = hub;
            _poll          = poll;
            _cmdQueue      = cmdQueue;
            _payloadLoader = payloadLoader;
            _bot           = bot;
            _rng           = rng;
            _pollState     = pollState;
            _logger        = logger;

            _canQueryPoll = true;

            _bot.OnVoted    = OnUserVoted;
            _bot.OnDeathSet = text => {
                if (config.AllowDeathMessages)
                {
                    Amnesia.SetDeathHintTextAsync(text);
                }
            };
            _bot.OnMessageSent = text => {
                if (config.AllowOnScreenMessages)
                {
                    Amnesia.DisplayTextAsync(text);
                }
            };

            _ = _cmdQueue.StartCommandProcessingAsync(CancellationToken.None);
            _ = StartLoop();
        }