Код:
using System;
using System.Data;
namespace INTERFACE
{
/// <summary>
/// Делегат для обработки события получения строки из консоли сервера.
/// </summary>
/// <param name="Cstring">Строка из консоли</param>
public delegate void ConsoleStringDelegate(string Cstring);
/// <summary>
/// Делегат для обработки события записи в лог-файл сервера
/// </summary>
/// <param name="LogString">Строка лога</param>
public delegate void LogStringDelegate(string LogString);
/// <summary>
/// Делегат для событий, передающих строку пилота из таблицы статистики
/// </summary>
/// <param name="Pilot">Копия строки из таблицы статистики</param>
public delegate void UserRowDelegate(DataRow Pilot);
/// <summary>
/// Делегат для событий сервера, передающих таблицу статистики всех пилотов на сервере
/// </summary>
/// <param name="Pilots">Таблица статистики</param>
public delegate void PilotTableDelegate(DataTable Pilots);
/// <summary>
/// Перечисление, задающее список столбцов в таблице статистики пилотов
/// </summary>
public enum pilotsColumn
{
/// <summary>
/// Номер на сервере
/// </summary>
N,
/// <summary>
/// Ник
/// </summary>
Nick,
/// <summary>
/// Сторона
/// </summary>
Army,
/// <summary>
/// Марка самолёта
/// </summary>
PlaneName,
/// <summary>
/// Место в самолёте
/// </summary>
Place,
/// <summary>
/// Вооружение
/// </summary>
Weapon,
/// <summary>
/// Загрузка топливом
/// </summary>
Fuel,
/// <summary>
/// Номер самолёта
/// </summary>
Plane,
/// <summary>
/// История состояний самолёта и пилота
/// </summary>
PilotState,
/// <summary>
/// Счёт по правилам сервера
/// </summary>
Score,
/// <summary>
/// Номер канала на сервере
/// </summary>
Channel,
/// <summary>
/// IP-адрес игрока
/// </summary>
IP,
/// <summary>
/// Пинг
/// </summary>
Ping,
/// <summary>
/// Скорость подключения
/// </summary>
Speed,
/// <summary>
/// Количество сбитых самолётов противника
/// </summary>
EAir,
/// <summary>
/// Количество уничтоженных статических самолётов противника
/// </summary>
ESAir,
/// <summary>
/// Уничтожено танков противника
/// </summary>
ETank,
/// <summary>
/// Уничтожено автомобилей противника
/// </summary>
ECar,
/// <summary>
/// Уничтожено орудий противника
/// </summary>
EArt,
/// <summary>
/// Уничтожено зениток противника
/// </summary>
EAAA,
/// <summary>
/// Уничтожено вагонов противника
/// </summary>
EWag,
/// <summary>
/// Уничтожено кораблей противника
/// </summary>
EShip,
/// <summary>
/// Уничтожено дружественных самолётов
/// </summary>
FAir,
/// <summary>
/// Уничтожено дружественных статических самолётов
/// </summary>
FSAir,
/// <summary>
/// Уничтожено дружественных танков
/// </summary>
FTank,
/// <summary>
/// Уничтожено дружественных автомобилей
/// </summary>
FCar,
/// <summary>
/// Уничтожено дружественных орудий
/// </summary>
FArt,
/// <summary>
/// Уничтожено дружественных зениток
/// </summary>
FAAA,
/// <summary>
/// Уничтожено дружественных вагонов
/// </summary>
FWag,
/// <summary>
/// Уничтожено дружественных кораблей
/// </summary>
FShip,
/// <summary>
/// Выстреленно снарядов
/// </summary>
FireBull,
/// <summary>
/// Всего попаданий
/// </summary>
HitBull,
/// <summary>
/// Попаданий в воздушные цели
/// </summary>
HitAirBull,
/// <summary>
/// Выстреленно ракет
/// </summary>
FireRock,
/// <summary>
/// Попаданий ракетами
/// </summary>
HitRock,
/// <summary>
/// Сброшено бомб
/// </summary>
FireBombs,
/// <summary>
/// Попаданий бомбами
/// </summary>
HitBombs,
/// <summary>
/// Координаты начала вылета
/// </summary>
StartCoord,
/// <summary>
/// Координаты конца вылета
/// </summary>
EndCoord
}
/// <summary>
/// Перечисление, задающее список событий с пилотом(игроком), записываемых в виде символа в строку "PilotState"
/// </summary>
public enum PilotEvent
{
/// <summary>
/// Подключился
/// </summary>
Connected='N',
/// <summary>
/// В брифинге
/// </summary>
InMenu='M',
/// <summary>
/// Ранен
/// </summary>
Wounded = 'W',
/// <summary>
/// Тяжело ранен
/// </summary>
Hwouded = 'H',
/// <summary>
/// Убит
/// </summary>
Killed = 'K',
/// <summary>
/// Выпрыгнул с парашютом
/// </summary>
Bailedout = 'B',
/// <summary>
/// Захвачен в плен
/// </summary>
Captured = 'C',
/// <summary>
/// Приземлился (на самолёте)
/// </summary>
Landed='L',
/// <summary>
/// Удачно приземлился (на парашюте)
/// </summary>
SuccessfullyBailed='S',
/// <summary>
/// Парашют сбит
/// </summary>
HasChuteDestroyed='D'
}
/// <summary>
/// Перечисление, задающее список событий с самолётом, записываемых в виде символа в строку "PilotState"
/// </summary>
public enum PlaneEvent
{
/// <summary>
/// Занят игроком
/// </summary>
Occupied='o',
/// <summary>
/// Взлетел
/// </summary>
TakeOff = 'f',
/// <summary>
/// Приземлился
/// </summary>
Landed = 'l',
/// <summary>
/// Разбит
/// </summary>
Crashed = 'c',
/// <summary>
/// Повреждён
/// </summary>
Damaged = 'd',
/// <summary>
/// Повреждён на земле
/// </summary>
DamagedOnGround = 'g',
/// <summary>
/// Сбит
/// </summary>
ShotDown='s'
}
/// <summary>
/// Интерфейс, реализуемый объектом "IL2SERVER.Server"
/// </summary>
public interface Imain
{
/// <summary>
/// Событие получения новой строки консоли
/// </summary>
event ConsoleStringDelegate ConsoleString;
/// <summary>
/// Событие записи новой строки в файл лога сервера
/// </summary>
event LogStringDelegate LogString;
/// <summary>
/// Событие остановки сервера
/// </summary>
event EventHandler ServerDown;
/// <summary>
/// Событие, вызываемое при удачном подключении к серверу нового пользователя
/// </summary>
event UserRowDelegate UserConnected;
/// <summary>
/// Событие, вызываемое при дисконнекте пользователя
/// </summary>
event UserRowDelegate UserDisconnected;
/// <summary>
/// Событие выхода пользователя в бриффинг
/// </summary>
event UserRowDelegate UserExitInMenu;
/// <summary>
/// Событие, вызываемое при окончании миссии.
/// </summary>
event PilotTableDelegate MissionEnd;
/// <summary>
/// Таблица статистики игроков на сервере
/// </summary>
DataTable pilots { get; }
/// <summary>
/// Путь к исполняемому файлу сервера
/// </summary>
string ServerPath { get; }
/// <summary>
/// Собирать ли автоматически статистику всех пилотов на сервере (команды user и user STAT)
/// </summary>
bool UserStatEnabled { get; set; }
/// <summary>
/// Собирать ли автоматически статистику всех активных каналов (команда channel)
/// </summary>
bool ChannelStatEnabled { get; set; }
/// <summary>
/// Файл текущей миссии (как указывается в команде mission)
/// </summary>
string CurrentMission { get; set; }
/// <summary>
/// Метод отправки консольной команды серверу
/// </summary>
/// <param name="Command">Команда</param>
void send(string Command);
}
/// <summary>
/// Интерфейс, который обязан реализовать плагин для подключения
/// </summary>
public interface ISCPlugin
{
/// <summary>
/// Свойство "Имя плагина" может быть любым, не совпадающим с именами остальных плагинов
/// </summary>
string Name { get; }
/// <summary>
/// Метод, вызываемый сразу после подключения плагина
/// Необходимо использовать для инициализации всех переменных плагина,
/// зависимых от ссылки на объект Server
/// </summary>
/// <param name="server">Объект IL2SERVER.Server, используемый для получения
/// событий и отправки команд серверу</param>
void LOAD(Imain server);
}
}