Radiobuttons and If's

So...
I've been using radiobuttons quite frequently, and they're great to establish variables. But I came across a question. It's not a structural problem to my game, just a whim, but I got curious. So here goes: is it possible to have a radiobutton establish a variable and unlock a hidden content of the same passage it's in?

I'll explain better.
I have this in my passage, for example,
* Beer  <<radiobutton "$meal" "beer">>
* Mead  <<radiobutton "$meal" "mead">>
* Ale  <<radiobutton "$meal" "ale">>

<<linkreplace ">>">><<goto "Next">><</linkreplace>>

Now my question, my intention was that the <<linkreplace>> only appeared once the player had made a choice. Now I imagined that could have something to do with a refreshing of the passage itself but I don't know how to incorporate that with the radiobutton macro.
Is this possible? Thanks :)

(and sugarcube 2.18/twine 2)

Comments

  • edited July 2017
    Assuming that this situation is not a one-off and you have several passages containing the same setup, try something like the following.

    Markup
    <label><<radiobutton "$meal" "beer">> Beer</label>
    <label><<radiobutton "$meal" "mead">> Mead</label>
    <label><<radiobutton "$meal" "ale">> Ale</label>
    
    <span id="reveal">[[>>|Next]]</span>
    
    TIP: Wrap the <<radiobutton>>, or <<checkbox>>, and its label within the <label> tag. It makes the included text also activate the radiobutton, or checkbox, when clicked on.

    JavaScript (Twine 2: goes in Story JavaScript; Twine 1: goes in script-tagged passage)
    postrender['radiobutton-reveal'] = function (content) {
    	var reveal = content.querySelector('#reveal');
    
    	if (reveal) {
    		$(reveal).hide();
    		$(content)
    			.find('.macro-radiobutton')
    			.on('change.reveal', function () {
    				if (this.checked) {
    					$('.macro-radiobutton').off('change.reveal');
    					$(reveal).show();
    				}
    			});
    	}
    };
    

    NOTES:
    • Using <<goto>> should be a last resort. You certain don't need it here.
    • Using <<linkreplace>> as you are is bizarre. Unless the link is supposed to directly output something around or in replacement of its link test when clicked, you should be using <<link>> instead.
  • Thanks @TheMadExile it works exactly as I wanted. Thanks for the tip on the <label> thing too, I didn't know it. As for the <<linkreplace>> I am indeed replacing the link with something else. I just posted part of the passage, in fact, when clicked, depending on a previous variable, there's another chunk of text that appears, that's why. But thank you for the note. :)
Sign In or Register to comment.