class Main {
static function main() {
var text = "Два друга, поднимаясь в горы, застряли на вершине из-за бурана.\nИсикура при подъеме получил ранение и, думая, что умирает, рассказал Асаи свою самую страшную тайну.\n\n";
var lines = parseText(text, 300, true);
for (line in lines) trace(line);
var text = "Но рядом оказалось убежище и, добравшись до туда, они смогли вызвать помощь. Буран не прекращался, и теперь они вдвоем в пустом доме должны ждать спасение.\n\nУ Исикуры есть шанс выжить. Есть ли он у Асаи?";
var lines = parseText(text, 200, false);
for (line in lines) trace(line);
}
static function parseText(text:String, width:Float, wordWrap:Bool):Array<String> {
var lines:Array<String> = [];
var lastChance = -1;
var lastBreak = 0;
var i = 0;
while (i < text.length) {
var line = text.substring(lastBreak, i + 1);
var w = line.length * 10; //достаточно заменить на получение длины строки в пикселях
if (w > width) {
if (lastChance < 0 || !wordWrap) lastChance = i - 1;
lines.push(text.substring(lastBreak, lastChance + 1));
i = lastBreak = lastChance + 1;
lastChance = -1;
}
var char = text.substring(i, i + 1);
if (char == " ") lastChance = i;
else if (char == "\n") {
lines.push(text.substring(lastBreak, i + 1));
lastBreak = i + 1;
lastChance = -1;
}
i++;
}
var end = text.substring(lastBreak);
if (end != "" && end != " ") lines.push(end);
return lines;
}
}