public void OnServerGameCreated(GameData game) { throw new NotImplementedException(); }
public bool Join(IClient client, bool asSpectator) { if (client == null) throw new ArgumentNullException("client"); if (State == GameStates.Created || State == GameStates.Stopping) { Log.Default.WriteLine(LogLevels.Warning, "Cannot join, game {0} is not started(or stopping)", Name); return false; } if (!asSpectator && PlayerCount >= MaxPlayers) { Log.Default.WriteLine(LogLevels.Warning, "Too many players in game {0}", Name); return false; } if (asSpectator && SpectatorCount >= MaxSpectators) { Log.Default.WriteLine(LogLevels.Warning, "Too many spectators in game {0}", Name); return false; } if (Clients.Any(x => x == client)) { Log.Default.WriteLine(LogLevels.Warning, "Client already in game {0}", Name); return false; } IClient previousMaster = Players.FirstOrDefault(); // _clients.Add(client); // Change role, state and game client.Roles &= ~(ClientRoles.Player | ClientRoles.Spectator); // remove player+spectator if (asSpectator) client.Roles |= ClientRoles.Spectator; else client.Roles |= ClientRoles.Player; client.State = ClientStates.WaitInGame; client.Game = this; client.LastVoteKickAnswer = null; IClient newMaster = Players.FirstOrDefault(); if (client.IsPlayer && client == newMaster) // set game master { // Clear previous game master if (previousMaster != null) previousMaster.Roles &= ~ClientRoles.GameMaster; // Set game master client.Roles |= ClientRoles.GameMaster; } // Inform client GameData gameData = new GameData { Id = Id, Name = Name, Rule = Rule, Options = Options, Clients = Clients.Select(x => new ClientData { Id = x.Id, Name = x.Name, GameId = Id, Team = x.Team, IsGameMaster = x.IsGameMaster, IsPlayer = x.IsPlayer, IsSpectator = x.IsSpectator }).ToList() }; client.OnGameJoined(GameJoinResults.Successfull, gameData, client.IsGameMaster); // Inform other clients in game foreach (IClient target in Clients.Where(c => c != client)) target.OnClientGameJoined(client.Id, asSpectator); // Inform other clients about game master modification if (client.IsGameMaster) { foreach (IClient target in Clients.Where(c => c != client)) target.OnGameMasterModified(client.Id); Log.Default.WriteLine(LogLevels.Info, "Game {0}: Game master modified: {1}", Name, client.Id); } Log.Default.WriteLine(LogLevels.Info, "Game {0}: client {1} joined", Name, client.Name); return true; }
public void OnClientGameCreated(Guid clientId, GameData game) { throw new NotImplementedException(); }
public void OnServerGameCreated(GameData game) { Log.Default.WriteLine(LogLevels.Info, "Server creates game {0}", game == null ? Guid.Empty : game.Id); ResetTimeout(); _games.Add(game); ServerGameCreated.Do(x => x(game)); }
private void OnClientGameCreated(ClientData client, GameData game) { Console.WriteLine("OnClientGameCreated: {0} {1} {2} {3}", client == null ? Guid.Empty : client.Id, game.Id, game.Name, game.Rule); if (game.Clients != null) { Console.WriteLine("\tClients: {0}", game.Clients.Count); foreach (ClientData gameClient in game.Clients) Console.WriteLine("\tClient: {0} {1} {2} {3} {4} {5}", gameClient.Id, gameClient.Name, gameClient.GameId, gameClient.IsGameMaster, gameClient.IsPlayer, gameClient.IsSpectator); } DisplayGameList(); }
public void OnClientGameCreated(Guid clientId, GameData game) { UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, clientId, game); }
public void OnGameCreated(GameCreateResults result, GameData game) { UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, result, game); }
public void OnGameCreated(GameCreateResults result, GameData game) { ExceptionFreeAction(() => Callback.OnGameCreated(result, game)); }
public void OnGameJoined(GameJoinResults result, GameData game, bool isGameMaster) { ExceptionFreeAction(() => Callback.OnGameJoined(result, game, isGameMaster)); }
public void OnClientGameCreated(Guid clientId, GameData game) { ExceptionFreeAction(() => Callback.OnClientGameCreated(clientId, game)); }
public void OnServerGameCreated(GameData game) { ExceptionFreeAction(() => Callback.OnServerGameCreated(game)); }
public bool JoinGame(GameData game, string password, bool asSpectator) { if (game == null || _games.All(x => x != game)) return false; _proxy.Do(x => x.ClientJoinGame(game.Id, password, asSpectator)); return true; }
public void OnGameJoined(GameJoinResults result, GameData game, bool isGameMaster) { Log.Default.WriteLine(LogLevels.Info, "Game jointed {0} {1} {2}", result, game == null ? Guid.Empty : game.Id, isGameMaster); ResetTimeout(); GameData innerGame = game == null ? null : _games.FirstOrDefault(x => x.Id == game.Id); if (result == GameJoinResults.Successfull && game != null) { Log.Default.WriteLine(LogLevels.Info, "Game {0} joined successfully. Master {1}", game.Id, isGameMaster); _state = States.WaitInGame; _isGameMaster = isGameMaster; _gameClients.Clear(); foreach(ClientData client in game.Clients) { ClientData innerClient = _clients.FirstOrDefault(x => x.Id == client.Id); if (innerClient != null) _gameClients.Add(innerClient); } if (innerGame != null) { innerGame.Name = game.Name; innerGame.Options = game.Options; innerGame.Rule = game.Rule; } } else { Log.Default.WriteLine(LogLevels.Warning, "Failed to join game {0} {1}", game == null ? Guid.Empty : game.Id, result); } GameJoined.Do(x => x(result, innerGame, isGameMaster)); }
public void OnGameCreated(GameCreateResults result, GameData game) { Log.Default.WriteLine(LogLevels.Info, "Game created {0} {1}", result, game == null ? Guid.Empty : game.Id); ResetTimeout(); if (result == GameCreateResults.Successfull) { Log.Default.WriteLine(LogLevels.Info, "Game {0} created successfully", game == null ? Guid.Empty : game.Id); _games.Add(game); } else { Log.Default.WriteLine(LogLevels.Warning, "Failed to create game {0}", result); } GameCreated.Do(x => x(result, game)); }
public void OnGameCreated(GameCreateResults result, GameData game) { throw new NotImplementedException(); }
private void OnGameJoined(GameJoinResults result, GameData game, bool isGameMaster) { Console.WriteLine("OnGameJoined: {0} {1} {2}", result, game == null ? Guid.Empty : game.Id, isGameMaster); }
public void OnGameJoined(GameJoinResults result, GameData game, bool isGameMaster) { throw new NotImplementedException(); }
private void OnGameCreated(GameCreateResults result, GameData game) { Console.WriteLine("OnGameCreated: {0} {1} {2} {3}", result, game.Id, game.Name, game.Rule); }
public void OnServerGameCreated(GameData game) { UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, game); }
private void OnServerGameDeleted(GameData game) { Console.WriteLine("OnGameDeleted: {0}", game == null ? Guid.Empty : game.Id); DisplayGameList(); }
public void OnGameJoined(GameJoinResults result, GameData game, bool isGameMaster) { UpdateCallInfo(System.Reflection.MethodBase.GetCurrentMethod().Name, result, game, isGameMaster); }
public void OnClientGameCreated(Guid clientId, GameData game) { Log.Default.WriteLine(LogLevels.Info, "Client {0} creates game {1}", clientId, game == null ? Guid.Empty : game.Id); ResetTimeout(); _games.Add(game); ClientData client = _clients.FirstOrDefault(x => x.Id == clientId); ClientGameCreated.Do(x => x(client, game)); }