Déplacer et modifier le banner text

En ce moment, je bidouille avec Vorple pour créer une FI avec un écran titre, qui permettrait d’accéder à certaines options et de commencer une nouvelle partie, ce qui lancerait le jeu à proprement parler.

J’ai bidouillé pour que le banner text s’affiche uniquement après la commande commencer :

Le Nulle Part is a room.

[pour éviter l'affichage de la bannière titre/crédits avant le début du jeu proprement dit]
Rule for printing the banner text when the player is in the Nulle Part : do nothing.
Rule for printing the name of le Nulle Part : do nothing. [évite l'affichage du nom de la pièce]

Commencering is an action applying to nothing. Understand "commencer" as commencering.

Check commencering :
	if the player is not in le Nulle Part : 
		say "La partie a déjà commencé !" instead.
Carry out commencering : 
	clear the screen ;
	move the player to le Grand chapiteau, without printing a room description.	
Report commencering :
	say "début du jeu [paragraph break][banner text]".

On commence dans le Nulle Part, une scène récurrente commence quand on arrive dans le Grand chapiteau et constitue le jeu a proprement parler. Ce n’est pas très élégant, mais ça marche à peu près, deux petites exceptions : il y a pas mal d’espace blanc qui s’affiche avant le prompt, et, quand on teste la version Vorple, la ligne de texte annonçant la version de Vorple ne fait apparemment pas partie du banner text et est donc affichée juste après cet espace vide, j’aimerais la virer de là et l’ajouter dans le banner text.

Autre petite modification que j’aimerais faire : toujours dans la version Vorple, le titre du jeu est placé dans un span avec une classe spéciale, partagée avec les noms de pièce, j’aurais préféré qu’il soit tout simplement un header. J’étais donc partie pour changer la rule for printing the banner text, (quand Vorple est supporté), en la recréant quasi à l’identique, avec cette modification de balises pour le titre et la ligne de version de Vorple en plus à la fin. Étant donné qu’il y a pas mal de numéros qui peuvent être sujets à changer, copier-coller en dur ce qui est affiché quand je joue ne me semble pas une bonne idée, mais vu que la bannière est créée en I6, je ne sais pas trop où trouver les substitutions qu’il faudrait utiliser.

Suite à une suggestion de Natrium, j’ai été chercher dans l’extension française pour trouver la partie correspondant au banner text, ça correspond à ça :

Include (-
[ Banner;
	BeginActivity(PRINTING_BANNER_TEXT_ACT);
	if (ForActivity(PRINTING_BANNER_TEXT_ACT) == false) {
		VM_Style(HEADER_VMSTY);
		TEXT_TY_Say(Story);
		VM_Style(NORMAL_VMSTY);
		new_line;
		TEXT_TY_Say(Headline);
		#ifdef Story_Author;
		print " par "; TEXT_TY_Say(Story_Author);
		#endif; ! Story_Author
		new_line;
		VM_Describe_Release();
		print " / Inform 7 build ", (PrintI6Text) NI_BUILD_COUNT, " ";
		print "(I6/v"; inversion;
		print " lib ", (PrintI6Text) LibRelease, ") ";
		#Ifdef STRICT_MODE;
		print "S";
		#Endif; ! STRICT_MODE
		#Ifdef DEBUG;
		print "D";
		#Endif; ! DEBUG
		new_line;
	}
	EndActivity(PRINTING_BANNER_TEXT_ACT);
];
-) instead of "Banner" in "Printing.i6t".

J’imagine que la partie correspondant au titre, c’est TEXT_TY_Say(Story); et que les lignes au dessous et au dessus sont responsables de la mise en forme et que le reste, c’est ce que je veux garder.

Tu as oublié d’inclure Basic Screen Effect et d’ajouter l’endroit Grand chapiteau pour que ça compile.

Pour le problème de base avec la ligne de Vorple qui s’affiche toujours, c’est parce que ça se passe dans une after printing the banner text et que tu n’as remplacé que la for.

Le plus simple serait de directement délister la règle qui lance l’activité printing the banner text en début de partie :

The display banner rule is not listed in any rulebook.

Pour l’espace blanc en trop, l’une des raisons est que tu n’affiches rien pour le printed name de l’endroit, mais la ligne où il aurait dû se trouver est toujours là ! Pareil, on peut directement neutraliser la règle qui affiche le nom :

The room description heading rule does nothing when the location is Nulle part.

(Pour trouver cette règle, j’ai tapé « rules » avant de regarder.)

S’il y a toujours trop d’espace, c’est parce qu’Inform affiche des saut de ligne au tout début (on peut le voir même quand la bannière est là). Tu dis si tu veux aussi supprimer ça.

Pour remplacer des morceaux de la bannière, c’est effectivement compliqué parce que c’est une routine I6 monolithique, et qu’il faudrait appeler la fonction Vorple I7 qui insèrent l’élément HTML.

Je trouve que c’est plus facile de faire l’inverse et d’exposer les morceaux de la bannière dans I7. Dans le genre :

To say describe release:
    (- VM_Describe_Release(); -)

Et ensuite tu reconstruis la bannière en I7 dans une for printing the banner text.

J’avais fait une extension pour ça il y a assez longtemps, « Saying Story Metadata ». C’est dans mon dépôt d’extension.

Mais si tu ne veux pas t’embêter avec tout ça parce que tu ne veux modifier que le titre et pas chacun des morceaux indépendamment, tu pourrais faire :

[Même chose que la bannière originale,
mais sans les fonctions liées à l’activité `printing the banner text`,
et sans le titre du jeu, bien sûr.]
Include (-
[ BannerWithoutTitle;
	TEXT_TY_Say(Headline);
	#ifdef Story_Author;
	print " par "; TEXT_TY_Say(Story_Author);
	#endif; ! Story_Author
	new_line;
	VM_Describe_Release();
	print " / Inform 7 build ", (PrintI6Text) NI_BUILD_COUNT, " ";
	print "(I6/v"; inversion;
	print " lib ", (PrintI6Text) LibRelease, ") ";
	#Ifdef STRICT_MODE;
	print "S";
	#Endif; ! STRICT_MODE
	#Ifdef DEBUG;
	print "D";
	#Endif; ! DEBUG
	new_line;
];
-)

To say banner text without title:
    (- BannerWithoutTitle(); -)

For printing the banner text:
    say "[story title] mais avec des éléments HTML trop géniaux[line break][banner text without title]";

Je pense que c’est compréhensible même si on ne s’y connaît pas trop en I6, mais je peux donner des explications si nécessaire.

Tout ça est valable pour 6L38, ça a sûrement changé dans les versions ultérieures.

Merci beaucoup ! J’ai juste mis les bouts de code qui me semblaient pertinents à l’histoire du banner text, mais la salle existe, j’ai plein d’extensions incluses dont Basic screen effects, pour le moment, tout compile (sauf ma tentative de release along with the stylesheet en me disant que sur un malentendu, ça pourrait passer, mais non, donc je vais modifier directement une copie de vorple.css à part et je la recollerai manuellement à chaque fois).

Je vais jouer avec les règles, je ne suis pas encore hyper à l’aise dessus, mais ça a l’air beaucoup mieux que mon bricolage. Et je pense que je comprends ce qu’il faut faire pour reconstruire la bannière, effectivement, le code I6 est clair même si un peu intimidant.

C’est juste que ton exemple minimal ne compile pas tel quel parce que tu n’as pas inclus l’extension et l’endroit. Je ne doute pas que chez toi tu as tout ce qu’il faut ! :slightly_smiling_face:

C’était peut-être pas clair, mais oui, tu n’as besoin que du délistage des deux règles au début, et du dernier code à la fin.

En gros on crée une fonction I6 qui est une copie de l’originale, mais sans le titre, et on l’expose avec I7. Le plus important, c’est d’enlever ce qui a trait à l’activité dans l’I6, sinon ça va la lancer récursivement à l’infini quand on l’appelle depuis l’activité dans I7.