Esempio n. 1
0
File: Game.cs Progetto: wgaox/MiNET
        public void AddPlayer(Player player)
        {
            if (Players.Contains(player))
            {
                return;
            }

            Players.Add(player);
            PlayerDeaths.Add(player, 0);
            PlayerKills.Add(player, 0);
            player.HealthManager.PlayerKilled += HealthManagerOnPlayerKilled;
        }
Esempio n. 2
0
File: Game.cs Progetto: wgaox/MiNET
        public void RemovePlayer(Player player)
        {
            if (!Players.Contains(player))
            {
                return;
            }

            Players.Remove(player);
            PlayerDeaths.Remove(player);
            PlayerKills.Remove(player);
            player.HealthManager.PlayerKilled -= HealthManagerOnPlayerKilled;
        }
Esempio n. 3
0
File: Game.cs Progetto: wgaox/MiNET
        private void Tick(object state)
        {
            if (Players.Count < MinPlayers && State == GameState.WaitingToStart)
            {
                Time.Restart();
            }
            else if (Players.Count >= MinPlayers && State == GameState.WaitingToStart && (Players.Count >= MaxPlayers || Time.ElapsedMilliseconds >= 10000))
            {
                Time.Restart();
                State = GameState.Started;

                Level.BroadcastTextMessage(string.Format("Game {0} started.", Name));
            }
            else if (State == GameState.Started && Time.ElapsedMilliseconds >= 30000)
            {
                Time.Restart();
                State = GameState.Finshed;

                Level.BroadcastTextMessage(string.Format("Game {0} finished.", Name));

                if (Players.Count > 0)
                {
                    var winner = PlayerKills.OrderBy(pair => pair.Value).First();

                    Level.BroadcastTextMessage(string.Format("Player {0} won game {2} with {1} kills.", winner.Key.Username, winner.Value, Name));

                    foreach (var player in Players.ToArray())
                    {
                        GameManager.Join(player, "Default");
                    }
                }
            }
            else if (State == GameState.Finshed && Time.ElapsedMilliseconds >= 10000)
            {
                Time.Restart();
                State = GameState.WaitingToStart;

                Level.BroadcastTextMessage(string.Format("New game {0} waiting to start.", Name));
            }
        }