public void UpdatePlayers() { foreach (var playerInfo in Players) { if (playerInfo.Id == 0) { playerInfo.Id = Players.Select(x => x.Id).Max() + 1; } } var medianScore = !PlayerScores.Any() ? 0 : PlayerScores.Values.Aggregate(0, (x, y) => x + y) / PlayerScores.Count; var removedPlayers = PlayerScores.Keys.ToList(); foreach (var playerInfo in Players) { if (!PlayerScores.ContainsKey(playerInfo.Id)) { PlayerScores.Add(playerInfo.Id, medianScore); } else { removedPlayers.Remove(playerInfo.Id); } } foreach (var removedPlayer in removedPlayers) { PlayerScores.Remove(removedPlayer); } }
public void AddMedal(AwardedMedalReadModel awardedMedal) { if (PlayerScores.ContainsKey(awardedMedal.Player) == false) { throw new ApplicationException($"No player with id {awardedMedal.Player} found"); } PlayerScores[awardedMedal.Player].AddMedal(awardedMedal); }
public void AddResultForPlayer(Player player, int score, int pins) { if (PlayerScores.ContainsKey(player.Id) == false) { PlayerScores.Add(player.Id, new PlayerScore(player.Id, player.Name)); } PlayerScore playerScore = PlayerScores[player.Id]; playerScore.Score += score; playerScore.Pins += pins; playerScore.Series++; }
public void Stop() { if (!_mActive || Deleted) { return; } PublicOverheadMessage(MessageType.Emote, 2049, false, "The Battle for Bucaneer's Den has ended."); _mActive = false; var myList = _mPlayerScores.OrderByDescending(x => x.Value).ToList(); foreach ( var pm in NetState.Instances.Where(ns => ns != null && ns.Socket != null && ns.Mobile is PlayerMobile) .Select(ns => (PlayerMobile)ns.Mobile) .Where(p => p.EventMsgFlag || PlayerScores.ContainsKey(p))) { if (PlayerScores.ContainsKey(pm)) { pm.SendMessage(44, "Your score was " + PlayerScores[pm]); pm.SendGump(new ScoreGumpBbd(myList)); } pm.SendMessage(44, "The Battle for Bucaneer's Den has ended. It will be available again in 30 minutes."); pm.CaptureZone = null; } if (_mTimer != null) { _mTimer.Stop(); } _mPlayerScores.Clear(); _mTimer = null; if (_mRestartTimer != null) { _mRestartTimer.Stop(); } _mRestartTimer = null; NextProximityTime = DateTime.UtcNow + TimeSpan.FromMinutes(30); }