Exemplo n.º 1
0
        private void LoopAndSendRandom()
        {
            var j = ConsoleEx.ReadLine("Number of messages to send (0 for infinite or until ESC is pressed)", 0);

            for (var i = 0; i < j || j == 0; i++)
            {
                if (Console.KeyAvailable)
                {
                    var key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Escape)
                    {
                        break;
                    }
                }

                var typeToSend = GetMessageTypes().TakeRandom();
                var gameEvent  = (ITypeVersionMessage)Activator.CreateInstance(typeToSend);

                var props = gameEvent.GetType().GetProperties();

                foreach (var prop in props)
                {
                    var propName = prop.Name;
                    if (propName != "ClientUtcTime" && Program.PropertyCache.ContainsKey(propName))
                    {
                        prop.SetValue(gameEvent, Program.PropertyCache[propName]);
                    }
                }

                _client.SendMessageAsync(gameEvent).Wait();
            }

            _client.FlushAsync().Wait();
        }
        private void SampleFileSelected(string file)
        {
            var fileContent = File.ReadAllText(file);
            var templateObj = JObject.Parse(fileContent);
            var obj         = new JObject();


            foreach (var property in templateObj)
            {
                var propertyType = property.Value.Type.ToString();

                switch (propertyType.ToLower())
                {
                case "string":
                    var s = ConsoleEx.ReadLine(property.Key, (string)property.Value);
                    obj.Add(property.Key, s);
                    break;

                case "integer":
                    var i = ConsoleEx.ReadLine(property.Key, (int)property.Value);
                    obj.Add(property.Key, i);
                    break;

                default:
                    break;
                }
            }

            _client.SendMessageAsync(obj.ToString()).Wait();
            _client.FlushAsync().Wait();
        }
Exemplo n.º 3
0
        private void SimulateWalkers()
        {
            var n    = DateTime.UtcNow;
            var to   = new DateTime(n.Year, n.Month, n.Day, 0, 0, 0, DateTimeKind.Utc);
            var from = to - TimeSpan.FromDays(1);

            var fromDate               = ConsoleEx.ReadLine("From (UTC)", from);
            var toDate                 = ConsoleEx.ReadLine("To (UTC)", to);
            var timeZoneDiff           = ConsoleEx.ReadLine("Time Zone Diff (h)", 1);
            var warmupTime             = ConsoleEx.ReadLine("Warmup Time (min)", 15);
            var gamerTagFile1          = ConsoleEx.ReadLine("GamerTags File 1", "DataFiles/GamerTags1.txt", s => File.Exists(s));
            var gamerTagFile2          = ConsoleEx.ReadLine("GamerTags File 2", "DataFiles/GamerTags2.txt", s => File.Exists(s));
            var gamerTagFile3          = ConsoleEx.ReadLine("GamerTags File 3", "DataFiles/GamerTags3.txt", s => File.Exists(s));
            var playerDistributionFile = ConsoleEx.ReadLine("Player Distribution File", "DataFiles/PlayerDistribution.tsv", s => File.Exists(s));
            var routesFolder           = ConsoleEx.ReadLine("GeoJson Routes Folder", DefaultRoutesFolder, s => Directory.Exists(s));
            var step = ConsoleEx.ReadLine("Increase Clock With (s)", 12);

            var gamerTagProvider    = new GamerTagProvider(gamerTagFile1, gamerTagFile2, gamerTagFile3);
            var gameSessionProvider = new GameSessionProvider();
            var geoRouteProvider    = new GeoRouteProvider(routesFolder);


            var playerDistribution = new PlayerDistributionProvider(playerDistributionFile);
            var now        = fromDate.AddMinutes(-warmupTime);
            var bots       = new List <NetherBot>();
            var botsNeeded = 0d;

            var lastTick = now.AddSeconds(-1);

            while (now < toDate)
            {
                bool warmup = now <= fromDate;

                if (now.Second == 0)
                {
                    Console.WriteLine();
                    Console.WriteLine(now.ToString());
                    Console.WriteLine($"Number of players: {bots.Count}");
                }

                Console.Write(".");
                var delta = now - lastTick;

                botsNeeded += playerDistribution.GetDistribution(now) / 60; // * delta.TotalMinutes;
                var botsToSpawnNow = (int)botsNeeded;

                // Add any new bots needed
                for (int i = 0; i < botsToSpawnNow; i++)
                {
                    var bot = new GeoBot(_client, gamerTagProvider, gameSessionProvider, geoRouteProvider);

                    bots.Add(bot);
                }

                // Deduct the number of bots that was just spawned from the needed count of bots
                botsNeeded -= botsToSpawnNow;

                // Update each bot
                foreach (var bot in bots)
                {
                    bot.TickAsync(now, warmup).Wait();
                }

                // Remove bots that are done
                bots.RemoveAll(b => b.SessionEnded);

                now += TimeSpan.FromSeconds(step);
            }

            _client.FlushAsync().Wait();
        }