!---------------------------------------------------------------------------
! YesNo An Inform 6 library to ask a semi-rhetorical
! Yes or no question, by L. Ross Raszewski
! (
[email protected])
!
! Several infocom games have asked the player yes or no questions which are
! partially rhetorical (Take Hitchhiker's for example) While Inform's library
! provides for askinga question and demanding an answer, it makes no such
! allowance for non-manditory yes or no questions. This does exactly that.
! send the message YesNo.Ask(ifyes,ifno,ifneither);, where IfYes and IfNo
! are routines to run or messages to print if the player answers yes or no.
! Ifneither is the string or routine that is printed if the player says
! neither yes nor no in the next move.
!
! This is my first fully object-oriented library extension, but it seems to
! work anyway.
!
! You can omit any of the three arguments (actually, you have to put a zero in
! to hold the place if you want to assign an action to ifno, but not ifyes.
!
! The answer is only accepted druing the next turn after the question is asked,
! and uses a timer, so if you're pushing the limit, sorry.
!
! If you like it, or if you don't, e-mail me and say so!
Object YesNo
with react_before [; Yes: if (self has on) return self.ifAff();
No: if (self has on) return self.ifNeg();
default: self.ifNeither();
],
ifAff 0,
ifNeg 0,
ifNeither 0,
Ask [ ifyes ifno ifnone;
self.ifAff=ifyes;
self.ifNeg=ifno;
self.ifNeither=ifnone;
StartTimer(self,1);
give self on;
],
time_left 1,
time_out [; self.ifAff=0; self.ifNeg=0;
self.ifNeither=0;
give self ~on;],
found_in [; rtrue;],
has concealed;