Emo Test Trainers
Проект для тестирования тренажеров ЭМО.
Как запустить
-
Клонируйте или загрузите архивом этот проект.
-
Откройте папку dist в редакторе Visual Studio Code.
-
Установить расширение Live Server для Visual Studio Code.
-
Нажмите правой кнопкой мыши на файл
index.html
и выберите пунктOpen with Live Server
. -
Если всё выполнено правильно, откроется окно для запуска тренажёра в браузере.
-
Если у вас в тренажёре не загружаются картинки - Откройте папку dist в редакторе Visual Studio Code, а не папку с репозиторием
Куда загружать тренажёр
Разработка ведется в папке assets.
Папка обязательно должна содержать:
-
index.html
- файл, который будет запускаться в iframe. -
params.json
- файл настроек и параметров для тренажера. Один и тот же код можно запускать с разными параметрами, это позволяет создавать сразу несколько разных тренажеров для пользователей.
А также стили, скрипты, изображения и любые другие файлы, которые нужны для тренажера.
params.json
Описание
Требования к тренажёру
Код тренажера запускаетться внутри iframe
.
Тренажёр взаимодействует c ЭМО через Window: message event.
Внутри event
любого сообщения передается объект data
следующего вида:
"data": {
"type": string,
"value": object
}
type
- тип сообщения (запроса или ответа)
value
- любая информация, которая передается в запросе или ответа
Сообщения, которые тренажёр отправляет родительскому окну
Cмотри типы с приставкой ParentReceives
Сообщения, которые родительское окно отправляет тренажеру
Cмотри типы с приставкой ChildReceives
Пример кода
const post = (message) => {
if (DEBUG) console.log('post(message)', message);
if (window.parent === window) return;
window.parent.postMessage(message, '*');
}
window.addEventListener('load', () => {
window.addEventListener('message', (e) => {
switch (e.data.message) {
case 'instance':
const colors = e.data.colors;
const instance = e.data.instance;
startGame(instance, colors);
break;
case 'replay':
const colors = e.data.colors;
const replay = e.data.instance;
startReplay(replay, colors);
break;
}
});
post({ message: 'load' });
})
Как редактировать эмулятор
Код эмулятора в папке repo.