Пример #1
0
        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);
            }
        }
Пример #2
0
    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);
    }
Пример #3
0
    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++;
    }
Пример #4
0
        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);
        }