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); } }
//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); } }
/// <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"); } }
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); } }
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; }
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()); } }
/** * 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(); }