internal void Initialize() { _top = new Dictionary <TopParam, SortedByValueDictionary <UserId, decimal> > { { TopParam.Gold, new SortedByValueDictionary <UserId, decimal>() }, { TopParam.Monsters, new SortedByValueDictionary <UserId, decimal>() }, { TopParam.Rooms, new SortedByValueDictionary <UserId, decimal>() }, { TopParam.Level, new SortedByValueDictionary <UserId, decimal>() } }; foreach (var userId in DatabaseConnection.GetUsersList()) { var user = UserProxy.GetUnsafe(userId); _top[TopParam.Gold].Add(userId, user.Info.Gold); _top[TopParam.Monsters].Add(userId, user.Info.Statistics.MonsterCount); _top[TopParam.Rooms].Add(userId, user.Info.Statistics.RoomsCount); _top[TopParam.Level].Add(userId, PackLevel(user.Info.Level.Level, user.Info.Level.ExpirenceCollected)); } UserLevel.OnChanged += (user, level) => { _top[TopParam.Level].Add(user.Info.UserId, PackLevel(user.Info.Level.Level, user.Info.Level.ExpirenceCollected)); }; Statistics.OnChanged += user => { _top[TopParam.Gold].Add(user.Info.UserId, user.Info.Gold); _top[TopParam.Monsters].Add(user.Info.UserId, user.Info.Statistics.MonsterCount); _top[TopParam.Rooms].Add(user.Info.UserId, user.Info.Statistics.RoomsCount); }; }
private void DisplayTop(StringBuilder sb, IEnumerable <KeyValuePair <UserId, decimal> > top, Func <User, KeyValuePair <UserId, decimal>, string> formatter) { var cnt = 0; foreach (var topPlayer in top) { if (cnt++ > 10) { break; } var usr = UserProxy.GetUnsafe(topPlayer.Key); sb.AppendLine($"<b>{cnt}</b>. {formatter(usr, topPlayer)}"); } }
protected override void Enter(User user, string[][] buttons) { var no = (int?)(Serializable.Int)GlobalVariables.Variables.Get("voldemort_no") ?? 1; var time = DateTimeOffset.FromUnixTimeSeconds( (int?)(Serializable.Long)GlobalVariables.Variables.Get("voldemort_time") ?? 0); var name = "неизвестного"; var playerId = GlobalVariables.Variables.Get("voldemort_killer"); if (playerId != null) { name = UserProxy.GetUnsafe((UserId)playerId).Info.Name; } var timeOffset = DateTimeOffset.Now - time; SendMessage(user, "Одно его имя внушает страх, как и все трехстепенные имена, а отсутствие носа только усиливает это ощущение."); SendMessage(user, $"Он воскресал уже {no} раз. Его реинкарнация длится уже {timeOffset.TotalMinutes:F2} минут после убийства от руки {name}, и снова умирать он не собирается."); SendMessage(user, "Его взгляд совсем не кажется дружелюбным. Похоже, пора расчехлять оружие.", buttons); }