BusEngine.dll

BusEngine.Browser (Class)

Класс отвечающий за работу с Web файлами (htm, html, css, js, xml и т.д.). Это Web браузер движка.
В основе BusEngine.Browser лежит библиотека CefSharp и Chromium. Найден один минус - не работает видео с кодеком mp4/h.264 т.к. этот кодек защищён патентом и бесплатно нельзя его использовать, в итоге бесплатный браузер Сhromium не поддерживает этот кодек. Решение есть - нужно собрать сборку Chromium с поддержкой этого формата. Но я это изучать и делать не планирую, так как есть альтернатива в виде формата webm. Чтобы получить качественное видео в формате webm рекомендую конвертёр Format Factory.

Также в Chromium доступны не все API (требуют регистрации и получения бесплатных и(или) платных ключей здесь).

API требующие ключи (список со временем увеличится):
Web Speech API (бесплатное для разработчика и личного использования, и платное);

Методы

var _browser = (BusEngine.Browser)new BusEngine.Browser(null|string, null|string)

Метод конструктор (нестатический) уровня класса принимает первым параметром string строку веб адреса или полного пути файла, или относительного пути файла от "BusEngine.Engine.DataDirectory" до HTML страницы для запуска браузера и загрузки указанной страницы после вызова "_browser.Load()". Второй параметр string строка корневого пути каталога расположения index.html относительного пути от "BusEngine.Engine.DataDirectory" до index.html или полный путь каталога.

(BusEngine.Browser)_browser.Load(null|string, null|string)

Метод (нестатический) уровня класса принимает первым параметром string строку веб адреса или полного пути файла, или относительного пути файла от "BusEngine.Engine.DataDirectory" до HTML страницы для запуска браузера и загрузки указанной страницы. Второй параметр string строка корневого пути каталога расположения index.html относительного пути от "BusEngine.Engine.DataDirectory" до index.html или полный путь каталога.

(void)_browser.ExecuteJS(string)

Метод (нестатический) уровня класса принимает string строку JavaScript кода для его выполнения в текущей вкладки браузера. Это полезно для передачи данных из СSharp кода.

(void)_browser.Download(string)

Метод (нестатический) уровня класса принимает string строку ссылка на скачивание файла. При сохранении файла будет предложено пользователю выбрать куда сохранить файл.

(void)_browser.Download(string, string)

Метод (нестатический) уровня класса принимает первым параметром string строку ссылка на скачивание файла. Второй параметр string строка указание пути куда сохранить файл (по умолчанию "BusEngine.Engine.LogDirectory + 'Browser/download/'"). При сохранении файла не будет предложено пользователю выбрать куда сохранить файл.

(void)_browser.Shutdown()

Метод (нестатический) уровня класса для закрытия "BusEngine.Browser".

(void)_browser.Dispose()

Метод (нестатический) уровня класса для закрытия "BusEngine.Browser" и уничтожения объекта Браузера для освобождения оперативной памяти. Вызывать необязательно так как память освобождается автоматический при событии закрытия Браузера "_browser.Shutdown()".

Наверх

Подклассы

(_browser.OnDownloadArgs) _onDownloadArgs = _browser.OnDownloadArgs()

Подкласс (struct) уровня класса выводит object массив содержащий пути файла, количество и скорость скачивания файла.

(string)_onDownloadArgs.ContentDisposition; // Возвращает расположение содержимого.
(long)_onDownloadArgs.CurrentSpeed; // Возвращает простую оценку скорости в байтах/с.
(System.Nullable<System.DateTime>)_onDownloadArgs.EndTime; // Возвращает время окончания загрузки.
(string)_onDownloadArgs.FullPath; // Возвращает полный путь к загружаемому или загружаемому файлу.
(int)_onDownloadArgs.Id; // Возвращает уникальный идентификатор для этой загрузки.
(bool)_onDownloadArgs.IsCancelled; // Возвращает true, если загрузка была отменена или прервана.
(bool)_onDownloadArgs.IsComplete; // Возвращает true, если загрузка завершена.
(bool)_onDownloadArgs.IsInProgress; // Возвращает true, если идет загрузка.
(bool)_onDownloadArgs.IsValid; // Возвращает true, если этот объект действителен. Не вызывайте никаких других методов, если эта функция возвращает false.
(string)_onDownloadArgs.MimeType; // Возвращает MIME-тип.
(string)_onDownloadArgs.OriginalUrl; // Возвращает URL-адрес, каким он был до любых перенаправлений.
(int)_onDownloadArgs.PercentComplete; // Возвращает приблизительный процент завершения или -1, если общий размер полученного файла неизвестен.
(long)_onDownloadArgs.ReceivedBytes; // Возвращает количество полученных байтов.
(System.Nullable<System.DateTime>)_onDownloadArgs.StartTime; // Возвращает время начала загрузки.
(string)_onDownloadArgs.SuggestedFileName; // Возвращает предложенное имя файла.
(long)_onDownloadArgs.TotalBytes; // Возвращает общее количество байтов.
(string)_onDownloadArgs.Url; // Возвращает URL.

Константы

Констант нет

Поля

Полей нет

Свойства

(string)_browser.DownloadPath

Свойство (нестатический) уровня класса принимает или возвращает string строку полного пути до папки скачивания файлов. Если указать пустое значение, тогда при скачивании файлов будет открываться окно предлагающее указать путь для сохранения (по умолчанию "BusEngine.Engine.LogDirectory + 'Browser/download/'").

События

(void)_browser.OnDownload

Событие (нестатический) уровня класса принимает метод с одним параметром (_browser.OnDownloadArgs). Событие "BusEngine.Browser.OnDownload" будет вызывать ваш метод, когда будет загружаться любой файл и передавать в первый параметр подкласс "_browser.OnDownloadArgs()". Событие срабатывает несколько раз по мере скачивания файла.

(void)_browser.OnLoad

Событие (нестатический) уровня класса принимает метод без параметров. Событие "_browser.OnLoad" будет вызывать ваш метод, когда страница будет загружена в "_browser.Load()".

(void)_browser.OnPostMessage

Событие (нестатический) уровня класса принимает метод с двумя параметрами (object, string). Событие "_browser.OnPostMessage" будет вызывать ваш метод, когда вы вызываете в JavaScript коде функцию "BusEngine.postMessage(string)" при старте своего плагина с названием "MyPlugin" и передавать строку во второй параметр вашего метода, а в первый параметр будет приходить объект "BusEngine.Browser()".

Наверх

Пример файла Program.cs

В коде отражён запуск браузера и страницы расположенной относительно папки игровых файлов "BusEngine.Engine.DataDirectory" при старте своего плагина с названием "MyPlugin".

  1. /** API BusEngine.Game - пользовательский код */
  2. namespace BusEngine.Game {
  3.     /** API BusEngine.Plugin */
  4.     public class MyPlugin : BusEngine.Plugin {
  5.         // при запуске BusEngine после создания формы Canvas
  6.         public override void InitializeСanvas() {
  7.             BusEngine.Browser.Initialize("index.html");
  8.             BusEngine.Browser.OnPostMessage += (string message) => {
  9.                 if (message == "Exit") {
  10.                     BusEngine.Engine.Shutdown();
  11.                 } else if (message == "Debug") {
  12.                     BusEngine.Log.Info("JavaScript: Привет CSharp!");
  13.                     BusEngine.Log.Info("На команду: " + message);
  14.                     BusEngine.Browser.ExecuteJS("document.dispatchEvent(new CustomEvent('BusEngineMessage', {bubbles: true, detail: {hi: 'CSharp: Прювэт JavaScript!', data: 'Получил твою команду! Вось яна: " + message + "'}}));");
  15.                 } else {
  16.                     if (message.Substring(0, 8) == "console|") {
  17.                         BusEngine.Log.Info(message.Substring(8));
  18.                     }
  19.                 }
  20.             };
  21.         }
  22.     }
  23.     /** API BusEngine.Plugin */
  24. }
  25. /** API BusEngine.Game - пользовательский код */
Наверх