public static GameInfo StartNew(Session gameHost, string gameType) { if (!Regex.IsMatch(gameType, "[a-zA-Z0-9]+")) { throw new Exception("Invalid game name"); } var game = new GameInfo(gameType); game.JoinGame(gameHost); games.Add(game); return game; }
public void JoinGame(Session session) { lock (syncRoot) { if (Started) { throw new GameException("The game has already started."); } players.Add(session); if (players.Count == game.PlayerCount) { // Signal the start of the game foreach (var p in players) { p.SignalGameStart(this); } } } }
/// <summary> /// Creates a new session /// </summary> /// <param name="nick">The nickname of the player</param> /// <param name="session">The session data</param> /// <returns>Everything went OK</returns> public static bool TryAddNew(string nick, out Session session) { session = new Session ( key: Guid.NewGuid().ToString(), nickName: nick ); bool success = Sessions.TryAdd(session.Key, session); if (success) { session.StartListening(); return true; } else { return false; } }
/// <summary> /// Gets the session data specified by the API key /// </summary> /// <param name="key">The API key</param> /// <param name="value">The session value</param> /// <returns>The API key was found</returns> public static bool TryGetByKey(string key, out Session value) { return Sessions.TryGetValue(key, out value); }
public static void JoinSpectator(Session spectator, Guid GameId) { }
public static void Join(Session player, Guid GameId) { }