// this auto-sets up a player channel with the specified player and display channel. public static async Task <PlayerConnection> CreateAsync(Player player, DisplayBroadcast channel) { IDMChannel dm = await player.User.GetOrCreateDMChannelAsync(); var result = new PlayerConnection { User = player.User, Frequency = channel.Frequency, InternalChannel = dm, InternalMessage = await dm.SendMessageAsync(channel.ToString()) }; return(result); }
public List <IInput> GetAvailableInputs() { DisplayBroadcast broadcast = State == GameState.Playing ? Server.GetBroadcast(Frequency) : Server.GetBroadcast(State); var inputs = new List <IInput>(Inputs); if (broadcast != null) { inputs.AddRange(broadcast.Inputs); } return(inputs); }
private GameServer(GameManager manager, IUser host, ServerProperties properties = null) { properties ??= ServerProperties.GetDefault(host.Username); _manager = manager; HostId = host.Id; Id = KeyBuilder.Generate(8); Name = properties.Name; GameId = properties.GameId; Privacy = properties.Privacy; Broadcasts = DisplayBroadcast.GetReservedBroadcasts(); Connections = new List <ServerConnection>(); Invites = new List <ServerInvite>(); AllowedActions = properties.AllowedActions; _players = new List <Player> { new Player(this, host) }; Destroyed = false; LastUpdated = DateTime.UtcNow; LoadGameConfig(); }