Text Processor - Centered Text

Doctor Agon
06 Jun 2020, 08:08

Forgive me if this already exists, or if someone else has done it, but I was looking at the text processor commands and this page
http://docs.textadventures.co.uk/quest/text_processor.html
The very bottom of the page caught my eye, and I then came up with this, pasting it into the Start script

game.textprocessorcommands = game.textprocessorcommands
scr => {
  s = Mid(section, 3)
  game.textprocessorcommandresult = "<div style=\"text-align:center\">" + s + "</div>"
}
dictionary add (game.textprocessorcommands, "c", scr)

So now

{c:This prints in the center of the screen.}

But, I thought I'd have a go at adding it to the Text Processor command itself
created the function

<function name="ProcessTextCommand_C" parameters="section, data" type="string"><![CDATA[
    s = Mid(section, 3)
    return (ProcessTextSection("<div style=\"text-align:center\">" + s + "</div>",data))
  ]]></function>

But it's not working.
I know I'm missing a step.


mrangel
06 Jun 2020, 16:52

You still need to add it to game.textprocessorcommands. Just that your code will be a little simpler:

game.textprocessorcommands = game.textprocessorcommands
scr => {
  game.textprocessorcommandresult = ProcessTextCommand_C (section, data)
}
dictionary add (game.textprocessorcommands, "c:", scr)

Or edit the dictionary on the <game> element directly, if that's easier.

Also, for speed, it's probably best to only call ProcessTextSection on the part that might contain text processor directives. So you'd be returning "<div style=\"text-align:center\">" + ProcessTextSection(s, data) + "</div>". (Probably a tiny difference here; but a good habit to get into for when you're doing more complex stuff)


Doctor Agon
06 Jun 2020, 17:13

OK. Thanks mrangel. I'll check that out.