EString - строка телетайп.

При написании 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;
	};
	//*******************************************************************
}