Class BaseNetworkRoom
This class represents the network room.
Inherited Members
Namespace: Evergine.Networking.Rooms
Assembly: Evergine.Networking.dll
Syntax
public abstract class BaseNetworkRoom : INetworkRoom, IRoomInfo
Constructors
BaseNetworkRoom()
Initializes a new instance of the BaseNetworkRoom class.
Declaration
protected BaseNetworkRoom()
BaseNetworkRoom(RoomOptions)
Initializes a new instance of the BaseNetworkRoom class.
Declaration
protected BaseNetworkRoom(RoomOptions options)
Parameters
Type | Name | Description |
---|---|---|
RoomOptions | options | The room options for the new room. |
Fields
FirstPlayerId
Constant that defines the player id that will be assigned to the first player that enters the room.
Declaration
protected const int FirstPlayerId = 0
Field Value
Type | Description |
---|---|
int |
internalRoomInfo
Internal room info.
Declaration
protected RoomInfo internalRoomInfo
Field Value
Type | Description |
---|---|
RoomInfo |
Properties
AllPlayers
Gets the "list" of all the players who are in that room (including the local player). Only updated while inside a Room.
Declaration
public IEnumerable<INetworkPlayer> AllPlayers { get; }
Property Value
Type | Description |
---|---|
IEnumerable<INetworkPlayer> |
CustomProperties
Gets the custom properties of the room. Those properties are synchronized by the server automatically.
Declaration
public NetworkPropertiesTable CustomProperties { get; }
Property Value
Type | Description |
---|---|
NetworkPropertiesTable |
Remarks
All players inside the room can change these properties. Setting properties in this table updates the server and other players.
Keys in the table are bytes to reduce network traffic. It is recommended to use a custom enumerator for better clarity.
Examples
var matchmakingClient = Evergine.GetService<MatchmakingClientService>();
var roomProperties = matchmakingClient.CurrentRoom.CustomProperties;
roomProperties.Set((byte)CustomEnum.MapLevel, "cs_italy");
var mapLevel = roomProperties.GetString((byte)CustomEnum.MapLevel);
IsFull
Gets a value indicating whether the room is full and therefore, no more players can join it.
Declaration
public bool IsFull { get; }
Property Value
Type | Description |
---|---|
bool |
IsVisible
Gets a value indicating whether the room is listed in its lobby.
Declaration
public virtual bool IsVisible { get; set; }
Property Value
Type | Description |
---|---|
bool |
Remarks
Rooms can be created invisible, or changed to invisible.
MasterClientId
Gets the Id of the player who's the master of this Room. Note: This changes when the current master leaves the room.
Declaration
public int MasterClientId { get; protected set; }
Property Value
Type | Description |
---|---|
int |
MaxPlayers
Gets the limit of players for this room. This property is shown in lobby, too. If the room is full (players count == maxplayers), joining this room will fail.
Declaration
public virtual byte MaxPlayers { get; set; }
Property Value
Type | Description |
---|---|
byte |
Remarks
If the player has joined the room, the setter will update the server and all clients.
Name
Gets the name of a room. Unique identifier for a room/match (per AppId + game-Version).
Declaration
public string Name { get; }
Property Value
Type | Description |
---|---|
string |
Remarks
The name can't be changed once it's set by the matchmaking server.
PlayerCount
Gets the count of players currently in room.
Declaration
public byte PlayerCount { get; }
Property Value
Type | Description |
---|---|
byte |
PropertiesListedInLobby
Gets a set of string properties that are in the RoomInfo of the Lobby. This list is defined when creating the room and can't be changed afterwards.
Declaration
public HashSet<string> PropertiesListedInLobby { get; }
Property Value
Type | Description |
---|---|
HashSet<string> |
Remarks
You could name properties that are not set from the beginning. Those will be synchronized with the lobby when added later on.
Methods
GetPlayer(int)
Tries to find the player with given player id. Only useful when in a Room, as Ids are only valid per Room.
Declaration
public INetworkPlayer GetPlayer(int playerId)
Parameters
Type | Name | Description |
---|---|---|
int | playerId | Player id of a player in this room. |
Returns
Type | Description |
---|---|
INetworkPlayer | Player or null. |
InternalAddPlayer(BaseNetworkPlayer)
Internal method to add a player in the players list.
Declaration
protected void InternalAddPlayer(BaseNetworkPlayer player)
Parameters
Type | Name | Description |
---|---|---|
BaseNetworkPlayer | player | The player to add. |
InternalAddPlayer(BaseNetworkPlayer, int)
Internal method to add a player in the players list.
Declaration
protected void InternalAddPlayer(BaseNetworkPlayer player, int playerId)
Parameters
Type | Name | Description |
---|---|---|
BaseNetworkPlayer | player | The player to add. |
int | playerId | The assigned player id. |
InternalRemovePlayer(int)
Internal method to remove a player from the players list.
Declaration
protected void InternalRemovePlayer(int playerId)
Parameters
Type | Name | Description |
---|---|---|
int | playerId | The player id of the player to remove. |
OnChange(RoomFieldsFlags)
Called when one or more properties are refreshed.
Declaration
protected virtual void OnChange(BaseNetworkRoom.RoomFieldsFlags changedFields)
Parameters
Type | Name | Description |
---|---|---|
BaseNetworkRoom.RoomFieldsFlags | changedFields | Flag indicating what fields have been changed. |
WriteToMessage(OutgoingMessage, RoomFieldsFlags)
Writes the specified fields to an outgoing message.
Declaration
protected void WriteToMessage(OutgoingMessage message, BaseNetworkRoom.RoomFieldsFlags includedFields)
Parameters
Type | Name | Description |
---|---|---|
OutgoingMessage | message | The outgoing message. |
BaseNetworkRoom.RoomFieldsFlags | includedFields | Indicates the fields that must synchronized. |
Events
MasterClientIdChanged
Occurs when the master client id changes
Declaration
public event EventHandler MasterClientIdChanged
Event Type
Type | Description |
---|---|
EventHandler |