-
Guillaume Meinesz authored
fix ticket# + ce sont maintenant les choix.id qui sont enregistrés dans le fichier traces et s'il n'y a pas de choix.id, le choix.son
de463a28
QCM_manager.cs 9.81 KiB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static ChargementJSONStructure;
using static mainManager;
public class QCM_manager : MonoBehaviour
{
public mainManager mM;
public void playStepsQCM()
{
bool playswitch = true;
bool enditemToBeLaunched = false;
while (playswitch)
{
playswitch = false;
switch (mM.current_step)
{
case -1:
mM.texteCheat.text += "\nPret";
bool uneImageExiste = mM.executeAsset(mM.i.pret, null,true);
bool unSonExiste = mM.executeAsset(mM.i.pret, mM.flecheReadyDisplayed,false);
if (!unSonExiste || !uneImageExiste)
{
mM.playerTurn = false;
//Debug.LogError("pas d'image on poursuit");
// si il n'y a ni image ni son dans cet asset, on poursuit :
playswitch = true;
} // correspond aux step 0 et 1 du droulement dans
else
{
//Debug.LogError("quelquechose existe");
}
break;
case 0:
Debug.Log("on destroy image pricnipale");
if (mM.posScript.currentlyInstanciatedprefabImagePrincipale != null)
{
Destroy(mM.posScript.currentlyInstanciatedprefabImagePrincipale.gameObject);
}
if (!mM.sessionConsignebeenPlayed)
{
mM.texteCheat.text += "\nSession";
mM.sessionConsignebeenPlayed = true;
if (mM.executeAsset(mM.s.consigne, null, true))
{
Debug.Log("on refait apparaitre image pricnipale");
mM.posScript.currentlyInstanciatedprefabImagePrincipale.gameObject.SetActive(true);
} // consigne de la session (absente du droulement)
mM.executeAsset(mM.s.consigne, mM.playSteps,false); // consigne de la session (absente du droulement)
}
else { playswitch = true; }
break;
case 1:
Debug.Log("on destroy image pricnipale");
if (mM.posScript.currentlyInstanciatedprefabImagePrincipale != null)
{
Destroy(mM.posScript.currentlyInstanciatedprefabImagePrincipale.gameObject);
}
if (!mM.epreuveConsignebeenPlayed)
{
mM.texteCheat.text += "\nEpreuve id=" + mM.e.id;
mM.epreuveConsignebeenPlayed = true;
if(mM.executeAsset(mM.e.consigne, null, true))
{
Debug.Log("on refait apparaitre image pricnipale");
mM.posScript.currentlyInstanciatedprefabImagePrincipale.gameObject.SetActive(true);
} // consigne de l'preuve (absente du droulement)
mM.executeAsset(mM.e.consigne, mM.playSteps,false); // consigne de l'preuve (absente du droulement)
}
else { playswitch = true; }
break;
case 2:
mM.texteCheat.text += "\nItem id=" + mM.i.id + " type=" + mM.i.type;
if(mM.executeAsset(mM.i.fond, null, true))
{
mM.posScript.currentlyInstanciatedprefabImagePrincipale.gameObject.SetActive(true);
}
mM.executeAsset(mM.i.consigne, mM.playSteps,false); // consigne de l'item (prsent dans le droulement)
break;
case 3: // instancition + Liste CHOIX (en QCM) OU TOUCHER LES CHOIX (en GD tuto seulement !)
if (mM.list_choix_associed_with_prefabs != null)
{
mM.list_choix_associed_with_prefabs.Clear();
}
mM.list_choix_associed_with_prefabs = new List<groupemementChoixEtPrefabBoutonQCM>();
foreach (Choix ccc in mM.i.choix)
{
if (((ccc.id != null && ccc.id.Length > 0) || (ccc.son != null && ccc.son.Length > 0))&& mM.jsonStructureScript.checkifitemexists(ccc.image,true))
{
groupemementChoixEtPrefabBoutonQCM q = new groupemementChoixEtPrefabBoutonQCM();
q.choix = ccc;
mM.list_choix_associed_with_prefabs.Add(q);
}
else
{
// choix pas elligible car pas de string son
}
}
if(mM.list_choix_associed_with_prefabs.Count > 0)
{
if (mM.i.randomiser)
{
mM.list_choix_associed_with_prefabs.Sort((a, b) => UnityEngine.Random.Range(-1, 2));
}
mM.posScript.CalculateAlignment(mM.list_choix_associed_with_prefabs);
mM.instancieAndPlayCHoix();
}
else
{
Debug.Log("QCM error no image to display this item, lets go to the next one");
mM.current_step = 10;
}
break;
case 4: // EXPLICATION (prsent dans le droulement)
if (mM.i.type == "tuto" && mM.i.explication != null && mM.i.explication.Length > 0)
{
if (mM.i.surlignerExplication >= 0.0f)
{
foreach (groupemementChoixEtPrefabBoutonQCM b in mM.list_choix_associed_with_prefabs)
{
if (b.choix.correct)
{
Debug.Log("choix correct explication doit clignoter i.surlignerExplication=" + mM.i.surlignerExplication);
b.boutonqcmAssocied.clignote(mM.i.surlignerExplication);
}
}
}
mM.executeAsset(mM.i.explication, mM.playSteps, false);
// plus on fait clignoter le bon resultat
}
else { playswitch = true; }
break;
case 5: // MISE EN ACTION (prsent dans le droulement)
mM.user_dureeActionOnChoix = 0.0f;
mM.user_choix = "";
mM.scoreItem = -1;
mM.user_choixPossibles = new string[mM.i.choix.Count];
for (int indexi = 0; indexi < mM.i.choix.Count; indexi++)
{
if (mM.i.choix[indexi].id != null)
{
mM.user_choixPossibles[indexi] = mM.i.choix[indexi].id;
}
else if (mM.i.choix[indexi].son!=null)
{
mM.user_choixPossibles[indexi] = mM.i.choix[indexi].son;
}
}
if (mM.i.type == "tuto" && mM.i.miseEnAction != null && mM.i.miseEnAction.Length > 0)
{ mM.executeAsset(mM.i.miseEnAction, mM.playerturnnow,false); }
else { mM.playerturnnow(); }
break;
case 6:
mM.user_dureeActionOnChoix = Time.time - mM.actionUtilisateurStartTimeItem;
// action utilisateur vient d'avoir lieu
playswitch = true;
break;
case 7:
if ((mM.i.type == "tuto" || mM.i.type == "training") && mM.c.feedback != null && mM.c.feedback.Length > 0)
{ mM.executeAsset(mM.c.feedback, mM.playSteps,false); }
else { playswitch = true; }
break;
case 8:
// Mise jour score + stockage de la rponse
mM.newSystemeDeTraces.writeNewTrace_internal();
playswitch = true;
break;
case 9:
// Explication
playswitch = true;
break;
case 10: // transition le son est manquant actuellement
mM.executeAsset(mM.i.transition, mM.playSteps,false);
break;
case 11: // transition le son est manquant actuellement
enditemToBeLaunched = true;
break;
default: break;
}
mM.current_step++;
mM.texteCheat.text += "/" + mM.current_step;
if (enditemToBeLaunched)
{
playswitch = false;
mM.endItem();
}
}
}
public void QCM_objectClicked(ChargementJSONStructure.Choix c1)
{
mM.c = c1;
mM.playerTurn = false;
if (mM.c.correct)
{
mM.scoreItem = 1;
}
else
{
mM.scoreItem = 0;
}
mM.user_choix = mM.c.son;
foreach (groupemementChoixEtPrefabBoutonQCM cc in mM.list_choix_associed_with_prefabs)
{
Destroy(cc.boutonqcmAssocied.gameobj);
}
mM.list_choix_associed_with_prefabs.Clear();
Debug.Log("object clicked");
mM.playSteps(); // on lance le feedback
}
}