public void RemovePlayerFromGame(int Index)
 {
     if (PlayersInGame.Count >= Index + 1)
     {
         PlayersInGame.RemoveAt(Index);
     }
 }
 public void AddPlayerToGame(int PlayerID)
 {
     if (Players.ContainsKey(PlayerID))
     {
         PlayersInGame.Add(PlayerID);
     }
 }
Exemple #3
0
 //Create players other than Dealer
 public void CreatePlayers()
 {
     for (int counter = NumberOfPlayers; counter > 0; counter = counter - 1)
     {
         IPlayer _player = new Player();
         _player.PlayerName = "Player " + counter;
         PlayersInGame.Add(_player);
     }
 }
Exemple #4
0
        /// <summary>
        /// Occurs when a player wins the game.
        /// </summary>
        public static async Task PlayerWon(Player player)
        {
            TimeSpan ts = DateTime.Now - startTime;

            if (PlayersInGame.FirstOrDefault(p => p.Id == player.Id) != null && !isBuilding)
            {
                if (PlayersSafe.Count == 0) // First
                {
                    firstPerson = DateTime.Now;

                    int    k = Math.Max(35 - round * 5, 10);
                    string s = $"{k} seconds left!";
                    await Say($"{player.Name.ToUpper()} {(PlayersInGame.Count > 2 ? "finished! " + s : "won!")}");

                    if (!isTrainMode && PlayersInGame.Count == 2)
                    {
                        Profiles[player.Name].Wins++;
                    }

                    Eliminator.Start();
                }

                string elapsedTime = TimeToString(ts);
                PlayersSafe.Add(player, ts);

                //await SayCommand($"reset {player.Name}");
                await SayCommand($"effect {player.Name} clear");

                //await SayCommand($"tp {player.Name} {TopLeftShiftCoord.X + 16} {TopLeftShiftCoord.Y + 22}");

                await SayPrivate(player, $"Your Time: {elapsedTime}s");
                await UpdateSign();

                Formatter[] format =
                {
                    new Formatter(PlayersSafe.Count, Color.Gold),
                    new Formatter(player.Name,       Color.Green),
                    new Formatter(elapsedTime,       Color.Green),
                };
                Console.WriteLineFormatted("    {0}. {1} in {2}", Color.Silver, format);

                if (!isTrainMode)
                {
                    Profiles[player.Name].Rounds++;
                    saveProfiles();
                }

                if (2 * PlayersSafe.Count >= PlayersInGame.Count) // 50 % completed - eliminate (For 5 players: 3, For 16 players: 8; Minimum: 3 Players, wait for 2)
                {
                    if (PlayersSafe.Count > 1)
                    {
                        await Say($"Round over! Players not finished are eliminated!");
                    }
                    await ContinueGame();
                }
            }
        }
 public void SetCurrentPlayer(int newPlayer)
 {
     if (PlayersInGame.Contains(newPlayer) && CurrentPlayer != newPlayer)
     {
         CurrentPlayer = newPlayer;
     }
     else
     {
         throw new ArgumentException("Wrong player id given", "newPlayer");
     }
 }
Exemple #6
0
 public bool AddPlayer(Player player)
 {
     if (GameMode == GameMode.GUIDED)
     {
         if (GameState == GameState.COUNTDOWN)
         {
             if (PlayersInGame.Count < PlayersLimit)   // pripoji hrača do bežiacej hry
             {
                 PlayersInGame.Add(player);
                 PlayersInLobby.Add(player);
                 player.InGame = true;
                 Map.SpawnPlayer(player);
                 ++PlayersAllive;
                 return(true);
             }
             return(false);
         }
         else     // Lobby
         {
             if (PlayersInLobby.Count < PlayersLimit)
             {
                 PlayersInLobby.Add(player);
                 return(true);
             }
             return(false);
         }
     }
     else     // Player Mode - hraju iba hrači ktory boli pri štarte, ostatny čakaju na skončenie hry
     {
         if (PlayersInLobby.Count < PlayersLimit)
         {
             PlayersInLobby.Add(player);
             if (PlayersInLobby.Count == 1)
             {
                 Creator = player;
             }
             else if (GameState == GameState.LOBBY)
             {
                 FramesToStart /= 2;
             }
             return(true);
         }
         return(false);
     }
 }
Exemple #7
0
 public void RemovePlayer(Player player)
 {
     if (player.Spectator)
     {
         return;
     }
     if (GameState != GameState.LOBBY)
     {
         lock (PlayersInGame) PlayersInGame.Remove(player);
         --PlayersAllive;
     }
     PlayersInLobby.Remove(player);
     if (PlayersInLobby.Count >= 1)
     {
         Creator = PlayersInLobby[rnd.Next(0, PlayersInLobby.Count - 1)];
         if (StartTimerRunning)
         {
             FramesToStart *= 2;
         }
     }
     player.InGame = false;
 }
Exemple #8
0
        public ViewModel(IGameService gameService)
        {
            _gameService = gameService;

            // Add players to the ObservableCollection
            PlayersInGame.Add(Nate);
            PlayersInGame.Add(Jake);
            PlayersInGame.Add(Evan);
            PlayersInGame.Add(Chad);

            PopulateDisplayCards();
            foreach (var player in PlayersInGame)
            {
                dealer.DealPlayerCards(player);
            }

            CallCommand  = new SyncCommand <HumanPlayer>(Call);
            RaiseCommand = new SyncCommand <HumanPlayer>(Raise);
            FoldCommand  = new SyncCommand <HumanPlayer>(Fold);

            //DrawCommunityCards(5);
        }
        void HandleStateChange(GameState gs)
        {
            //Debug.Log("GAME STATE CHANGED: " + gs.ToString());
            switch (gs)
            {
                #region GAMESTATE INIT
            case GameState.INIT:
                LoadKeyCardFromDB();
                LoadDeckFromDB();
                InitializeScore();
                EventManager.onGameStateApiDone.Invoke(GameState.INIT_DONE);
                break;
                #endregion

                #region GAMESTATE PICK TEAMS
            case GameState.PICK_TEAMS:
                PlayersInGame players = GetComponent <PlayersInGame>();
                Debug.Log("Players Online: " + players.Online.Count.ToString());
                redTeam.Clear();
                blueTeam.Clear();
                if (players.Online.Count < minPlayersRequired)
                {
                    throw new Exception("ERROR: CodeNames needs at least " + minPlayersRequired.ToString() + " people to play");
                }

                players.ShufflePlayers();
                for (int i = 0; i < players.Online.Count; i++)
                {
                    if (i % 2 == 0)
                    {
                        redTeam.AddPlayer(players.Online[i]);
                    }
                    else
                    {
                        blueTeam.AddPlayer(players.Online[i]);
                    }
                }

                redTeam.PickCodeMaster();
                blueTeam.PickCodeMaster();

                Debug.Log("Red Team: " + redTeam.ToString());
                Debug.Log("Red CodeMaster: " + redTeam.CodeMaster.PlayerName);
                Debug.Log("Blue Team: " + blueTeam.ToString());
                Debug.Log("Blue CodeMaster: " + blueTeam.CodeMaster.PlayerName);
                if (teamWithFirstTurn == CardColor.Blue)
                {
                    EventManager.onGameStateApiDone.Invoke(GameState.PICK_TEAMS_DONE_BLUE_TO_START);
                }
                else if (teamWithFirstTurn == CardColor.Red)
                {
                    EventManager.onGameStateApiDone.Invoke(GameState.PICK_TEAMS_DONE_RED_TO_START);
                }
                else
                {
                    throw new System.NotSupportedException("A red or blue team must go first");
                }
                break;
                #endregion

            default:
                throw new System.NotImplementedException("GameState Not Implemented: " + gs.ToString());
            }
        }
Exemple #10
0
        /**
         * Metóda, ktorú volá "timer" každých (_MillisecondInSecond / _FPS) milisekund.
         * Zabezpečuje aktualizaciu hernej logiky.
         */
        private async Task TickAsync(Object source, ElapsedEventArgs e)
        {
            OnTick(new GameTickEventArgs {
                FpsTickNum = currentFPS
            });
            if (GameState == GameState.COUNTDOWN)
            {
                await Map.Update(currentFPS);

                if (PlayersAllive <= 1)
                {
                    GameState = GameState.GAMEOVER;
                    return;
                }
                if (FramesToShrink <= 0)
                {
                    GameState = GameState.SHRINKING;
                }
                else
                {
                    if (CountdownTimerRunning)
                    {
                        --FramesToShrink;
                    }
                }
            }
            else if (GameState == GameState.SHRINKING)
            {
                await Map.Update(currentFPS);

                if (PlayersAllive == 1)
                {
                    GameState = GameState.GAMEOVER;
                    return;
                }
                if (Map.X > 0)
                {
                    if (ShrinkingAllowed)
                    {
                        Map.Shrink();
                    }
                }
                else
                {
                    GameState = GameState.GAMEOVER;
                }
            }
            else if (GameState == GameState.LOBBY)
            {
                if (GameMode == GameMode.GUIDED)
                {
                    // samospustenie
                    if (StartTimerRunning)
                    {
                        --FramesToStart;
                        if (FramesToStart <= 0)
                        {
                            StartTimerRunning = false;
                            Start();
                        }
                    }
                }
                else
                {
                    if (PlayersInLobby.Count > 1)
                    {
                        if (!StartTimerRunning && !StoppedStartTimer)
                        {
                            StartTimerRunning = true;
                            if (PlayersInLobby.Count > 2)
                            {
                                for (int i = 0; i < PlayersInLobby.Count - 2; i++)
                                {
                                    FramesToStart /= 2;
                                }
                            }
                        }
                        else
                        {
                            // samospustenie
                            if (!StoppedStartTimer)
                            {
                                --FramesToStart;
                            }
                            if (FramesToStart <= 0)
                            {
                                StartTimerRunning = false;
                                Start();
                            }
                        }
                    }
                    else if (PlayersInLobby.Count == 1)
                    {
                        if (StartTimerRunning)
                        {
                            StartTimerRunning = false;
                        }
                        if (DeleteTimerRunning)
                        {
                            DeleteTimerRunning = false;
                        }
                    }
                    else
                    {
                        if (!DeleteTimerRunning)
                        {
                            DeleteTimerRunning = true;
                            deleteFrames       = 10 * _FPS;
                        }
                        else
                        {
                            --deleteFrames;
                            if (deleteFrames <= 0)
                            {
                                Map = null;
                                Dispose();
                            }
                        }
                    }
                }
            }
            else if (GameState == GameState.GAMEOVER)
            {
                await Map.Update(currentFPS);

                if (GameoverTimerRunning)
                {
                    --FramesToScoreboard;
                }
                if (FramesToScoreboard <= 0)
                {
                    foreach (var player in PlayersInGame)
                    {
                        if (player.Alive)
                        {
                            Winner = player;
                            break;
                        }
                    }
                    GameState = GameState.SCOREBOARD;
                }
            }
            else if (GameState == GameState.SCOREBOARD)
            {
                if (ScoreboardTimerRunning)
                {
                    --FramesToLobby;
                }
                if (FramesToLobby <= 0)
                {
                    foreach (var pl in PlayersInGame)
                    {
                        pl.InGame = false;
                        pl.Freeze();
                    }
                    Creator.InGame = false;
                    PlayersInGame.Clear();
                    RestartTimers();
                    GameState = GameState.LOBBY;
                }
            }
            currentFPS = (currentFPS % 60) + 1;
            ++FPSElapsed;
        }
 public void ClearPlayersInGame()
 {
     PlayersInGame.Clear();
 }