//**********************************************************************
// Forsakener's Text Parsing Snippet
//
// To Use:
// Copy and Paste this system into your map.
//
// Please give credit if you use this.
//**********************************************************************
library TextParsing
globals
private integer array Formula[4]
private string array Lines[50]
private integer MaxLines = 0
endglobals
function ParseText takes string input, integer max returns nothing
local integer length = StringLength(input)
local integer lines = (length/max)+1
local integer i = 1
local integer b = 1
local integer prewrap = 0
local integer wrap = 0
local integer array Space
local integer SpaceLoc = 0
set MaxLines = lines
loop
exitwhen i > lines
set Lines[i] = ""
set Formula[1] = (i*max)
set prewrap = wrap
set Formula[2] = ((max-1)-prewrap)
set Formula[3] = ((i*max)-prewrap)
set Formula[4] = ((Formula[3]-Formula[2])-prewrap)
set b = Formula[4]
set wrap = 0
set SpaceLoc = 0
loop
exitwhen b > Formula[1]
if SubString(input, b-1, b) == " " then
set SpaceLoc = SpaceLoc+1
set Space[SpaceLoc] = b
endif
set b = b+1
endloop
if (SubString(input, Formula[1]-1, Formula[1]) != " ") and (SubString(input, (Formula[1]+1)-1, Formula[1]+1) != " ") and (StringLength(SubString(input, Formula[4]-1, Formula[1])) >= (max-prewrap)) then
set wrap = wrap+((i*max)-Space[SpaceLoc])
set Formula[1] = (i*max)-wrap
set Lines[i] = SubString(input, Formula[4]-1, Formula[1])
else
set Lines[i] = SubString(input, Formula[4]-1, Formula[1])
endif
set i = i+1
endloop
endfunction
function GetMaxLines takes nothing returns integer
return MaxLines
endfunction
function GetLine takes integer line returns string
return Lines[line]
endfunction
endlibrary