!----------------------------------------------------------------------------
! Betatest_it.h   Versione 1.0 del 01/09/2006
! basata sulle librerie di inform 6/11  INFIT 2.5 e Glulx
! 
! Tratta dalla libreria betatest.h di Marnie Parker  del  29/02/2000
!----------------------------------------------------------------------------
! Questa estensione è molto semplice, ma spero utile. Dal momento che
! rende più semplice eseguire il betatest.
! digitando il comando "beta test on" entrerete nella modalità di testing del gioco.
! potrete uscirne con il comando "beta test off" o semplicemente uscendo dal gioco.
!
! Cosa fa il gioco in modalità beta test:
! 1. Attiva lo scripting, ovvero la creazione di un file di testo dove verrà registrato
!     tutto ciò che accade nella partita.
! 2. Inserisce la possibilità per il giocatore di digitare commenti durante il gioco.
!     (tipo nel momento in cui trovano un bug) che apparirà sullo schermo e verrà
!     registrato nel file, ma non verrà tenuto in conto dal parser.
!     i commenti devono essere preceduti da un punto esclamativo e da uno spazio.
!     Ad esempio: "! commento commento". Lo spazio di seguito al punto esclamativo 
!     è necessario, dal momento che esso è come un classico verbo.

! In questo modo il betatester non dovrà scorrere il file per inserire i commenti dopo
! la partita, ne vedrà comparire "Non capisco la frase" ogni volta che tenta di inserirne
! uno.
!
! Per cominciare la partita in modalità beta testing potete inserire l'istruzione
! <<BestTestOn>>; alla fine della vostra routine Initialise.
!
! Includete questo file dopo la libreria parser.h.

! Ricordatevi di rimuovere questa libreria dalla distribuzione finale del vostro gioco
! :D


#ifdef DEBUG; message "Compiling betatest_it.h"; #endif;

!---------------------------------------------------------------------------
! Sostituzione delle Routine di libreria
!---------------------------------------------------------------------------

Replace ScriptOnSub;
Replace ScriptOffSub;
Replace QuitSub;

Global betamode = false;

[ ScriptOnSub;
!!!------inizio modifica alla libreria
      if (~~(betamode)) {  
                      print "Vuoi attivare la modalità betatest? (S/N)";
                      if (YesOrNo()==0) "^Beta testing disattivo.";
                      betamode = true;
                      }
!!!------fine                      
    if (gg_scriptstr ~= 0) return L__M(##ScriptOn, 1);
    if (gg_scriptfref == 0) {
        ! fileref_create_by_prompt
        gg_scriptfref = glk($0062, $102, $05, GG_SCRIPTFREF_ROCK);
        if (gg_scriptfref == 0) jump S1Failed;
    }
    ! stream_open_file
    gg_scriptstr = glk($0042, gg_scriptfref, $05, GG_SCRIPTSTR_ROCK);
    if (gg_scriptstr == 0) jump S1Failed;
    glk($002D, gg_mainwin, gg_scriptstr); ! window_set_echo_stream
    L__M(##ScriptOn, 2);
    VersionSub();
    return;
  .S1Failed;
    L__M(##ScriptOn, 3);
!!!--------altra modifica:
    "^Hai attivato il Beta testing. I commenti possono essere inseriti preceduti
    da un punto esclamatico e da uno spazio in modo che non vengano considerati
    dal parser del gioco. Ad es.    ^! commento commento";
!!!--------fine
];
    
[ ScriptOffSub;
!!!--------altra modifica:
    if (betamode) {  
                 print "Vuoi disattivare la modalità betatest? (S/N)";
                 if (YesOrNo()==0) "^Beta testing attivo.";
                 betamode = false;
                 }
!!!.......fine                 
    if (gg_scriptstr == 0) return L__M(##ScriptOff,1);
    L__M(##ScriptOff, 2);
    glk($0044, gg_scriptstr, 0); ! stream_close
    gg_scriptstr = 0;
!!!-----ancora un comando inserito:    
    "^Modalità Betatest disattivata.";
!!!-----fine
];

[ QuitSub; 
        L__M(##Quit,2);
        if (YesOrNo()~=0){; 
!!!----ultima modifica alla libreria:        
        if (betamode){ betamode = false; <ScriptOff>; } 
!!!----fine modifica        
        quit; 
        }
];

[ BetaTestOnSub;
      if (betamode) "La modalità Beta testing è già attiva.";
      betamode = true;
      print "Attivo lo script...^";
      <<ScriptOn>>;
];

[ BetaTestOffSub;
      if (~~(betamode)) "La modalità Beta testing è già disattiva.";
      betamode = false;
      print "Disattivo lo script...^";
      <<ScriptOff>>;
];

[ BetaCommentSub;
          if (betamode) {    
                                     print "***************************************************^";
                                     print "****************** COMMENTO ****************^";
                                     print "***************************************************^";
                                     rtrue;}
          "I commenti possono essere usati solo con la modalità beta testing attiva.";
];

Verb meta 'beta'
         *              ->BetaTestOn
         * 'test'       ->BetaTestOn
         * 'test' 'off' ->BetaTestOff
         * 'off'        ->BetaTestOff
         * 'test' 'on'  ->BetaTestOn
         * 'on'         ->BetaTestOn;

Verb meta '!'
         * topic        ->BetaComment;
