Example #1
0
    public static Dictionary <StatType, List <PlayerEvent> > DiffFixtureStats(Fixture newFixture, Fixture oldFixture, ICollection <Player> players)
    {
        var newFixtureStats = new Dictionary <StatType, List <PlayerEvent> >();

        if (newFixture == null || oldFixture == null)
        {
            return(newFixtureStats);
        }

        foreach (var stat in newFixture.Stats)
        {
            var type = StatHelper.FromStatString(stat.Identifier);
            if (type is StatType.Unknown or StatType.YellowCards or StatType.Saves or StatType.Bonus)
            {
                continue;
            }

            var oldStat         = oldFixture.Stats.FirstOrDefault(s => s.Identifier == stat.Identifier);
            var newPlayerEvents = DiffStat(stat, oldStat, players);

            if (newPlayerEvents.Any())
            {
                newFixtureStats.Add(type, newPlayerEvents);
            }
        }

        return(newFixtureStats);
    }
        private void DisplayStats()
        {
            var view = new GridView();

            StatsView.View = view;
            view.Columns.Add(CreateGridColumn("User", 185));
            view.Columns.Add(CreateGridColumn("Public Corkboards", 138.9, "PublicCorkboards"));
            view.Columns.Add(CreateGridColumn("Private Corkboards", 144, "PrivateCorkboards"));
            view.Columns.Add(CreateGridColumn("Public Pushpins", 136, "PublicPushpins"));
            view.Columns.Add(CreateGridColumn("Private Pushpins", 136, "PrivatePushpins"));

            var stats = StatHelper.GetCorkboardStats();

            foreach (var stat in stats)
            {
                var item = new { User = stat.User, PublicCorkboards = stat.PublicCorkboards, PrivateCorkboards = stat.PrivateCorkboards, PublicPushpins = stat.PublicPushpins, PrivatePushpins = stat.PrivatePushpins };
                StatsView.Items.Add(item);

                if (item.User.Equals(homePage.MainWindow.User.Name))
                {
                    DisplayedUser          = item;
                    StatsView.SelectedItem = item;
                }
            }
        }
Example #3
0
    public void Initialize(Unit unit)
    {
        Id = Guid.NewGuid();
        isPlayerControlled = unit.IsHumanPlayer;

        if (unit.IsHumanPlayer)
        {
            StatHelper.InitializePlayerStats(stats);
        }
        else
        {
            StatHelper.InitializeCreatureStats(stats);
        }

        StatHelper.InitializeSpeedRates(speedRates);

        SpellHistory = new SpellHistory();

        GlobalCooldown = new Cooldown(1);
        SpellCast      = new SpellCast();

        Buffs  = new Buffs(unit);
        Spells = new SpellStorage();

        PreviousTargets = new List <Guid>();
        PeriodicEffects = new List <PeriodicEffectAura>();
        AbsorbEffects   = new List <AbsorbEffect>();
        CharacterEvents = new Dictionary <int, List <SpellScriptAura> >();
        for (int i = 0; i < CharacterEventTypes.Count; i++)
        {
            CharacterEvents.Add(i, new List <SpellScriptAura>());
        }
    }
Example #4
0
        public void TestGetCurrentStat()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            Assert.AreEqual(1100, A.GetCurrentStat(StatisticsEnum.Health));
        }
Example #5
0
        public void TestTakeDamage()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            Assert.AreEqual(700, A.TakeDamage(1000, false, A));
        }
Example #6
0
    protected override void Start()
    {
        base.Start();
        UnitStats stats = StatHelper.GenerateStats(rarity, primaryStat);

        stats.UpdateMaxHealth(true, 0.5f);
        SetStats(stats);
    }
Example #7
0
        public void TestGetCurrentAttribute()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            Assert.AreEqual(100, A.GetCurrentAttribute(AttributeEnum.Intelligence));
        }
Example #8
0
    public HeroUnit GenerateHero(UnitStats stats, int rarity, StatType primaryStat, int cost)
    {
        HeroUnit hero = Instantiate(heroPrefab);

        hero.name   = StatHelper.MakeName();
        hero.rarity = rarity;
        hero.SetStats(stats);
        hero.cost = cost;
        Ability[] abilites = { };
        if (primaryStat == StatType.STR)
        {
            abilites = strAbilities;
        }
        else if (primaryStat == StatType.INT)
        {
            abilites = Random.Range(0.0f, 1.0f) > 0.5f ? intDmgAbilities : intSupAbilities;
        }
        else if (primaryStat == StatType.DEX)
        {
            abilites = dexAbilities;
        }
        UnitAbilityController abilityRoot = hero.GetAbilityController();

        foreach (Ability abilityPrefab in abilites)
        {
            Ability ability = Instantiate(abilityPrefab);
            ability.transform.parent        = abilityRoot.transform;
            ability.transform.localPosition = Vector3.zero;
        }
        abilityRoot.UpdateAbilityList();
        abilityRoot.enabled = false;

        if (abilites == intSupAbilities)
        {
            hero.targettingAlignment = TargettingAlignment.Friendly;
        }

        UnitMovementController movementController;

        if (abilites == strAbilities)
        {
            movementController = hero.gameObject.AddComponent <MeleeUnitMovementController>();
        }
        else
        {
            movementController = hero.gameObject.AddComponent <RangedUnitMovementController>();
        }
        movementController.Disable();

        int       seatIndex = Random.Range(0, seats.Count);
        Transform seat      = seats[seatIndex];

        seats.RemoveAt(seatIndex);
        hero.transform.position = seat.position;

        heroList.AddHero(hero);
        return(hero);
    }
Example #9
0
        public void TestComputePower()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            A.Skills.Add(new HeavyStrike(A));
            Assert.AreEqual(10010, A.Skills[0].ComputePower());
        }
Example #10
0
        public void TestGetCurrentAttributeKO()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());
            Dictionary <AttributeEnum, int> baseAttributes = StatHelper.GetDefaultAttributes();
            Dictionary <StatisticsEnum, Func <Unit, int> > statisticsComputer = StatHelper.GetDefaultComputer();
            StatManager statManager = new StatManager(A, null, null);

            Assert.AreEqual(0, statManager.GetCurrentAttribute(AttributeEnum.Agility));
        }
Example #11
0
    public HeroUnit GenerateHero(int rarity, StatType primaryStat, int cost = -1)
    {
        UnitStats stats = StatHelper.GenerateStats(rarity, primaryStat);

        stats.UpdateMaxHealth(true, 2.0f);
        int heroCost = cost < 0 ? (stats.strength + stats.intelligence + stats.dexterity) * 10 : cost;

        return(GenerateHero(stats, rarity, primaryStat, heroCost));
    }
Example #12
0
        public async Task GetStatsAsync(SocketUser user, int page = 1)
        {
            Context.TryGetUser(user.Id, out ArcadeUser account);

            if (await CatchEmptyAccountAsync(account))
            {
                return;
            }

            await Context.Channel.SendMessageAsync(StatHelper.Write(account, false, --page));
        }
 public EmpiricalDistribution(double[] values) : base(new Well1024a())
 {
     this.nPoints = values.Length;
     Array.Copy(values, points, nPoints);
     Array.Sort(points);
     this.lowerBound = points[0];
     this.upperBound = points[nPoints - 1];
     this.mean       = StatHelper.Mean(values);
     // populationVariance vs. Variance
     this.variance = StatHelper.Variance(values);
 }
Example #14
0
        public void TestStatManagerOK()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());
            Dictionary <AttributeEnum, int> baseAttributes = StatHelper.GetDefaultAttributes();
            Dictionary <StatisticsEnum, Func <Unit, int> > statisticsComputer = StatHelper.GetDefaultComputer();
            StatManager statManager = new StatManager(A, baseAttributes, statisticsComputer);

            Assert.AreEqual(baseAttributes, statManager.BaseAttributes);
            Assert.AreEqual(statisticsComputer, statManager.StatisticsComputer);
            Assert.AreEqual(A, statManager.Unit);
        }
Example #15
0
        public void TestUnitAttaqueOK()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());
            Unit B = new Unit("test_B", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            B.StatManager = new StatManager(B, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            B.StatManager.Update();

            Assert.IsTrue(A.Attack(B));
        }
Example #16
0
        public void TestCastSkillOK()
        {
            // Bug corrigé dans la fonction UpdateStats: transformé CurrentStatistics.Clear() en CurrentStatistics = BaseStatistics
            Unit A = new Unit("test_A", null, null, new BasicSword());
            Unit B = new Unit("test_B", null, null, new BasicSword());

            A.StatManager = new StatManager(A, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            B.StatManager = new StatManager(B, StatHelper.GetDefaultAttributes(), StatHelper.GetDefaultComputer());
            A.StatManager.Update();
            B.StatManager.Update();
            A.Skills.Add(new HeavyStrike(A));
            Assert.IsTrue(A.Skills[0].Cast(B));
        }
Example #17
0
        public StatManager(Unit unit,
                           Dictionary <AttributeEnum, int> baseAttributes,
                           Dictionary <StatisticsEnum, Func <Unit, int> > statisticsComputer = null)
        {
            Unit = unit;
            CurrentAttributes = new Dictionary <AttributeEnum, int>();
            BaseAttributes    = baseAttributes ?? new Dictionary <AttributeEnum, int>();

            BaseStatistics    = new Dictionary <StatisticsEnum, int>();
            CurrentStatistics = new Dictionary <StatisticsEnum, int>();

            StatisticsComputer = statisticsComputer ?? StatHelper.GetDefaultComputer();
        }
Example #18
0
        public static Message ApplyAndDisplay(ArcadeUser user, DailyResultFlag flag)
        {
            long           reward = Reward;
            string         header = $"{Reward:##,0}";
            ImmutableColor color  = ImmutableColor.GammaGreen;
            var            icon   = "+ 💸";

            switch (flag)
            {
            case DailyResultFlag.Cooldown:
                TimeSpan sinceLast = StatHelper.SinceLast(user, CooldownVars.Daily);
                TimeSpan rem       = Cooldown - sinceLast;
                DateTime time      = DateTime.UtcNow.Add(rem);

                color  = GammaPalette.Amber[Gamma.Max];
                header = Format.Countdown(rem);
                icon   = Icons.GetClock(time.Hour);
                break;

            case DailyResultFlag.Reset:
                color = GammaPalette.NeonRed[Gamma.Max];
                user.SetVar(Stats.DailyStreak, 0);
                break;

            case DailyResultFlag.Bonus:
                color   = GammaPalette.Glass[Gamma.Max];
                header += $" + {Bonus:##,0}";
                reward += Bonus;
                break;
            }

            if (flag != DailyResultFlag.Cooldown)
            {
                user.SetVar(CooldownVars.Daily, DateTime.UtcNow.Ticks);
                user.AddToVar(Stats.DailyStreak);
                user.AddToVar(Stats.TimesDaily);
                Var.SetIfGreater(user, Stats.LongestDailyStreak, Stats.DailyStreak);
                user.Give(reward);
            }

            var message  = new MessageBuilder();
            var embedder = Embedder.Default;

            embedder.Color   = color;
            embedder.Header  = $"**{icon} {header}**";
            message.Content  = $"*\"{Replies.GetReply(flag)}\"*";
            message.Embedder = embedder;

            return(message.Build());
        }
        public decimal GetSpeedRun()
        {
            var skills      = StatHelper.GetSkills(CodeSkills);
            var statBonuses = StatHelper.GetStatBonuses(skills);

            switch (Class)
            {
            case "Ertheia Fighter":
                return(StatHelper.GetSpeed(194, 1, 1, 1, statBonuses.SpeedStaticBonus));

            default:
                break;
            }
            return(0);
        }
Example #20
0
        public Unit(
            string name,
            StatManager statManager = null,
            Dictionary <ArmorType, Armor> equipement = null,
            Weapon weapon = null)
        {
            Name        = name;
            Equipement  = equipement ?? new Dictionary <ArmorType, Armor>();
            StatManager = statManager ?? new StatManager(this, StatHelper.GetDefaultAttributes());
            Weapon      = weapon;

            Bag    = new List <Stuff>();
            Skills = new List <Skill>();
            Level  = 1;
        }
Example #21
0
        public void TestUpdateAttributes()
        {
            Unit A = new Unit("test_A", null, null, new BasicSword());
            Dictionary <AttributeEnum, int> baseAttributes = StatHelper.GetDefaultAttributes();
            Dictionary <StatisticsEnum, Func <Unit, int> > statisticsComputer = StatHelper.GetDefaultComputer();
            StatManager statManager = new StatManager(A, baseAttributes, statisticsComputer);

            A.StatManager = statManager;
            Assert.AreEqual(3, statManager.BaseAttributes.Count);
            Assert.AreEqual(0, statManager.CurrentAttributes.Count);
            statManager.UpdateAttributes();
            statManager.UpdateStatistics();
            Assert.AreEqual(3, statManager.BaseAttributes.Count);
            Assert.AreEqual(3, statManager.CurrentAttributes.Count);
        }
Example #22
0
        public static Bitmap FilterForImage(this Bitmap sourceBitmap, double[] filterKernel, bool isHighpass)
        {
            var sourceBitmapWidth  = sourceBitmap.Width;
            var sourceBitmapHeight = sourceBitmap.Height;
            var arrayNoise         = new int[sourceBitmap.Width, sourceBitmap.Height];

            for (int x = 0; x < sourceBitmap.Width; x++)
            {
                for (int y = 0; y < sourceBitmap.Height; y++)
                {
                    arrayNoise[x, y] = sourceBitmap.GetPixel(x, y).R;
                }
            }
            var oneDimensionImageArrayNoises = MultiToSingle(arrayNoise);
            var outputImage = new List <List <double> >(sourceBitmapHeight);

            for (int i = 0; i < sourceBitmapHeight; i++)
            {
                outputImage.Add(StatHelper.Convolve(oneDimensionImageArrayNoises.Skip(sourceBitmapWidth * i).Take(sourceBitmapWidth).ToArray(),
                                                    filterKernel, true).ToList());
            }
            int[,] bufferOutputArray = new int[sourceBitmapHeight, sourceBitmapWidth];
            Parallel.For(0, sourceBitmapHeight, x => Parallel.For(0, sourceBitmapWidth, y =>
            {
                bufferOutputArray[x, y] = (int)outputImage[x][y];
            }));
            if (isHighpass)
            {
                bufferOutputArray = NormaliseData(sourceBitmapHeight, sourceBitmapWidth, bufferOutputArray);
            }
            Bitmap newImage = new Bitmap(sourceBitmapWidth, sourceBitmapHeight);

            for (int i = 0; i < sourceBitmapWidth; i++)
            {
                for (int j = 0; j < sourceBitmapHeight; j++)
                {
                    var colorPixel = (int)bufferOutputArray[j, i];
                    newImage.SetPixel(i, j,
                                      Color.FromArgb(colorPixel, colorPixel,
                                                     colorPixel));
                }
            }

            return(newImage);
        }
Example #23
0
        public int [] GetColorLevel(double [] vec)
        {
            int len = vec.Length;

            int[] levels = new int[len];
            var   sinfo  = StatHelper.Get(vec);

            if (sinfo.Max == sinfo.Min)
            {
                return(levels);
            }
            else
            {
                double[] dividers = new double[ColourRampCount + 1];

                return(levels);
            }
        }
Example #24
0
        /// <summary>
        /// Generates an error Message based on a command error.
        /// </summary>
        /// <param name="context">
        /// The context.
        /// </param>
        /// <param name="result">
        /// The result.
        /// </param>
        /// <param name="argPos">
        /// The arg pos.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        internal async Task CmdErrorAsync(Context context, IResult result, int argPos)
        {
            string errorMessage;

            if (result.Error == CommandError.UnknownCommand)
            {
                errorMessage = "**Command:** N/A";
            }
            else
            {
                // Search the commandservice based on the Message, then respond accordingly with information about the command.
                var search = CommandService.Search(context, argPos);
                var cmd    = search.Commands.FirstOrDefault();

                errorMessage = $"**Command Name:** `{cmd.Command.Name}`\n" +
                               $"**Summary:** `{cmd.Command?.Summary ?? "N/A"}`\n" +
                               $"**Remarks:** `{cmd.Command?.Remarks ?? "N/A"}`\n" +
                               $"**Aliases:** {(cmd.Command.Aliases.Any() ? string.Join(" ", cmd.Command.Aliases.Select(x => $"`{x}`")) : "N/A")}\n" +
                               $"**Parameters:** {(cmd.Command.Parameters.Any() ? string.Join(" ", cmd.Command.Parameters.Select(x => x.IsOptional ? $" `<(Optional){x.Name}>` " : $" `<{x.Name}>` ")) : "N/A")}\n" +
                               "**Error Reason**\n" +
                               $"{result.ErrorReason}";
                StatHelper.LogCommand(cmd.Command, context.Message, true);
            }
Example #25
0
        /// <summary>
        /// This event is triggered every time the a user sends a Message in a channel, dm etc. that the bot has access to view.
        /// </summary>
        /// <param name="socketMessage">
        /// The socket Message.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        internal async Task MessageReceivedAsync(SocketMessage socketMessage)
        {
            if (!(socketMessage is SocketUserMessage Message) || Message.Channel is IDMChannel)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(Message.Content) || Message.Content.Length < 3)
            {
                return;
            }

            if (Message.Author.IsBot || Message.Author.IsWebhook)
            {
                // Filter out all bot messages from triggering commands.
                return;
            }

            // Ensure that blacklisted users/guilds are not allowed to run commands
            if (CheckBlacklist(Message.Author.Id, (Message.Channel as IGuildChannel).Guild.Id))
            {
                return;
            }

            await _ChannelHelper.DoMediaChannelAsync(Message);

            var argPos     = 0;
            var isPrefixed = true;

            if (prefixOverride)
            {
                var config = JsonConvert.DeserializeObject <DatabaseObject>(File.ReadAllText("setup/DBConfig.json"));
                if (config.PrefixOverride != null)
                {
                    if (!Message.HasStringPrefix(config.PrefixOverride, ref argPos))
                    {
                        isPrefixed = false;
                    }
                }
                else
                {
                    LogHandler.LogMessage("Message Handler is being returned as the bot is in prefix override mode and you haven't specified a custom prefix in DBConfig.json", LogSeverity.Warning);
                    isPrefixed = false;
                }
            }
            else
            {
                // Filter out all messages that don't start with our Bot PrefixSetup, bot mention or server specific PrefixSetup.
                if (!(Message.HasMentionPrefix(Client.CurrentUser, ref argPos) || Message.HasStringPrefix(PrefixService.GetPrefix((Message.Channel as IGuildChannel)?.Guild?.Id ?? 0), ref argPos)))
                {
                    isPrefixed = false;
                }
            }

            // run level check and auto-message channel check if the current message is not a command prefixed message
            if (!isPrefixed)
            {
                var messageTask = Task.Run(
                    async() =>
                {
                    LogHandler.LogMessage($"G: {(Message.Channel as IGuildChannel)?.Guild?.Id} | C: {Message.Channel?.Id} | U: {Message.Author?.Id.ToString()} | M: {Message?.Content.Left(100)}", LogSeverity.Verbose);
                    await _LevelHelper.DoLevelsAsync(Message);
                    await _ChannelHelper.DoAutoMessageAsync(Message);
                });

                await StatHelper.LogMessageAsync(Message);

                return;
            }

            // Here we attempt to execute a command based on the user Message
            var commandTask = Task.Run(async() =>
            {
                var context = new Context(Client, Message, Provider);
                var result  = await CommandService.ExecuteAsync(context, argPos, Provider, MultiMatchHandling.Best);

                // Generate an error Message for users if a command is unsuccessful
                if (!result.IsSuccess)
                {
                    await CmdErrorAsync(context, result, argPos);
                }
                else
                {
                    var search = CommandService.Search(context, argPos);
                    var cmd    = search.Commands.FirstOrDefault();
                    StatHelper.LogCommand(cmd.Command, Message);
                    if (Config.LogCommandUsages)
                    {
                        LogHandler.LogMessage(context);
                    }
                }
            });
        }
 public ActionResult GetUploadData()
 {
     return(Content(StatHelper.GetJsonData(), "text/json"));
 }
        public ActionResult StatusLogger()
        {
            if (AnsattHelper.IsUserRaadmann(GetUsername()))
            {
                StatHelper.Init();

                var data = StatHelper.GetData();

                //var sykefraværData = data.Where(l => l.Type == Mappetype.Sykefravær);
                var ansattforholdData = data.Where(l => l.Type == Mappetype.Ansattforhold);
                var currentDayList    = StatHelper.GetUploadsToday();

                ViewBag.CurrentDayCount    = currentDayList.Count();
                ViewBag.SykefraværCount    = currentDayList.Where(l => l.Type == Mappetype.Sykefravær).Count();
                ViewBag.AnsattforholdCount = currentDayList.Where(l => l.Type == Mappetype.Ansattforhold).Count();

                var varselDataResult = StatHelper.GetVarselLogg();
                var uploadDataResult = StatHelper.GetOppfølginger();

                if (varselDataResult.Success && uploadDataResult.Success)
                {
                    var varselData = varselDataResult.Get();
                    var uploadData = uploadDataResult.Get();
                    ViewBag.Dag5Count  = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(5))).Count();
                    ViewBag.Dag14Count = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(14))).Count();
                    ViewBag.Dag28Count = varselData.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(28))).Count();

                    ViewBag.DateMod = varselDataResult.Message;

                    ViewBag.TodayCount = varselData.Where(v => v.Date.Equals(DateTime.Now.ToString("dd.MM.yyy"))).Count();

                    // tell opp sendte varsler pr. dag for å tegne graf
                    var currentDate   = DateTime.Now;
                    var jsVarselArray = "["; // lag en array som javascript can bruke
                    var jsUploadArray = "[";
                    for (int i = 0; i < 28; i++)
                    {
                        jsVarselArray += varselData.Where(v => v.Date.Equals(currentDate.AddDays(-i).ToString("dd.MM.yyy"))).Count() + ", ";
                        jsUploadArray += uploadData.Where(l => l.Date.Equals(currentDate.AddDays(-i).ToString("dd.MM.yyy"))).Count() + ", ";
                    }


                    var ledere = varselData.GroupBy(v => v.User).Select(grp => grp.ToList()).ToList();

                    // tell opp antall utførte/aktive varsler pr nærmeste leder
                    var lederVarsler = new List <VarselLeder>();
                    foreach (var grpLeder in ledere)
                    {
                        var currentLederList = varselData.Where(v => v.User.Equals(grpLeder.First().User));
                        var d5  = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(5)));
                        var d14 = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(14)));
                        var d28 = currentLederList.Where(v => v.Name.Equals(StringConstants.Varsel.GetVarsel(28)));

                        var utførtD5  = d5.Where(v => v.Status.Equals("Utført"));
                        var utførtD14 = d14.Where(v => v.Status.Equals("Utført"));
                        var utførtD28 = d28.Where(v => v.Status.Equals("Utført"));

                        var vl = new VarselLeder(grpLeder.First().User, $"{utførtD5.Count()}/{d5.Count()}", $"{utførtD14.Count()}/{d14.Count()}", $"{utførtD28.Count()}/{d28.Count()}");

                        // regn ut % utført av alle varsler
                        double su = utførtD5.Count() + utførtD14.Count() + utførtD28.Count();
                        double st = d5.Count() + d14.Count() + d28.Count();
                        if (st > 0)
                        {
                            var pc = su / st;
                            vl.PS = Math.Round(pc * 100);
                        }

                        lederVarsler.Add(vl);
                    }

                    jsVarselArray      += "]";
                    jsUploadArray      += "]";
                    ViewBag.VarselArray = jsVarselArray;
                    ViewBag.UploadArray = jsUploadArray;

                    ViewBag.LederVarsler = lederVarsler;
                }
                else if (!varselDataResult.Success)
                {
                    ViewBag.msgVarselFeil = varselDataResult.Message;
                }
                else
                {
                    ViewBag.msgVarselFeil = uploadDataResult.Message;
                }
                ViewBag.HelpLink = HelpLinks.StatusLogger;
                return(View());
            }
            else
            {
                return(new HttpUnauthorizedResult());
            }
        }
Example #28
0
        public static Message ApplyAndDisplay(ArcadeUser user, VoteResultFlag flag)
        {
            long           reward  = Reward;
            string         header  = $"{Reward:##,0}";
            ImmutableColor color   = GammaPalette.Lemon[Gamma.Max];
            string         icon    = $"+ {Icons.Tokens}";
            string         content = "Thank you for voting!";

            switch (flag)
            {
            case VoteResultFlag.Cooldown:
                TimeSpan sinceLast = StatHelper.SinceLast(user, CooldownVars.Vote);
                TimeSpan rem       = Cooldown - sinceLast;
                DateTime time      = DateTime.UtcNow.Add(rem);

                content = "You are on cooldown.";
                color   = GammaPalette.Amber[Gamma.Max];
                header  = Format.Countdown(rem);
                icon    = Icons.GetClock(time.Hour);
                break;

            case VoteResultFlag.Reset:
                content = "Your streak has been reset.";
                color   = GammaPalette.NeonRed[Gamma.Max];
                user.SetVar(Stats.VoteStreak, 0);
                break;

            case VoteResultFlag.Bonus:
                content = "You have received a bonus.";
                color   = GammaPalette.Glass[Gamma.Max];
                header += $" + {Bonus:##,0}";
                reward += Bonus;
                break;

            case VoteResultFlag.Success:
                content = "Thank you for voting!";
                color   = GammaPalette.Wumpite[Gamma.Max];
                break;

            case VoteResultFlag.Unavailable:
                content = $"Voting allows you to receive a **Token** on each vote you submit.\nYou are given an additional 2 **Tokens** on each 7 day streak.\n**Tokens** can be cashed out, or saved to purchase upcoming special items that can only be bought with this currency!\nYou can vote every **12** hours on any voting platform, and your streak is cut short after **48**  hours.\n\n> **Voting Portal**\n• [**Discord Boats**](https://discord.boats/bot/686093964029329413/vote)";
                color   = GammaPalette.Oceanic[Gamma.Max];
                icon    = Icons.Tokens;
                header  = $"Voting";
                reward  = 0;
                break;
            }

            if (flag != VoteResultFlag.Cooldown && flag != VoteResultFlag.Unavailable)
            {
                user.SetVar(CooldownVars.Vote, DateTime.UtcNow.Ticks);
                user.AddToVar(Stats.VoteStreak);
                user.AddToVar(Stats.TimesVoted);
                Var.SetIfGreater(user, Stats.LongestVoteStreak, Stats.VoteStreak);
                user.Give(reward, CurrencyType.Tokens);
            }

            var message  = new MessageBuilder();
            var embedder = Embedder.Default;

            embedder.Color   = color;
            embedder.Header  = $"{icon} {header}";
            message.Content  = content;
            message.Embedder = embedder;

            return(message.Build());
        }
Example #29
0
        private static VisitStat ProcessItem(VisitStatModel model)
        {
            var st = StatHelper.GetOrAdd(model, FindByModel, e =>
            {
                e.Page = model.Page;
            });

            if (st == null)
            {
                return(null);
            }

            // 历史平均
            if (st.Cost > 0)
            {
                st.Cost = (Int32)Math.Round(((Double)st.Cost * st.Times + model.Cost) / (st.Times + 1));
            }
            else
            {
                st.Cost = model.Cost;
            }
            if (model.Cost > st.MaxCost)
            {
                st.MaxCost = model.Cost;
            }

            if (!model.Title.IsNullOrEmpty())
            {
                st.Title = model.Title;
            }
            //st.Times++;
            Interlocked.Increment(ref st._Times);

            if (!model.Error.IsNullOrEmpty())
            {
                //st.Error++;
                Interlocked.Increment(ref st._Error);
            }

            var user = model.User;
            var ip   = model.IP;

            if (!user.IsNullOrEmpty() || !ip.IsNullOrEmpty())
            {
                // 计算用户和IP,合并在Remark里面
                var ss = new HashSet <String>((st.Remark + "").Split(","));
                if (!user.IsNullOrEmpty() && !ss.Contains(user))
                {
                    //st.Users++;
                    Interlocked.Increment(ref st._Users);
                    ss.Add(user + "");
                }
                if (!ip.IsNullOrEmpty() && !ss.Contains(ip))
                {
                    //st.IPs++;
                    Interlocked.Increment(ref st._IPs);
                    ss.Add(ip);
                }
                // 如果超长,砍掉前面
                var ds = ss as IEnumerable <String>;
                var k  = 1;
                while (true)
                {
                    var str = ds.Join(",");
                    if (str.Length <= _.Remark.Length)
                    {
                        st.Remark = str;
                        break;
                    }

                    ds = ss.Skip(k++);
                }
            }

            st.SaveAsync(5_000);

            return(st);
        }
Example #30
0
 public async Task GetStatsAsync(int page = 1)
 {
     await Context.Channel.SendMessageAsync(StatHelper.Write(Context.Account, page: --page));
 }