コード例 #1
0
 public decimal GetCurrentHealth(User user)
 {
     using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
     {
         return(stats.Stats.Health);
     }
 }
コード例 #2
0
 public RaspberrySyncJob(
     ILogger <RaspberrySyncJob> logger,
     StatsContext context)
 {
     _logger  = logger;
     _context = context;
 }
コード例 #3
0
 public StatsController(
     IStatsService statsService,
     StatsContext context)
 {
     _statsService = statsService;
     _context      = context;
 }
コード例 #4
0
        private void ConfirmGiveKnowledge(User user)
        {
            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                StatsProperty prop;
                switch (stats.Stats.KnowledgeGroup)
                {
                case MegaMonster.Knowledge.Strength:
                    prop = StatsProperty.Stamina;
                    break;

                case MegaMonster.Knowledge.Intelligence:
                    prop = StatsProperty.Mana;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                if (user.Info.ChangeStats(prop, -stats.Stats.KnowledgeRequired))
                {
                    user.RoomManager.Leave();
                }
            }
        }
コード例 #5
0
        private void Battle(User user, RecivedMessage messageRecived)
        {
            if (!UseItem(user, messageRecived))
            {
                SendMessage(user, "Чтобы что-то использовать, надо сначала этим чем-то завладеть");
                return;
            }

            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                if (stats.Stats.Health <= 0)
                {
                    // Won!
                    MonsterBase.MonsterKilled(user, this);
                    SendMessage(user, "Монстр не смог такого перенести и умер");
                    user.RoomManager.Leave();
                    return;
                }

                SwitchAction(user, SelectTarget);
                SendMessage(user, "А монстр то ещё жив! Постарайтесь это исправить, пока ещё можете.");
                SendMessage(user,
                            $"Вы оставили монстру {stats.Stats.Health.Format()} здоровья, а он вам его попытался понизить на {stats.Stats.Damage.Format()}");
                SendMessage(user, "Как будем исправлять ситуацию?", GetButtons(user));
                user.Info.MakeDamage(stats.Stats.Damage);
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: kevinjstewart/StatsBot
        public static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(AppContext.BaseDirectory)
                          .AddJsonFile(
                path: "appsettings.json",
                optional: false,
                reloadOnChange: true
                );

            using (var stats = new StatsContext())
            {
                try
                {
                    new Program(builder.Build())
                    .RunAsync(stats)
                    .GetAwaiter()
                    .GetResult();
                }
                catch (HttpException ex) when(ex.StatusCode == HttpStatusCode.Unauthorized)
                {
                    Console.Error.WriteLine("Discord authorization failed.  Your API token may not be correct.");
                }
            }
        }
コード例 #7
0
 public void MakeDamage(User user, decimal damage)
 {
     using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
     {
         var def = GetRoomVariables(user).Get <Serializable.Decimal>("current_defence");
         stats.Stats.Health -= UserInfo.CalculateDefence(damage, def);
     }
 }
コード例 #8
0
        public void Query_Database()
        {
            using (var context = new StatsContext())
            {
                var result = context.PlatformStats.Count();

                Assert.That(result, Is.Not.EqualTo(0));
            }
        }
コード例 #9
0
ファイル: RoomGold.cs プロジェクト: VoodooPython/AdventureBot
 private void ConfirmGiveGold(User user)
 {
     using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
     {
         if (user.Info.TryDecreaseGold(stats.Stats.Gold))
         {
             user.RoomManager.Leave();
         }
     }
 }
コード例 #10
0
 private void ConfirmGiveArtifact(User user)
 {
     using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
     {
         if (user.ItemManager.Remove(new ItemInfo(stats.Stats.ArtifactId, 1)))
         {
             user.RoomManager.Leave();
         }
     }
 }
コード例 #11
0
 public override void OnEnter(User user)
 {
     base.OnEnter(user);
     GetRoomVariables(user).Remove("monster_stats");
     SwitchAction(user, null);
     using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
     {
         SendMessage(user, $"Ты встречаешь {stats.Stats.Name}!", GetButtons(user));
     }
 }
コード例 #12
0
        public void BF4_Stats_ToDatabase()
        {
            var sut    = new BF4StatsApi();
            var result = sut.GetOnlinePlayers().Result;

            using (var context = new StatsContext())
            {
                context.PlatformStats.AddRange(result);
                context.SaveChanges();
            }
        }
コード例 #13
0
        public async Task Process(IncomingStepContext context, Func <Task> next)
        {
            var statsContext = new StatsContext();

            // save stats context for all the ProfilerSteps to find
            context.Save(statsContext);

            await next();

            _profilerStats.Register(statsContext);
        }
コード例 #14
0
    internal void Register(StatsContext statsContext)
    {
        var measurements = statsContext.GetMeasurements();

        foreach (var measurement in measurements)
        {
            _stats.AddOrUpdate(measurement.StepType,
                               key => measurement.Elapsed,
                               (key, elapsed) => elapsed + measurement.Elapsed);
        }
    }
コード例 #15
0
ファイル: GetBF4StatsJob.cs プロジェクト: sodablue/bfstats
        public static void GetStatsFromBF4(TextWriter log)
        {
            var sut    = new BF4StatsApi();
            var result = sut.GetOnlinePlayers().Result;

            using (var context = new StatsContext())
            {
                context.PlatformStats.AddRange(result);
                context.SaveChanges();
            }
        }
コード例 #16
0
        private void Knowledge(User user)
        {
            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                var    canLearn = false;
                string message;
                switch (stats.Stats.KnowledgeGroup)
                {
                case MegaMonster.Knowledge.Strength:
                    if (user.Info.CurrentStats.GetStat(StatsProperty.Strength) >= stats.Stats.KnowledgeMinimal &&
                        user.Info.CurrentStats.GetStat(StatsProperty.Stamina) >= stats.Stats.KnowledgeRequired)
                    {
                        canLearn = true;
                        SwitchAction(user, GiveKnowledge);
                    }

                    message =
                        $"Монстр желает научиться спорту. Для этого необходимо минимум {stats.Stats.KnowledgeMinimal.Format()} силы и {stats.Stats.KnowledgeRequired.Format()} запаса сил";

                    break;

                case MegaMonster.Knowledge.Intelligence:
                    if (user.Info.CurrentStats.GetStat(StatsProperty.Intelligence) >= stats.Stats.KnowledgeMinimal &&
                        user.Info.CurrentStats.GetStat(StatsProperty.Mana) >= stats.Stats.KnowledgeRequired)
                    {
                        canLearn = true;
                        SwitchAction(user, GiveKnowledge);
                    }

                    message =
                        $"Монстр желает научиться магии. Для этого необходимо минимум {stats.Stats.KnowledgeMinimal.Format()} интеллекта и {stats.Stats.KnowledgeRequired.Format()} маны";
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                if (canLearn)
                {
                    SwitchAction(user, GiveKnowledge);
                }
                else
                {
                    SwitchAction(user, NotEnoughKnowledge);
                }

                SendMessage(user, message, GetButtons(user));
            }
        }
コード例 #17
0
        private void BattleTarget(User user, Place place)
        {
            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                GetRoomVariables(user).Set("current_defence", new Serializable.Decimal(
                                               (stats.Stats.DefencedPlaces & place) != 0
                        ? stats.Stats.Defence
                        : 0
                                               ));
            }

            SwitchAction(user, Battle);
            SendMessage(user, "Чем же вы ударите?", GetItems(user)
                        .Select(i => new[] { i })
                        .ToArray());
        }
コード例 #18
0
        public static void ArchiveAllSpells(int playerId, bool archiveOrNot)
        {
            string archiveBool;

            if (archiveOrNot)
            {
                archiveBool = "1";
            }
            else
            {
                archiveBool = "0";
            }
            using (var context = new StatsContext())
            {
                context.Database.ExecuteSqlCommand($"UPDATE [dbo].[Skills] SET IsArchived = {archiveBool} WHERE OwnerId = {playerId} AND SkillSourceId != {PvPStatics.Spell_WeakenId}");
            }
        }
コード例 #19
0
ファイル: RoomGold.cs プロジェクト: VoodooPython/AdventureBot
        private void Gold(User user)
        {
            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                if (user.Info.Gold >= stats.Stats.Gold)
                {
                    SwitchAction(user, GiveGold);
                }
                else
                {
                    SwitchAction(user, NotEnoughGold);
                }

                SendMessage(user,
                            $"Монстр желает заполучить {stats.Stats.Gold.Format()} золота. Готовы попрощаться с деньгами?",
                            GetButtons(user));
            }
        }
コード例 #20
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, StatsContext context)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            var optionsBuilder = new DbContextOptionsBuilder <StatsContext>();

            optionsBuilder.UseSqlite("Data Source=stats.db");
            //context.Database.Migrate();
            context.Database.EnsureCreated();

            // seeding the DB with empty keys (having value of 0)
            var keys = new List <string>()
            {
                "lines", "smells", "files", "repos"
            };

            foreach (var key in keys)
            {
                var entry = context.Stats.FirstOrDefault(k => k.key == key);
                if (entry == null)
                {
                    context.Stats.Add(new Stat {
                        key = key, value = 0
                    });
                    context.SaveChanges();
                }
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseCors();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: kevinjstewart/StatsBot
        private async Task RunAsync(StatsContext stats)
        {
            _stats    = stats;
            _client   = new DiscordSocketClient();
            _commands = new CommandService();
            await _commands.AddModules(Assembly.GetEntryAssembly());

            _map = new DependencyMap();
            _map.Add(_client);
            _map.Add(_stats);

            _client.MessageReceived += HandleCommand;
            _client.MessageReceived += HandleMessage;

            Console.WriteLine("Logging in...");
            await _client.LoginAsync(TokenType.Bot, config["Token"]);

            await _client.ConnectAsync();

            Console.WriteLine("Bot is ready.");
            await Task.Delay(-1);
        }
コード例 #22
0
        private void Artifact(User user)
        {
            using (var stats = new StatsContext(user.Random, GetRoomVariables(user)))
            {
                if (stats.Stats.ArtifactId == null)
                {
                    SendMessage(user, "Монстру не нужны твои артефакты, людишка!");
                    BeginTalk(user);
                    return;
                }

                var item = GetAllItems().Get(stats.Stats.ArtifactId);
                if (user.ItemManager.Get(stats.Stats.ArtifactId) != null)
                {
                    SwitchAction(user, GiveArtifact);
                }
                else
                {
                    SwitchAction(user, ArtifactNotFound);
                }

                SendMessage(user, $"Монстр желает заполучить {item?.Name}. Готовы его отдать?", GetButtons(user));
            }
        }
コード例 #23
0
 public StatsController(StatsContext context)
 {
     _context = context;
 }
コード例 #24
0
 public ClackamasController(StatsContext context)
 {
     _context = context;
 }
コード例 #25
0
 public ServerService(StatsContext context)
 {
     db = context;
 }
コード例 #26
0
 public AvgMaxesController(StatsContext context)
 {
     _context = context;
 }
コード例 #27
0
 public StatsServiceDb(
     StatsContext context)
 {
     _context = context;
 }
コード例 #28
0
 public ReportsService(StatsContext context)
 {
     db = context;
 }
コード例 #29
0
 public RaspberryController(
     StatsContext context)
 {
     _context = context;
 }
コード例 #30
0
        // Not actual test. Routine to fill database for perfomance testing

        //[Fact]
        public void FillDatabase()
        {
            var serverCount  = 10000;
            var matchesCount = 100 * 2;
            var daysCount    = 14 * 2;
            var usersCount   = 1000000;
            var startDay     = new DateTime(2018, 5, 1);
            var random       = new Random();

            var fileName = @".\test.sqlite";

            var options = new DbContextOptionsBuilder();

            options.UseSqlite($"Filename={fileName}");

            File.Delete(fileName);

            using (var db = new StatsContext(options.Options)) {
                db.Database.EnsureCreated();
                using (db.Database.BeginTransaction()) {
                    db.Endpoints.AddRange(Enumerable.Range(0, serverCount - 1).Select(i =>
                                                                                      new Endpoint {
                        Id        = $"Details:{i}",
                        GameModes = "",
                        Name      = $"Endpoint Name {i}"
                    }));
                    db.SaveChanges();
                    db.Database.CommitTransaction();
                }
            }

            for (var endpoint = 0; endpoint < serverCount; endpoint++)
            {
                var days = random.Next(daysCount);
                for (var day = 1; day <= days; day++)
                {
                    var matches = random.Next(matchesCount);
                    using (var db = new StatsContext(options.Options)) {
                        using (db.Database.BeginTransaction()) {
                            db.Matches.AddRange(Enumerable.Range(0, matches).Select(x =>
                                                                                    new Match {
                                EndpointId  = $"Details:{endpoint}",
                                FragLimit   = random.Next(30) + 1,
                                GameMode    = $"DM{random.Next(10)}",
                                Map         = $"Map{random.Next(100)}",
                                TimeElapsed = 30.2F,
                                TimeLimit   = random.Next(100) + 1,
                                Timestamp   = startDay.AddDays(day).AddMinutes(random.Next(60 * 23)),
                                Scoreboard  = Enumerable.Range(0, random.Next(100)).Select(p =>
                                                                                           new Scoreboard {
                                    Name   = $"User{random.Next(usersCount)}",
                                    Deaths = random.Next(100),
                                    Frags  = random.Next(100),
                                    Kills  = random.Next(100),
                                    Rating = (float)p
                                }
                                                                                           ).ToArray()
                            }
                                                                                    ));
                            db.SaveChanges();
                            db.Database.CommitTransaction();
                        }
                    }
                }
            }
        }