Adefinir  Finale
game.blade.php
Go to the documentation of this file.
1 <!DOCTYPE html>
2 <html lang="fr">
3 
4 <head>
5  <title>Game - Adefinir</title>
6 
7  <meta charset="utf-8">
8  <meta name="viewport" content="width=device-width, initial-scale=1">
9  <meta name="csrf-token" content="{{ csrf_token() }}">
10 
11  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
12  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
13 
14  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
15  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
16  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
17 
18  <style>
19 .btn-perso { width: 200px;}
20  </style>
21 </head>
22 
23 
24 
25 <body>
26 
27  <!-- En-tête de la page web-->
28  <header>
29  <div class="row justify-content-between bg-dark">
30 
31  <div class="col-sm-1 p-3"></div>
32 
33  <!-- Colonne centrale contenant titre et barre de progression -->
34  <div class="col-md-8 text-center p-3 text-white">
35  <h1 class="text-warning">Studio TBD Games</h1>
36 
37  <div class="progress" style="height:22px">
38  <div id="bar" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" style="width: 0%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
39  </div>
40  </div>
41 
42 
43 
44  <!-- Colonne contenant les boutons d'accès :
45  - au Wiki du jeu sur le git
46  - à la page d'accueil du site -->
47  <div class="col-md-1 pt-3">
48  <div class="row">
49 
50  <!-- Bouton infos -->
51  <div class="col-md-auto pr-1">
52 
53  <button type="button"
54  onclick="window.open('https://git.unistra.fr/adefinir/t432_liy20_t3_h/-/wikis/','_blank')"
55  class="btn btn-primary-outline">
56  <em class="fas fa-info-circle fa-lg" style="color:white"></em>
57  </button>
58  </div>
59  <!-- Bouton exit -->
60  <div class="col-md-auto pl-1">
61  <button type="button"
62  onclick="window.location='{{ route("welcome") }}'"
63  class="btn btn-primary-outline">
64  <em class="fas fa-sign-out-alt fa-lg" style="color:red"></em>
65  </button>
66  </div>
67 
68  </div>
69  </div>
70  </div>
71  </header>
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82  <!-- Corps de la page web -->
83  <body style="background-color:#2C2C39">
84 
85  <!-- Gestion des employés & affichage granularité-->
86  <div class="container-fluid mt-5">
87  <div class="row justify-content-between">
88 
89 
90 
91  <!-- Affichage de la granularité -->
92  <div class="col-lg-1 pt-3 bg-dark text-center">
93  <h5 style="color:white"> Journées <br> restantes :</h5>
94  <h5 id="days" style="color:white">-</h5>
95  </div>
96 
97 
98 
99  <!-- Première colonne -->
100  <div class="col-lg-3 pt-3 bg-warning text-center">
101 
102  <!-- Développeur -->
103  <div class="row">
104  <div class="col text-left">
105  <h5> Développeur </h5>
106  </div>
107 
108  <div class="col-md-1">
109  <button value="Developpeur"
110  onclick="eventFire($(this).val())"
111  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
112  </div>
113 
114  <div class="col-md-1">
115  <p id="e1">-</p>
116  </div>
117 
118  <div class="col-md-1 mr-3">
119  <button value="Developpeur"
120  onclick="eventHire($(this).val())"
121  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
122  </div>
123 
124  </div>
125 
126  <!-- Game Designer -->
127  <div class="row">
128  <div class="col text-left">
129  <h5> Game Designer </h5>
130  </div>
131 
132  <div class="col-md-1">
133  <button value="GameDesigner"
134  onclick="eventFire($(this).val())"
135  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
136  </div>
137 
138  <div class="col-md-1">
139  <p id="e2">-</p>
140  </div>
141 
142  <div class="col-md-1 mr-3">
143  <button value="GameDesigner"
144  onclick="eventHire($(this).val())"
145  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
146  </div>
147 
148  </div>
149  </div>
150 
151 
152 
153  <!-- Deuxième colonne -->
154  <div class="col-lg-3 pt-3 bg-warning text-center">
155 
156  <!-- Directeur Marketing -->
157  <div class="row">
158  <div class="col text-left">
159  <h5> Directeur Marketing </h5>
160  </div>
161 
162  <div class="col-md-1">
163  <button value="DirecteurMarketing"
164  onclick="eventFire($(this).val())"
165  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
166  </div>
167 
168  <div class="col-md-1">
169  <p id="e3">-</p>
170  </div>
171 
172  <div class="col-md-1 mr-3">
173  <button value="DirecteurMarketing"
174  onclick="eventHire($(this).val())"
175  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
176  </div>
177 
178  </div>
179 
180  <!-- Sound Designer -->
181  <div class="row">
182  <div class="col text-left">
183  <h5> Sound Designer </h5>
184  </div>
185 
186  <div class="col-md-1">
187  <button value="SoundDesigner"
188  onclick="eventFire($(this).val())"
189  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
190  </div>
191 
192  <div class="col-md-1">
193  <p id="e4">-</p>
194  </div>
195 
196  <div class="col-md-1 mr-3">
197  <button value="SoundDesigner"
198  onclick="eventHire($(this).val())"
199  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
200  </div>
201 
202  </div>
203  </div>
204 
205 
206 
207  <!-- Troisième colonne -->
208  <div class="col-lg-3 pt-3 bg-warning text-center">
209 
210  <!-- Psychologue -->
211  <div class="row">
212  <div class="col text-left">
213  <h5> Psychologue </h5>
214  </div>
215 
216  <div class="col-md-1">
217  <button value="Psychologue"
218  onclick="eventFire($(this).val())"
219  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
220  </div>
221 
222  <div class="col-md-1">
223  <p id="e5">-</p>
224  </div>
225 
226  <div class="col-md-1 mr-3">
227  <button value="Psychologue"
228  onclick="eventHire($(this).val())"
229  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
230  </div>
231 
232  </div>
233 
234  <!-- Spécialiste -->
235  <div class="row">
236  <div class="col text-left">
237  <h5> Spécialiste </h5>
238  </div>
239 
240  <div class="col-md-1">
241  <button value="Specialiste"
242  onclick="eventFire($(this).val())"
243  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-minus-circle" style="color:black"></em></button>
244  </div>
245 
246  <div class="col-md-1">
247  <p id="e6">-</p>
248  </div>
249 
250  <div class="col-md-1 mr-3">
251  <button value="Specialiste"
252  onclick="eventHire($(this).val())"
253  type="button" class="btn btn-primary-outline p-0"><em class="fas fa-plus-circle" style="color:black"></em></button>
254  </div>
255 
256  </div>
257  </div>
258 
259  <div class="col-md-1 pt-3"></div>
260 
261  </div>
262  </div> <!-- Fin du conteneur -->
263 
264 
265 
266 
267 
268 
269 
270 
271 
272 
273 
274  <!-- Choix des actions -->
275  <div class="container-fluid mt-5">
276  <div class="row justify-content-around">
277 
278  <!-- Première colonne -->
279  <div class="col col-md-3 p-3 bg-dark text-left" style="color:white">
280 
281  <!-- Développeur -->
282  <div class="row pb-3">
283  <div class="col text-left">
284  <h4> Développeur : </h4>
285  </div>
286  </div>
287 
288  <div class="row">
289  <div class="col text-left">
290  <h6 class="ml-5"> Travailler sur l'intéractivité </h6>
291  </div>
292  <div class ="col-md-auto">
293  <button id="a1"
294  value="Developpeur"
295  onclick="eventAction(this)"
296  type="button" class="btn btn-primary-outline p-0 pb-1"
297  style="color:white">
298  <em class="fas fa-clipboard-check fa-1x"></em>
299  </button>
300  </div>
301  </div>
302 
303  <div class="row">
304  <div class="col text-left">
305  <h6 class="ml-5"> Travailler sur la jouabilité </h6>
306  </div>
307  <div class ="col-md-auto">
308  <button id="a2"
309  value="Developpeur"
310  onclick="eventAction(this)"
311  type="button" class="btn btn-primary-outline p-0 pb-1"
312  style="color:white">
313  <em class="fas fa-clipboard-check fa-1x"></em>
314  </button>
315  </div>
316  </div>
317 
318  <div class="row">
319  <div class="col text-left">
320  <h6 class="ml-5"> Rechercher et corriger les bugs </h6>
321  </div>
322  <div class ="col-md-auto">
323  <button id="a3"
324  value="Developpeur"
325  onclick="eventAction(this)"
326  type="button" class="btn btn-primary-outline p-0 pb-1"
327  style="color:white">
328  <em class="fas fa-clipboard-check fa-1x"></em>
329  </button>
330  </div>
331  </div>
332 
333  <!-- Game Designer -->
334  <div class="row pb-3 pt-5">
335  <div class="col text-left">
336  <h4> Game Designer : </h4>
337  </div>
338  </div>
339 
340  <div class="row">
341  <div class="col text-left">
342  <h6 class="ml-5"> Travailler sur la difficulté </h6>
343  </div>
344  <div class ="col-md-auto">
345  <button id="a4"
346  value="GameDesigner"
347  onclick="eventAction(this)"
348  type="button" class="btn btn-primary-outline p-0 pb-1"
349  style="color:white">
350  <em class="fas fa-clipboard-check fa-1x"></em>
351  </button>
352  </div>
353  </div>
354 
355  <div class="row">
356  <div class="col text-left">
357  <h6 class="ml-5"> Travailler l'esthétique </h6>
358  </div>
359  <div class ="col-md-auto">
360  <button id="a5"
361  value="GameDesigner"
362  onclick="eventAction(this)"
363  type="button" class="btn btn-primary-outline p-0 pb-1"
364  style="color:white">
365  <em class="fas fa-clipboard-check fa-1x"></em>
366  </button>
367  </div>
368  </div>
369 
370  <div class="row">
371  <div class="col text-left">
372  <h6 class="ml-5"> Travailler sur le scénario </h6>
373  </div>
374  <div class ="col-md-auto">
375  <button id="a6"
376  value="GameDesigner"
377  onclick="eventAction(this)"
378  type="button" class="btn btn-primary-outline p-0 pb-1"
379  style="color:white">
380  <em class="fas fa-clipboard-check fa-1x"></em>
381  </button>
382  </div>
383  </div>
384 
385  </div>
386 
387 
388 
389  <!-- Deuxième colonne -->
390  <div class="col col-md-3 p-3 bg-dark text-left" style="color:white">
391 
392  <!-- Directeur Marketing -->
393  <div class="row pb-3">
394  <div class="col text-left">
395  <h4> Directeur Marketing : </h4>
396  </div>
397  </div>
398 
399  <div class="row">
400  <div class="col text-left">
401  <h6 class="ml-5"> Réaliser une étude du marché </h6>
402  </div>
403  <div class ="col-md-auto">
404  <button id="a7"
405  value="DirecteurMarketing"
406  onclick="eventAction(this)"
407  type="button" class="btn btn-primary-outline p-0 pb-1"
408  style="color:white">
409  <em class="fas fa-clipboard-check fa-1x"></em>
410  </button>
411  </div>
412  </div>
413 
414  <!-- Sound Designer -->
415  <div class="row pb-3 pt-5">
416  <div class="col text-left">
417  <h4> Sound Designer : </h4>
418  </div>
419  </div>
420 
421  <div class="row">
422  <div class="col text-left">
423  <h6 class="ml-5"> Travailler sur l'ambiance sonore </h6>
424  </div>
425  <div class ="col-md-auto">
426  <button id="a8"
427  value="SoundDesigner"
428  onclick="eventAction(this)"
429  type="button" class="btn btn-primary-outline p-0 pb-1"
430  style="color:white">
431  <em class="fas fa-clipboard-check fa-1x"></em>
432  </button>
433  </div>
434  </div>
435 
436  <div class="row">
437  <div class="col text-left">
438  <h6 class="ml-5"> Acheter une licence sonore </h6>
439  </div>
440  <div class ="col-md-auto">
441  <button id="a9"
442  value="SoundDesigner"
443  onclick="eventAction(this)"
444  type="button" class="btn btn-primary-outline p-0 pb-1"
445  style="color:white">
446  <em class="fas fa-clipboard-check fa-1x"></em>
447  </button>
448  </div>
449  </div>
450 
451  </div>
452 
453 
454 
455  <!-- Troisième colonne -->
456  <div class="col col-md-3 p-3 bg-dark text-left" style="color:white">
457 
458  <!-- Psychologue -->
459  <div class="row pb-3">
460  <div class="col text-left">
461  <h4> Psychologue : </h4>
462  </div>
463  </div>
464 
465  <div class="row">
466  <div class="col text-left">
467  <h6 class="ml-5"> Travailler sur la concentration </h6>
468  </div>
469  <div class ="col-md-auto">
470  <button id="a10"
471  value="Psychologue"
472  onclick="eventAction(this)"
473  type="button" class="btn btn-primary-outline p-0 pb-1"
474  style="color:white">
475  <em class="fas fa-clipboard-check fa-1x"></em>
476  </button>
477  </div>
478  </div>
479 
480  <div class="row">
481  <div class="col text-left">
482  <h6 class="ml-5"> Travailler sur l'affordance </h6>
483  </div>
484  <div class="col-md-auto">
485  <button id="a11"
486  value="Psychologue"
487  onclick="eventAction(this)"
488  type="button" class="btn btn-primary-outline p-0 pb-1"
489  style="color:white">
490  <em class="fas fa-clipboard-check fa-1x"></em>
491  </button>
492  </div>
493  </div>
494 
495  <!-- Spécialiste -->
496  <div class="row pb-3 pt-5">
497  <div class="col text-left">
498  <h4> Spécialiste : </h4>
499  </div>
500  </div>
501 
502  <div class="row">
503  <div class="col text-left">
504  <h6 class="ml-5"> Travailler sur le contenu pédagogique </h6>
505  </div>
506  <div class ="col-md-auto">
507  <button id="a12"
508  value="Specialiste"
509  onclick="eventAction(this)"
510  type="button" class="btn btn-primary-outline p-0 pb-1"
511  style="color:white">
512  <em class="fas fa-clipboard-check fa-1x"></em>
513  </button>
514  </div>
515  </div>
516 
517  </div>
518 
519 
520 
521  </div>
522  </div>
523  <!-- Fin de la section de choix des actions -->
524 
525 
526  <!-- Section d'affichage du bouton de confirmation des choix -->
527  <div class="container mt-5">
528  <div class="row p-0">
529 
530  <div class="col-auto mr-auto">
531 
532 
533  <script type="text/jscript">
534  // Fonction permettant de blocker le clic-droit sur l'iFrame
535  function blockRightClick(){
536  var frame = $('iframe');
537  var contents = frame.contents();
538  var body = contents.find('body').attr("oncontextmenu", "return false");
539  }
540  </script>
541 
542  <iframe id="chart" src="" width="750px" height="500px" frameBorder="0" onload="blockRightClick()"></iframe>
543 
544  </div>
545 
546  <div class="col-auto">
547  <!-- Bouton "Tester mon jeu" -->
548  <div class="row mb-2">
549  <button onclick="testGame()" src="" type="button" class="btn btn-warning btn-perso text-center"> <p class="text-dark font-weight-bold mb-1">Tester mon jeu</p> </button>
550  </div>
551 
552  <!-- Bouton "Confirmer mes choix" -->
553  <div class="row ">
554  <button onclick="confirmChoice()" type="button" class="btn btn-warning btn-perso text-center"> <p class="text-dark font-weight-bold mb-1">Confirmer mes choix</p> </button>
555  </div>
556  </div>
557 
558  </div>
559  </div>
560 
561  </body>
562 
563 
564 
565 
566  <!-- Pied de page -->
567  <footer id="footer" class="container-fluid text-center p-3 bg-dark text-warning">
568  <p> Email : tbdgames@finck.me Téléphone: 3630 (Allô Père-Noël) <small id="pswwarning" class="form-text text-muted">Attention ceci est un numéro surtaxé</a>.</small></p>
569  </footer>
570 
571 
572 
573 </body>
574 
575 
576 
577 
578 
579 
580 
581 
582 
583 
584 <!-- Script JavaScript lorsque le joueur clique sur un bouton -->
585 <script>
586 
587 
588 
589 // Variable globale stockant les identifiants des choix éfféctués par le joueur jusqu'à confirmation
590 var actions_id = [];
591 var actions_job_name = [];
592 
593 // Dictionnaire permettant de lier les ids des zones de texte à modifier concernant le nombre d'employés embauchés, et le nom du métier.
594 var id_name_job = { "#e1": "Developpeur", "#e2":"GameDesigner", "#e3":"DirecteurMarketing", "#e4":"SoundDesigner", "#e5":"Psychologue", "#e6":"Specialiste" };
595 
596 // Dictionnaire permettant de lier les noms des métiers aux ids des différentes actions disponibles pour chacun d'entre eux
597 var name_job_ids = {
598  "Developpeur": ["a1","a2","a3"],
599  "GameDesigner": ["a4","a5","a6"],
600  "DirecteurMarketing": ["a7"],
601  "SoundDesigner": ["a8","a9"],
602  "Psychologue": ["a10","a11"],
603  "Specialiste": ["a12"]
604  };
605 
606 
607 // Est lancé losque la page est prête
608 $(document).ready(function() {
609 
610  update();
611 
612 });
613 
614 
615 /*
616  update
617  Récupère la variable de session php '$_SESSION' et son contenu,
618  Met à jour l'affichage du nombre de jours restants ainsi que
619  le nombre d'employés actuellement embauchés.
620 
621  @author Kellian Goffic
622 */
623 function update() {
624  var session = <?php echo json_encode($_SESSION); ?>;
625 
626  for( var key in id_name_job ) {
627  var value = id_name_job[key];
628 
629  if (typeof session[value] != "undefined" && session[value] != null)
630  $(key).html( String(session[value]) );
631  else
632  $(key).html("0");
633  }
634 
635  if (session["nbDaysLeft"] != null)
636  $("#days").html( String(session["nbDaysLeft"]) );
637  else
638  $("#days").html( "ERREUR" );
639 
640 }
641 
642 
643 /*
644  updateNbEmployees
645  Met à jour les éléments sur la page qui affichent le nombre d'employés embauchés
646  du métier donné métier.
647 
648  @author Kellian Goffic
649  @param string jobName Nom du métier à mettre à jour
650  @param int nbEmployees Nombre d'employés embauchés pour le métier donné
651 */
652 function updateNbEmployees( jobName, nbEmployees ) {
653  var id = Object.keys(id_name_job).find(key => id_name_job[key] === jobName);
654  $(id).html( String(nbEmployees) );
655 }
656 
657 
658 /*
659  updateNbDaysLeft
660  Met à jour les éléments sur la page qui affichent le nombre de jours restants,
661  tel que le compteur sur la gauche de la fenêtre ainsi que la barre de progression en haut de l'écran
662 
663  @author Kellian Goffic
664  @param int nbDaysLeft Nombre de jours restants
665 */
666 function updateNbDaysLeft(nbDaysLeft) {
667  $("#days").html( String(nbDaysLeft) );
668  if ( nbDaysLeft >= 0 ) {
669  prct = 100 - ( ( nbDaysLeft / 6 ) * 100 );
670  $("#bar").css("width",String(prct)+"%");
671  }
672 
673 }
674 
675 
676 /*
677  eventAction
678  Evenement lorsqu'un bouton associé au choix
679  d'une action est cliqué par le joueur.
680 
681  On vérifie si l'id du bouton est déjà présent dans 'actions_id',
682  si oui on le retire et on passe la couleur du bouton au bleu,
683  sinon on l'ajoute et on passe la couleur au vert.
684 
685  @author Kellian Goffic
686  @param ref Référence du bouton appelant
687 */
688 function eventAction(ref) {
689  /*
690  On récupère l'id du bouton appelant ainsi que sa valeur,
691  On enregistre dans index, la position de l'id dans la liste,
692  si il n'est pas présent, -1 est enregistré.
693  */
694  var id = ref.id;
695  var value = String($(ref).val()); // On obtient ici la valeur du bouton, dans lequel le nom du métier concerné est enregistré.
696  var index = actions_id.indexOf(id);
697 
698  if (index > -1) {
699  // Si l'id est présent dans la liste,
700  // on le retire et change la couleur du bouton par celle par défaut
701 
702  // on retire le nom du métier de la liste
703  actions_job_name.splice( actions_job_name.indexOf(value), 1 );
704  // on retire l'id de l'action de la liste
705  actions_id.splice(index, 1);
706  // on change remet la couleur par défaut du bouton en blanc
707  $(ref).css("color","white");
708  }
709  else if ( actions_job_name.indexOf(value) == -1 ) {
710  // Si l'id n'est pas présent dans la liste,
711  // et qu'aucune autres actions du même métier sont présentes
712 
713  for ( var e_id in id_name_job ) {
714  if ( id_name_job[e_id] == value ) {
715  if ( parseInt( document.getElementById( e_id.substring(1) ).innerHTML ) == 0 ) {
716  alert("Tu dois avoir un " + value + "\npour pouvoir effectuer cette action !");
717  return;
718  }
719  }
720  }
721 
722  // on ajoute le nom du métier à la liste
723  actions_job_name.push(value);
724  // on ajoute l'id de l'action a la liste
725  actions_id.push(id);
726  // on passe la couleur du bouton de blanc à vert
727  $(ref).css("color","green");
728  }
729  else {
730  // Si l'id n'est pas dans la liste, mais une autre action du même métier est déjà selectionnée,
731  // on déselectionne la plus ancienne pour ensuite selectionner l'actuelle
732 
733  for ( var name_job in name_job_ids ) {
734  if ( name_job == value ) {
735  // on cherche les ids pour le même nom de métier
736 
737  var ids = name_job_ids[name_job];
738  for ( key in ids ) {
739  // on cherche l'index de l'action courante dans la liste des actions déjà selectionnées
740  var index = actions_id.indexOf(ids[key]);
741  if ( index > -1 ) {
742  // lorsqu'on trouve l'action déjà selectionnée, on l'a déselectionne
743  // on retire l'id de l'ancienne action de la liste
744  actions_id.splice(index, 1);
745  // on repasse le bouton de l'ancienne action à la couleur blanche
746  $("#"+ids[key]).css("color","white");
747  }
748  }
749  }
750  }
751 
752  // on ajoute l'id de la nouvelle action à la liste
753  actions_id.push(id);
754  // on change la couleur du bouton de blanc à vert
755  $(ref).css("color","green");
756  }
757 }
758 
759 
760 /*
761  eventFire
762  Evenement lorsqu'un bouton associé au choix
763  de licenciement d'un employé est cliqué par le joueur.
764  On appelle alors le fichier ajax_requests.php avec en POST les données
765  correspondantes à la fonction appelée (ici 'fire') et au nom du job du quel
766  le joueur veut licencier un employé.
767 
768  @author Kellian Goffic
769  @param value Valeur du bouton contenant le nom du métier.
770 */
771 function eventFire(value) {
772  $.ajaxSetup({
773  headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
774  });
775 
776  $.ajax( {
777  url: "ajax_requests",
778  type: "POST",
779  data: {function: "fire", jobName: String(value)},
780  success: function(data) {
781  if (data < 0)
782  alert("Impossible de licencier des employés immaginaires !");
783  else {
784  updateNbEmployees( String(value), data );
785 
786  if ( data == 0 ) {
787  // On déselectionne les actions précédements selectionnées
788 
789  for ( var name_job in name_job_ids ) {
790  if ( name_job == String(value) ) {
791  // on cherche les ids pour le même nom de métier
792 
793  var ids = name_job_ids[name_job];
794  for ( key in ids ) {
795  // on cherche l'index de l'action courante dans la liste des actions déjà selectionnées
796  var index = actions_id.indexOf(ids[key]);
797  if ( index > -1 ) {
798  // lorsqu'on trouve l'action déjà selectionnée, on l'a déselectionne
799  // On retire le nom du métier de la liste correspondante
800  actions_job_name.splice( actions_job_name.indexOf(String(value)) );
801  // on retire l'id de l'ancienne action de la liste
802  actions_id.splice(index, 1);
803  // on repasse le bouton de l'ancienne action à la couleur blanche
804  $("#"+ids[key]).css("color","white");
805  }
806  }
807 
808  }
809  }
810  }
811 
812  }
813  }
814  });
815 }
816 
817 
818 /*
819  eventHire
820  Evenement lorsqu'un bouton associé au choix
821  de recrutement d'un employé est cliqué par le joueur.
822  On appelle alors le fichier ajax_requests.php avec en POST les données
823  correspondantes à la fonction appelée (ici 'hire') et au nom du job du quel
824  le joueur veut recruter un employé.
825 
826  @author Kellian Goffic
827  @param value Valeur du bouton contenant le nom du métier.
828 */
829 function eventHire(value) {
830  $.ajaxSetup({
831  headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
832  });
833 
834  $.ajax( {
835  url: "ajax_requests",
836  type: "POST",
837  data: {function: "hire", jobName: String(value)},
838  success: function(data) {
839  if (data < 0)
840  alert("Limite d'employés atteinte !");
841  else
842  updateNbEmployees( String(value), data );
843  }
844  });
845 }
846 
847 
848 /*
849  confirmChoice
850  Evenement lancé par le bouton 'confirmer mes choix"
851  Emet une requête via Ajax afin d'executer les différentes actions
852  choisies par l'utilisateur, réinitialise ensuite la couleur des boutons des actions,
853  et vide les liste temporaires des actions.
854 
855  @author Kellian goffic
856 */
857 function confirmChoice() {
858  if ( actions_id.length <= 0 )
859  return;
860 
861  $.ajaxSetup({
862  headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
863  });
864 
865  $.ajax( {
866  url: "ajax_requests",
867  type: "POST",
868  data: {function: "action", actions: JSON.stringify(actions_id) },
869  success: function(data) {
870  // data contient le nombre de jours restant
871  // on met à jour l'affichage
872  updateNbDaysLeft(data);
873 
874  // si le nombre de jours est écoulé, on renvoit sur la page de résultat.
875  if (data <= 0) {
876  $.ajax( {
877  url: "results",
878  type: "GET",
879  success: function(data) {
880  $("html").html(data);
881  }
882  });
883  }
884  }
885  });
886 
887  // On repasse tous les boutons à la couleur blanche par défaut
888  for ( key in actions_id ) {
889  $("#"+actions_id[key]).css("color","white");
890  }
891 
892  // on vide les tableaux contenants les actions choisies.
893  actions_id = [];
894  actions_job_name = [];
895 
896  // On cache le cadre d'affichage des résultats
897  document.getElementById("chart").style.display = "none";
898 }
899 
900 
901 function testGame() {
902  if ( confirm("Voulez vous consacrer une journée au test de votre jeu ?") ) {
903  // On demande confirmation au joueur
904 
905  // On récupère l'element iFrame et on change la source ainsi que l'affichage afin que le cadre s'affiche
906  var elt = document.getElementById("chart");
907  elt.src = "chart";
908  elt.style.display = "block";
909 
910  $.ajaxSetup({
911  headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
912  });
913 
914  $.ajax( {
915  url: "ajax_requests",
916  type: "POST",
917  data: {function: "testGame"},
918  success: function(data) {
919  updateNbDaysLeft(data);
920  if (data <= 0) {
921  $.ajax( {
922  url: "results",
923  type: "GET",
924  success: function(data) {
925  $("html").html(data);
926  document.main.style.backgroundColor = "#2C2C39";
927  }
928  });
929  }
930  }
931  });
932  }
933 
934 }
935 
936 
937 
938 </script>
939 
940 </html>