Контроллер ввода, поддерживает клавиатуру  и геймпады.

используется в коде как

if InputController.input_get_released("up") then trace("up");
if InputController.input_get_pressed("down") then trace("down");
if InputController.input_get("left") then trace("left");

Поддерживает переназначение кнопок ввода.

//Site:  MidaDev.ru
//Author: Dimusikus

function printf()
{
	var _str, _arg;
	
	_str = argument[0];
	
	_arg = 0;
	//заполняем массив конвертированными в строку аргументами
	//for(var _i = 1; _i < argument_count; _i++) 	_arg[_i] = string(argument[_i]);	
	
	//Замена аргументов %1 %2.... на соответствующие значения	
	for(var _i = 1; _i < argument_count; _i++)
	{	
		if string_pos("%" + string(_i), _str) == 0 then break;		
		//_str = string_replace(_str, "%" + string(_i), string(_arg[_i]));
		_str = string_replace(_str, "%" + string(_i), string(argument[_i]));
	}
	
	//удаляем массив	
	_arg = 0;
	//возвращаем отформатированную строку аргументами	
	return _str;
}

При написании GuiLog с функцие телетайпа понадобился класс отвечающий за телетайп-строку.
Реализация не до конца продуманна и не идеальна, но работает.
Суть заключается в том что сам класс содержит саму строку, и функционал по телетайпу(задерждка, старт, цвет и т.д.)

Переделал менеджер событий EventManager ver2, исправлены некоторые ошибки(отложенная отправка проваливалась если на событие не было подписчиков).

Приемущества от предыдущей версии:
 - Весь код засунут в конструктор
 - отсюда, возможно создать не ограниченное количество менеджеров, например для Gui, System, GameEvents и других назначений.

Минусы:
- отладка!, если что то пошло не так, отладить или отлавливать логическую ошибку в МОРЕ событий  это просто АД. В код я засунул по возможности где можно выводы в лог отладчика, это хоть как то да помогает найти проблемные места.

Следующая улучшенная версия менеджера событий ver1 подошла к выходу.


1. Решена проблема функциональной атомарности.
2. Вызывать события можно прямо из метода Create любого объекта независимо от его позиции в иерархии создания объектов в комнате. Это не маловажный нюанс, т.к. не обязательно создавать менеджер событий самым первым в комнате, тем самым повышается гибкость использования скрипта. Но вызов события должен быть обязательно "отложенный" т.е. events_queque_publish
Пример:

//метод Create

events_listen("kuku", function(_data) 
{
	trace("получил данные = ", _data);
});

events_queque_publish("kuku", "отправка всем данных");

Данное сообщение получат все объекты кто подписался на событие kuku

Страница 1 из 2