tmedwards / sugarcube-3

SugarCube is a free (gratis and libre) story format for Twine/Twee.
17 stars 1 forks source link

Rethink problematic macros #19

Open tmedwards opened 4 years ago

tmedwards commented 4 years ago

Rethink—rework, repurpose, or remove—problematic macros.

Uzume commented 4 years ago

<<actions>> and <<choice>> seem mostly applicable in the same way and go along with creating/manipulating disabled controls not unlike tmedwards/sugarcube-2#46. Methinks all controls including simple passage links should have some means of displaying a disabled version of them. This allows the author to give the reader clues that certain actions would have been available if something was different. The most obvious example would be a passage link that was locked by some condition, however, even textboxes, etc. should have a means to display them in a disabled state (e.g., providing the player with a way to name the main character but in some situations unable to remember, etc.).

Renaming <<back>> could be a moot point if current/unexpired history goes away with #20.

<<return>> seems confusing. What does it do if given a passage name that is not previously visited (i.e., not in its history)?. It seems to me this would be better as a new <<back>> macro that has an argument on how far back in history to return to which passage. It would default to 1 meaning link to the previous visited passage (but not undoing history). The documentation would likely want to reiterate the usual warnings about visiting the same passages multiple times.

Methinks <<silently>> would be better named something like <<discard>> or <<discardoutput>>, etc.

HiEv commented 3 years ago

Perhaps instead of <<silently>> you could use <<mute>> instead? It's shorter to type and means the same thing, though it may be confused for an audio macro (but I guess <<silently>> could also be confused for one). Alternately, <<hide>> might work, since it's short and fairly clear (unless you decide you also want a DOM macro which hides HTML elements).

As for <<return>>, how about <<gotolast [tagname(s) to skip]>> which will take them forward to the last passage they were at previously which doesn't have any of the tag names passed in as parameters to that macro. That clarifies what the macro does and also simplifies resolving the "long return" problem. (Also, I agree that changing <<back>> to <<undo>> would be good, since I could never keep straight in my head which one of these two macros did the undo and which didn't.)