При написании GuiLog с функцие телетайпа понадобился класс отвечающий за телетайп-строку.
Реализация не до конца продуманна и не идеальна, но работает.
Суть заключается в том что сам класс содержит саму строку, и функционал по телетайпу(задерждка, старт, цвет и т.д.)
/// @description EString
//Site: MidaDev.ru
//Author: Dimusikus
function EString(_text="", _typewriter=false, _col=c_black) constructor
{
#region Constructor
str = _text;
typewriter = -1;
timer = 0;
delay = 100;
color = _col;
//oldcolor = color;
delay_set(100);//чем больше тем быстрее выводится текст
if _typewriter then typewriter_on();
//toolsobj.alarm_set(0, room_speed);
#endregion
//*******************************************************************
static get = function(){return str;};
//*******************************************************************
static set = function(_s){str=_s;};
//*******************************************************************
static get_at = function(_i) { return string_char_at(str, _i);};
//*******************************************************************
//static set_oldcolor = function() { oldcolor = draw_get_color();};
//static get_oldcolor = function() { return oldcolor;};
//static get_color = function() { };
//*******************************************************************
//static get = function() { };
//*******************************************************************
static mid = function(_index, _len)
{
return string_copy(str, _index, _len);
};
//*******************************************************************
static length = function(){return string_length(str);};
//*******************************************************************
//отсчёт времени телетайпа текста посимвольная задержка так сказать
static typewrite_counter = function()
{ if typewriter == -1 then return;
if timer >= (room_speed / delay) then
{ typewriter++;
timer=0;
//trace("timer=0");
}
else timer++;
}
//*******************************************************************
//возвращает текущую позицию символа в строке
//позиция увеличивается в зависимости от времени в функции typewrite_counter
static typewrite_pos = function()
{
return typewrite;
};
//*******************************************************************
//проверяет если _lenc больше текущей позиции телетайпа то возвращает breack
static typewriter_break = function(_lenc)
{
if typewriter==-1 then return false;
if _lenc > typewriter then return true;
return false;
};
//*******************************************************************
static typewriter_off = function() { typewriter=-1;};
//*******************************************************************
static typewriter_on = function() { typewriter=1;};
//*******************************************************************
static delay_set = function(_d)
{
delay = _d;
};
//*******************************************************************
}