Набросал основной функционал ядра. Времени уделять много не получается, но по чуть-чуть делаю.
Как это видит пользователь библиотеки:
C++ (Qt)
int main( int argc, char *argv[] )
{
QApplication app( argc, argv );
core::ScriptEngine eng; // Скриптовый движек
core::BotScheduler sh; // Шедулер ботов
qDebug() << "Install botscheduler api to scriptengine.";
sh.installTo( eng ); // Инсталлирует в скриптовое пространство свой api (appendBot/removeBot)
arena::Model mod; // Арена
qDebug() << "Install model api to scriptengine.";
mod.installTo( eng ); // Инсталлирует в скриптовое пространство свой api (пока арену не делал)
// Загружаем файл с ботом и выполняем его в скриптовом пространстве
// Объекты ботов добавляют себя в шедулер через его api
qDebug() << "Load bot-code.";
if( !eng.executeFile( "bot.js" ) )
{
qWarning() << "Error execution script bot.js.";
return 1;
}
qDebug() << "Running...";
core::LineTimeGenerator gen( 500 ); // Создаем линейгый генератор времени с тиком каждые 0,5 сек
QObject::connect( &gen, SIGNAL( cycle() ), &sh, SLOT( process() ) ); // Связываем генератор и шедулер
gen.start(); // Запускаем генератор
return app.exec();
}
Шаблон бота:
Java
bot = function( _id )
{
var id = _id;
this.tick = function()
{
print( "tick" + id );
}
}
var o1 = new bot( 10 ); //Создаем два объекта бота
var o2 = new bot( 20 );
BotScheduler.appendBot( "bot1", o1.tick ) // Регистрируем их в шедулере, указывая уникальное имя и точку входа.
BotScheduler.appendBot( "bot2", o2.tick )
Сейчас займусь ареной для ботов на карте и основой для карт.