/// <summary> /// Função que será utilizada para criar a plateia /// </summary> /// <param name="focoEm">Onde se deve ter a maioria das pessoas</param> /// <param name="quant">A quantidade média de pessoas que deve estar na plateia</param> /// <param name="animacaoDaPlateia">A animação média da plateia</param> public void CriarPlateia(Localizacao focoEm, QuantidadePlateia quant, Animo animacaoDaPlateia, VariacaoAnimo variacao) { List <Posicao> posicoesParaInstanciar; inst.EliminarPlateia(); //Matemagica aqui; Valor base é usado para determinar a quantidade de pessoas que vai ter na posição em foco //E também vai ser utilizado para determinar a quantidade de pessoas em outras posições float valorBase = 0; RetornarPorcentagem(quant, out valorBase); if (valorBase == 0) { return; } else if (valorBase == 1) { posicoesParaInstanciar = banqueta.RetornarPosicoes(1, 1, 1, 1, 1); } else //Momento da matemagica. Aqui tem que dar um jeito de retornar aleatorizar as posições de sentar dos avatares { float[] por = RetornarPorcentagemNasPosicoes(focoEm, valorBase); posicoesParaInstanciar = banqueta.RetornarPosicoes(por[0], por[1], por[2], por[3], por[4]); } float[] porAnimo = RetornarPorcentagemDeAnimo(animacaoDaPlateia, variacao); Debug.Log("Porcentagem dos animos:\n"); for (int i = 0; i < 6; i++) { Debug.Log(porAnimo[i] + "\n"); } inst.InstanciarPlateia(pessoasDaPlateia, posicoesParaInstanciar, porAnimo); }
void RetornarPorcentagem(QuantidadePlateia quant, out float valorBase) { valorBase = 0; switch (quant) { case QuantidadePlateia.VAZIO: valorBase = 0; break; case QuantidadePlateia.QUASE_VAZIO: valorBase = 0.15f; break; case QuantidadePlateia.MUITO_POUCO: valorBase = 0.25f; break; case QuantidadePlateia.POUCO: valorBase = 0.4f; break; case QuantidadePlateia.MEDIO: valorBase = 0.5f; break; case QuantidadePlateia.BASTANTE: valorBase = 0.7f; break; case QuantidadePlateia.QUASE_LOTADO: valorBase = 0.85f; break; case QuantidadePlateia.LOTADO: valorBase = 1; break; } }