Эксперименты.
Эксперименты.
Контроллер ввода, поддерживает клавиатуру и геймпады.
используется в коде как
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 с функцие телетайпа понадобился класс отвечающий за телетайп-строку.
Реализация не до конца продуманна и не идеальна, но работает.
Суть заключается в том что сам класс содержит саму строку, и функционал по телетайпу(задерждка, старт, цвет и т.д.)
Вспомогательный класс для операций со строками, включает базовые функции:
- add_item()
- set_item()
- size()
- clrear()
- delete_first_item()
- delete_item()
- last_index_lenght()
- items()
При написании нового индикатора аудиоуровней понадобился базовый класс/конструктор лерпания цвета.
Переделал менеджер событий 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