-
Notifications
You must be signed in to change notification settings - Fork 0
/
scene2.js
258 lines (234 loc) · 7.78 KB
/
scene2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
//à faire :
// - faire un json avec les dialogues
// - redéfinir les deux fichiers audio
// - redéfinir les deux images dans le html
let i = 0;
let indiceDialogue = 1;
const bulle = document.querySelector(".bulle-texte");
const bullecontainer = document.querySelector(".bulle-container");
const persos = document.querySelectorAll(".perso");
const perso1 = document.querySelector(".perso1 img");
const perso2 = document.querySelector(".perso2 img");
const etiquette = document.querySelector(".etiquette");
const bouton = document.querySelector(".suivant");
const boutonAlice = document.querySelector(".alice");
//on charge l'audio
//nouveau json
const dialogue = {
1: {"nom": "Jb",
"texte": "Alors ? Une idée de ce qu'on pourrait faire ?",
"switch": false,
"mood": "neutral",
"role": 1
},
2: {"nom": "Jules",
"texte": "J'ai faim...",
"switch": true,
"mood": "thinking",
"role": 2
},
3: {"nom": "Jb",
"texte": "Gros, tu forces !",
"switch": true,
"mood": "dumb",
"role": 1
},
4: {"nom": "Jules",
"texte": "Héhé.",
"switch": true,
"mood": "smiling",
"role": 2
},
5: {"nom": "Jules",
"texte": "Déjà en ce qui concerne les contraintes, il nous faut un sujet facile à aborder étant donné qu'on a que deux jours pour faire ce projet.",
"switch": false,
"mood": "thinking",
"role": 2
},
6: {"nom": "Jb",
"texte": "Et du coup, t'as une idée ?",
"switch": true,
"mood": "thinking",
"role": 1
},
7: {"nom": "Jules",
"texte": "J'aime bien les animaux...",
"switch": true,
"mood": "smiling",
"role": 2
},
8: {"nom": "Jb",
"texte": "Ok, merci pour ton aide...",
"switch": true,
"mood": "thinking",
"role": 1
},
9: {"nom": "Jb",
"texte": " Plutôt que de choisir un sujet aléatoire, j’avais à l’esprit quelque chose de plus actuel pour notre animation sur une page Web. ",
"switch": false,
"mood": "thinking",
"role": 1
},
10: {"nom": "Jb",
"texte": "Je pensais à un sujet qui pourrait susciter une prise de conscience.",
"switch": false,
"mood": "thinking",
"role": 1
},
11: {"nom": "Jb",
"texte": "Par exemple : l'impact de l'industrie de la mode sur l'environnement et les conditions de travail des ouvriers dans les pays en développement.",
"switch": false,
"mood": "smiling",
"role": 1
},
12: {"nom": "Jules",
"texte": "Ah ouais… T’es sûr de ne pas vouloir partir sur un projet plus gai, comme...",
"switch": true,
"mood": "thinking",
"role": 2
},
13: {"nom": "Jules",
"texte": "La vie d'un chat d'appartement ?",
"switch": false,
"mood": "shiny",
"role": 2
},
14: {"nom": "Jules",
"texte": "Alice peut faire les dessins, moi je fais le front, puis Shams et toi le back.",
"switch": false,
"mood": "thinking",
"role": 2
},
15: {"nom": "Jb",
"texte": "Nan...",
"switch": true,
"mood": "variant",
"role": 1
},
16: {"nom": "Jb",
"texte": "Parlons d’un sujet qui touche une partie de la population pour que les lecteurs puissent se sentir visés.",
"switch": false,
"mood": "thinking",
"role": 1
},
17: {"nom": "Jb",
"texte": "Parlons de la déforestation et de la perte de biodiversité ou encore de la consommation excessive de viande et les conséquences sur la santé et l’environnement.",
"switch": false,
"mood": "smiling",
"role": 1
},
18: {"nom": "Jules",
"texte": "Mmmh, ça peut être intéressant, mais...",
"switch": true,
"mood": "thinking",
"role": 2
},
19: {"nom": "Jules",
"texte": "Partir sur des thématiques de ce calibre pour une histoire interactive à faire en 2 jours, c’est un peu osé non ?",
"switch": false,
"mood": "thinking",
"role": 2
},
20: {"nom": "Jb",
"texte": "Chill mané.",
"switch": true,
"mood": "shiny",
"role": 1
},
21: {"nom": "Jules",
"texte": "Ok, tu m'as convaincu !",
"switch": true,
"mood": "sassy",
"role": 2,
"end": "true"
},
22: {"nom": "Jules",
"texte": "Bon, je vais en parler aux autres.",
"switch": false,
"mood": "smiling",
"role": 2,
"end": "true"
},
}
var audio1 = new Audio();
audio1.src = "sounds/jb.mp3";
audio1.volume = 0.1;
var audio2 = new Audio();
audio2.src = "sounds/jules.mp3";
var musiquedefond = new Audio();
musiquedefond.src = "sounds/musiquedefond.mp3";
musiquedefond.loop = true;
musiquedefond.volume = 0.01;
//jouer la musique dès la première interaction avec la page
document.addEventListener("click", function(){
musiquedefond.play();
});
//La fonction qui écrit le texte lettre par lettre
function ecrireTexte(element, texte, role) {
i = 0;
element.innerHTML = "";
function ajouterLettre() {
if (i < texte.length) {
element.innerHTML += texte.charAt(i);
i++;
setTimeout(ajouterLettre, 5);
if (role == 1) {
audio1.play();
} else {
audio2.play();
}
}
}
setTimeout(() => {
ajouterLettre();
}, 200);
//fonction pour jouer un son
}
//On appelle la fonction pour écrire le texte au chargement de la page
setTimeout(() => {
ecrireTexte(bulle, dialogue[indiceDialogue].texte);
indiceDialogue++;
}, 300);
//On écoute le clic sur la bulle et on appelle la fonction pour écrire le texte suivant
bullecontainer.addEventListener("click", (e) => {
if(dialogue[indiceDialogue].switch == true){
//on change de perso
persos.forEach(perso => {
if(perso.classList.contains('opaque')){
perso.classList.remove('opaque');
} else {
perso.classList.add('opaque');
};
});
//on change d'étiquette
if(etiquette.classList.contains('left')){
etiquette.classList.remove('left');
etiquette.classList.add('right');
} else {
etiquette.classList.remove('right');
etiquette.classList.add('left');
};
}
//on change l'image
if(dialogue[indiceDialogue].role == 1){
let nom = dialogue[indiceDialogue].nom.toLowerCase();
(perso1).src = "img/" + nom + "/" + dialogue[indiceDialogue].mood + ".png";
} else {
let nom = dialogue[indiceDialogue].nom.toLowerCase();
(perso2).src = "img/" + nom + "/" + dialogue[indiceDialogue].mood + ".png";
}
//on change le nom de l'étiquette
etiquette.innerHTML = dialogue[indiceDialogue].nom;
//on écrit le texte
bulle.innerHTML = "";
ecrireTexte(bulle, dialogue[indiceDialogue].texte, dialogue[indiceDialogue].role);
console.log(indiceDialogue);
indiceDialogue++;
//si c'est la fin, on fait apparaître le bouton
if(indiceDialogue == 23){
setTimeout(() => {
bouton.classList.add('visible');
boutonAlice.classList.add('visible');
}, 300);
}
});