C'est la bonne solution.
Il faut que tu créé une variable globale qui servira à définir quel est le n° de l'écran.
Global ça signifie que la variable se trouvera depuis fil principal du programme.
Room est un fil secondaire, c'est pour ça que quand tu passe d'une salle à l'autre elle est réinitialisée.
Pour que tu puisses avoir des changements persistants dans une Room, ou même des conséquences liées d'une Room à une autre.
Exemple : je coupe le disjoncteur, la lumière s'éteint à tous les étages
Tu créé une variable globale "courant" et tu la fixe à "true" (disons qu'au départ du jeu le courant est déjà mis)
Dans chacune des salles, tu prévois dans "room_Load()" comment gérer la situation selon l'état du courant (charger un visuel avec une lampe allumée, sinon un avec la lampe éteinte), et tu conditionne ça en contrôlant la valeur de cette variable globale.
Dans la salle où se trouve le disjoncteur, suite à l'action de couper/brancher le courant :
1) tu changes la valeur de cette variable globale
2) tu réinitialise la salle "room_Load()"
Je ne connais pas la syntaxe il ça ne semble pas trop compliqué :
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php?id=les_variables_globales&s[]=globalDans le principe, pour créer une variable globale, tu dois la déclarer à l'endroit prévu pour. (Le panneau Global Variables)
Oublie que Bool ou Int fasse une grosse différence. C'est pareil sauf que ce que tu contrôlera est un nombre (entier)
Tu lui donne une valeur de départ (le n° de l'écran, avant que le joueur n'ait interagi avec)
Si c'est un cas particulier, par exemple : tant que le joueur n'a pas interagi au moins aune fois avec l'écran. Tu lui met 0 (zéro)
Le zéro fera office de "false", et tous les autres nombres "true" tout en permettant une déclinaison de possibilités (1, 2, 3, 4, 5, 6, 7...)
Ensuite dans room_load(), (initialisation de la salle)
Tu contrôles la valeur de cette variable (machineState)
Le mieux serait de créer une fonction exprès
- Code:
-
function machineUpdate(){
if (machineState == 1) {
// code pour afficher le visuel 1
}
else if (machineState == 2) {
// code pour afficher le visuel 2
}
else {
// code pour afficher le visuel éteint
}
}
Et dans ta fonction room_Load() tu lances cette fonction machineUpdate()
Ensuite, dans le script où tu gères le choix du joueur, tu assignes son choix (valeur de 1 à 7) à la variable globale, puis exécute la fonction machineUpdate() pour mettre à jour l'affichage, sans recharger la Room.