private void ConfigurarFalasDeFeedback(ClassManager classManager, CustomGameSettings settings) { // Configurar feedback geral sobre a aula do professor também? // ... // Configurar falas de feedback específicas sobre as mídias // Para cada momento, um aluno na sala falará sobre a mídia escolhida // para aquele momento da aula // Obter feedbacks escritos pelo criador do custom CreateCustomGamePanel.MidiaPoderFeedback[][] arraysMPF = { settings.ArrayMidiaPoderFeedbackMomento1, settings.ArrayMidiaPoderFeedbackMomento2, settings.ArrayMidiaPoderFeedbackMomento3, }; foreach (var arrayMPF in arraysMPF) { if (arrayMPF == null) { return; } } // Criar 3 Dictionary, um para cada momento, para guardarem o link entre // uma mídia e o seu feedback var feedbacksPorMidiaNoMomento1Custom = new Dictionary <ItemName, string>(); var feedbacksPorMidiaNoMomento2Custom = new Dictionary <ItemName, string>(); var feedbacksPorMidiaNoMomento3Custom = new Dictionary <ItemName, string>(); Dictionary <ItemName, string>[] feedbacksPorMidiaArray = { feedbacksPorMidiaNoMomento1Custom, feedbacksPorMidiaNoMomento2Custom, feedbacksPorMidiaNoMomento3Custom }; // Guardar as informações escritas pelo criador nos Dictionary // Depois, esses Dictionary serão usados para instanciar um objeto da // classe FeedbacksDosAlunos for (var momento = 0; momento < 3; momento++) { var quantidadeMidias = arraysMPF[momento].Length; for (var j = 0; j < quantidadeMidias; j++) { var mpf = arraysMPF[momento][j]; feedbacksPorMidiaArray[momento][mpf.Midia] = mpf.Feedback; } } // Configurar falas de feedback gerais sobre a aula string[] feedbacksAulaMelhor = { "A aula foi incrível!" }; string[] feedbacksAulaMuitoBoa = { "A aula foi muito boa!" }; string[] feedbacksAulaBoa = { "A aula foi boa!" }; string[] feedbacksAulaFraca = { "A aula foi ruim..." }; // Criar novo objeto FeedbacksDosAlunos, que conterá falas específicas // sobre as mídias e falas gerais sobre a aula de acordo com as escolhas // feitas pelo criador da missão custom FeedbacksDosAlunos feedbacksDosAlunos = new FeedbacksDosAlunos ( feedbacksPorMidiaNoMomento1Custom, feedbacksPorMidiaNoMomento2Custom, feedbacksPorMidiaNoMomento3Custom, feedbacksAulaMelhor, feedbacksAulaMuitoBoa, feedbacksAulaBoa, feedbacksAulaFraca ); // Pedir para o ClassManager configurar as falas dos alunos // comentaristas com os feedbacks custom classManager.AlunosComentaristasSetUp(feedbacksDosAlunos); }
public void AlunosComentaristasSetUp(FeedbacksDosAlunos feedbacks) { // Obter feedbacks gerais sobre a aula var missaoAtual = Player.Instance.missionID; var historicoDaMissao = Player.Instance.MissionHistory[missaoAtual]; var pontuacaoDaAula = historicoDaMissao.totalMissionPoints; var feedbacksGerais = feedbacks.ObterFeedbacksGeraisDaAula(pontuacaoDaAula); var alunosComComentariosGerais = 0; var alunosComComentariosSobreMidias = 0; // Dar os feedbacks corretos para os alunos na sala de aula for (int i = 0; i < alunosComentaristas.Length; i++) { // Construção de um objeto diálogo para o aluno i Dialogo d = new Dialogo(); d.nodulos = new DialogoNodulo[1]; d.nodulos[0] = new DialogoNodulo(); d.nodulos[0].falas = new Fala[1]; d.nodulos[0].falas[0] = new Fala(); d.nodulos[0].falas[0].emocao = Expressao.Serio; d.nodulos[0].falas[0].personagem = Personagens.Aluno; // Obter componente que irá receber o diálogo recém criado var npcDialogoComponent = alunosComentaristas[i].GetComponent <NpcDialogo>(); // Se i < 3, distribuir feedbacks específicos sobre as mídias if (i < 3) { var momentoAtual = i; // Obter feedbacks por mídia considerando o momento atual da aula // Momento 1 = 0; Momento 2 = 1; Momento 3 = 2 Dictionary <ItemName, string> feedbacksPorMidia; switch (momentoAtual) { default: feedbacksPorMidia = feedbacks.FeedbacksPorMidiaNoMomento1; break; case 1: feedbacksPorMidia = feedbacks.FeedbacksPorMidiaNoMomento2; break; case 2: feedbacksPorMidia = feedbacks.FeedbacksPorMidiaNoMomento3; break; } // Obter feedback para a mídia selecionada var midiaSelecionada = historicoDaMissao.chosenMedia[momentoAtual]; var feedbackParaEstaMidiaSelecionada = feedbacksPorMidia[midiaSelecionada]; // Colocar feedback na fala do aluno d.nodulos[0].falas[0].fala = feedbackParaEstaMidiaSelecionada; alunosComComentariosSobreMidias++; } // Se i >= 3, distribuir feedbacks gerais sobre a aula else { // Se não há falas novas para o aluno, usar fala 0 if (alunosComComentariosGerais >= feedbacksGerais.Length) { d.nodulos[0].falas[0].fala = feedbacksGerais[0]; } else { d.nodulos[0].falas[0].fala = feedbacksGerais[alunosComComentariosGerais]; } alunosComComentariosGerais++; } npcDialogoComponent.dialogoPrincipal = d; // Apagar link antigo, se existir npcDialogoComponent.OnEndDialogueEvent -= AceitarFeedbackDeUmAluno; // Adicionar link novo npcDialogoComponent.OnEndDialogueEvent += AceitarFeedbackDeUmAluno; } }