From 92f3d91cb4f73da1f89f47cce9a371b896961cb1 Mon Sep 17 00:00:00 2001 From: AymericDu Date: Fri, 26 Feb 2016 16:49:04 +0100 Subject: [PATCH] refactor wrap in dialogue.rb --- data/plugins/dialogue/dialogue.rb | 46 +++++++++++++++++-------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/data/plugins/dialogue/dialogue.rb b/data/plugins/dialogue/dialogue.rb index dd8d3666..f26c2301 100644 --- a/data/plugins/dialogue/dialogue.rb +++ b/data/plugins/dialogue/dialogue.rb @@ -287,34 +287,17 @@ class Dialogue def wrap # TODO redo this next if @type == :options lines = [] - maximum_width = (@type == :text) ? MAXIMUM_LINE_WIDTH : MAXIMUM_MEDIA_LINE_WIDTH maximum_lines = MAXIMUM_LINE_COUNT text = @text.first - segments = [] - index = 0; width = 0; space = 0 - - while index < text.length - char = text[index] - space = index if char == ' ' - width += get_width(char) - index += 1 - - if (width >= maximum_width) - segments << text[0..space] - text = text[(space + 1)..-1] - width = index = space = 0 - end - end - - segments << text + segments = segment_text(text) if (segments.size <= maximum_lines) - lines.concat(segments) + lines = segments.clone @text = @text[1..-1] insert_copy(@text) if @text.size > 0 else - lines.concat(segments.first(maximum_lines)) + lines = segments.first(maximum_lines).clone segments = [ segments.drop(maximum_lines).join() ] insert_copy(segments << @text[1..-1].join()) end @@ -337,6 +320,29 @@ class Dialogue private + def segment_text(text) + maximum_width = (@type == :text) ? MAXIMUM_LINE_WIDTH : MAXIMUM_MEDIA_LINE_WIDTH + + segments = [] + index = 0; width = 0; space = 0 + + while index < text.length + char = text[index] + space = index if char == ' ' + width += get_width(char) + index += 1 + + if (width >= maximum_width) + segments << text[0..space] + text = text[(space + 1)..-1] + width = index = space = 0 + end + end + segments << text if ! text.empty? + + segments + end + # Inserts a copy of this Dialogue into the chain, but with different text. def insert_copy(text) name = @name