110 lines
3.5 KiB
C#
110 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Data.Models;
|
|
using SharedLibraryCore.Database.Models;
|
|
|
|
namespace SharedLibraryCore.Interfaces
|
|
{
|
|
public interface IGameServer
|
|
{
|
|
/// <summary>
|
|
/// kicks target on behalf of origin for given reason
|
|
/// </summary>
|
|
/// <param name="reason">reason client is being kicked</param>
|
|
/// <param name="target">client to kick</param>
|
|
/// <param name="origin">source of kick action</param>
|
|
/// <param name="previousPenalty">previous penalty the kick is occuring for (if applicable)</param>
|
|
/// <returns></returns>
|
|
Task Kick(string reason, EFClient target, EFClient origin, EFPenalty previousPenalty = null);
|
|
|
|
/// <summary>
|
|
/// Execute a server command
|
|
/// </summary>
|
|
/// <param name="command">Server command to execute</param>
|
|
/// <param name="token"><see cref="CancellationToken"/></param>
|
|
/// <returns>Collection of console command output lines</returns>
|
|
Task<string[]> ExecuteCommandAsync(string command, CancellationToken token = default);
|
|
|
|
/// <summary>
|
|
/// Set value for server dvar
|
|
/// </summary>
|
|
/// <param name="name">Name of the server value to set</param>
|
|
/// <param name="value">Value of the server value</param>
|
|
/// <param name="token"><see cref="CancellationToken"/></param>
|
|
/// <returns></returns>
|
|
Task SetDvarAsync(string name, object value, CancellationToken token = default);
|
|
|
|
/// <summary>
|
|
/// Time the most recent match ended
|
|
/// </summary>
|
|
DateTime? MatchEndTime { get; }
|
|
|
|
/// <summary>
|
|
/// Time the current match started
|
|
/// </summary>
|
|
DateTime? MatchStartTime { get; }
|
|
|
|
/// <summary>
|
|
/// List of connected clients
|
|
/// </summary>
|
|
IReadOnlyList<EFClient> ConnectedClients { get; }
|
|
|
|
/// <summary>
|
|
/// Game code corresponding to the development studio project
|
|
/// </summary>
|
|
Reference.Game GameCode { get; }
|
|
|
|
/// <summary>
|
|
/// Indicates if the anticheat/custom callbacks/live radar integration is enabled
|
|
/// </summary>
|
|
bool IsLegacyGameIntegrationEnabled { get; }
|
|
|
|
/// <summary>
|
|
/// Unique identifier for the server (typically ip:port)
|
|
/// </summary>
|
|
string Id { get; }
|
|
|
|
/// <summary>
|
|
/// Network address the server is listening on
|
|
/// </summary>
|
|
string ListenAddress { get; }
|
|
|
|
/// <summary>
|
|
/// Network port the server is listening on
|
|
/// </summary>
|
|
int ListenPort { get; }
|
|
|
|
/// <summary>
|
|
/// Name of the server (hostname)
|
|
/// </summary>
|
|
string ServerName { get; }
|
|
|
|
/// <summary>
|
|
/// Current gametype
|
|
/// </summary>
|
|
string Gametype { get; }
|
|
|
|
/// <summary>
|
|
/// Game password (required to join)
|
|
/// </summary>
|
|
string GamePassword { get; }
|
|
|
|
/// <summary>
|
|
/// Number of private client slots
|
|
/// </summary>
|
|
int PrivateClientSlots { get; }
|
|
|
|
/// <summary>
|
|
/// Current map the game server is running
|
|
/// </summary>
|
|
Map Map { get; }
|
|
|
|
/// <summary>
|
|
/// Database id for EFServer table and references
|
|
/// </summary>
|
|
long LegacyDatabaseId { get; }
|
|
}
|
|
}
|