コード例 #1
0
    public void AtualizarPerfil()
    {
        perfilSelecionado.perfil.nomeEmpresa = nomeEmpresa.text;
        perfilSelecionado.perfil.nomeJogador = nomeJogador.text;
        perfilSelecionado.perfil.novoPerfil  = false;

        // TODO(andre:2018-06-30): Criar interface grafica para criar a metodologia.
        EtapaMetodologia etapaPlanejamento    = new EtapaMetodologia(TipoEtapaMetodologia.Planejamento, 1.0f, 3.0f);
        EtapaMetodologia etapaDesenvolvimento = new EtapaMetodologia(TipoEtapaMetodologia.Desenvolvimento, 1.0f, 3.0f);
        EtapaMetodologia etapaValidacao       = new EtapaMetodologia(TipoEtapaMetodologia.Validacao, 1.0f, 3.0f);
        EtapaMetodologia etapaConcluir        = new EtapaMetodologia(TipoEtapaMetodologia.Concluir, 2.0f);

        Metodologia metodologia = new Metodologia();

        metodologia.etapas.Add(etapaPlanejamento);
        metodologia.etapas.Add(etapaDesenvolvimento);
        metodologia.etapas.Add(etapaValidacao);
        metodologia.etapas.Add(etapaConcluir);

        listaMetodologias.metodologias = new List <Metodologia>();
        listaMetodologias.metodologias.Add(metodologia);
        metodologiaAtual.indiceMetodologia = 0;
        metodologiaAtual.metodologia       = listaMetodologias.metodologias[metodologiaAtual.indiceMetodologia];

        Funcionario funcionario = new Funcionario(10, 10, 10, 10);

        listaFuncionarios.funcionarios = new List <Funcionario>();
        listaFuncionarios.funcionarios.Add(funcionario);
    }
コード例 #2
0
    public void DesenvolverProjeto(ProjetoAtual projetoAtual, DadosPerfil perfil, EtapaMetodologia etapaMetodologia)
    {
        Projeto     projeto = projetoAtual.projeto;
        Prioridades prioridadesEscolhidasNormalizadas = projetoAtual.prioridadesEscolhidas.Normalizada();

        // TODO(andre:2018-06-30): Usar data interna do jogo pra calcular o progresso
        float tempoPassado = Time.deltaTime;

        progresso += tempoPassado;

        float pontosDesign     = etapaMetodologia.ObterMultiplicadorDesign(projeto, prioridadesEscolhidasNormalizadas);
        float pontosTecnologia = etapaMetodologia.ObterMultiplicadorTecnologia(projeto, prioridadesEscolhidasNormalizadas);
        // TODO(andre:2018-07-01): Definir como são gerados os pontos de erro
        float pontosErro = 0;
        // TODO(andre:2018-07-01): Definir como são gerados os pontos de pesquisa
        float pontosPesquisa = 0.15f;

        pontosDesign     *= tempoPassado * habilidadeDesign;
        pontosTecnologia *= tempoPassado * habilidadeTecnologia;
        pontosErro       *= tempoPassado * 10;
        pontosPesquisa   *= tempoPassado * habilidadePesquisa;

        // TODO(andre:2018-06-30): Utilizar aleatoriedade
        pontosDesignAcumulados     += pontosDesign;
        pontosTecnologiaAcumulados += pontosTecnologia;
        pontosErroAcumulados       += pontosErro;
        pontosPesquisaAcumulados   += pontosPesquisa;

        if (ultimaAtualizacao + etapaMetodologia.frequenciaAtualizacao < progresso)
        {
            ultimaAtualizacao = progresso;

            float pontosDesignGerados     = Random.Range(pontosDesignAcumulados * 0.5f, pontosDesignAcumulados);
            float pontosTecnologiaGerados = Random.Range(pontosTecnologiaAcumulados * 0.5f, pontosTecnologiaAcumulados);
            float pontosErroGerados       = Random.Range(pontosErroAcumulados * 0.5f, pontosErroAcumulados);
            float pontosPesquisaGerados   = Random.Range(pontosPesquisaAcumulados * 0.1f, pontosPesquisaAcumulados);

            Debug.Log("Pontos gerados: " + pontosDesignGerados + " | " + pontosTecnologiaGerados + " | " + pontosErroGerados + " | " + pontosPesquisaGerados);

            projeto.pontosDesign     += (int)pontosDesignGerados;
            projeto.pontosTecnologia += (int)pontosTecnologiaGerados;
            projeto.pontosErro       += (int)pontosErroGerados;
            perfil.pontosPesquisa    += (int)pontosPesquisaGerados;

            pontosDesignAcumulados     = 0;
            pontosTecnologiaAcumulados = 0;
            pontosErroAcumulados       = 0;
            pontosPesquisaAcumulados   = 0;
        }
    }
コード例 #3
0
    IEnumerator AtualizarMetodologia()
    {
        float            progressoEtapa = 0;
        Metodologia      metodologia    = metodologiaAtual.metodologia;
        EtapaMetodologia etapaAtual     = metodologia.ObterEtapaAtual();

        if (etapaAtual.temDuracao)
        {
            while (progressoEtapa < etapaAtual.duracao)
            {
                progressoEtapa += Time.deltaTime;
                foreach (Funcionario funcionario in listaFuncionariosContratados.funcionarios)
                {
                    funcionario.DesenvolverProjeto(projetoAtual, perfilSelecionado.perfil, etapaAtual);
                }

                // GAMBIARRA: A ideia é que como a ultima etapa não tem tempo para concluir essa conta deveria funcionar de modo diferente
                // projetoAtual.progresso = (metodologia.indiceEtapaAtual + (progressoEtapa / etapaAtual.duracao)) / (float)metodologia.etapas.Count;
                projetoAtual.progresso = (metodologia.indiceEtapaAtual + (progressoEtapa / etapaAtual.duracao)) / ((float)metodologia.etapas.Count - 1);
                eventoAtualizarProgresso.Invoke();

                yield return(null);
            }
        }
        else
        {
            avancarEtapaMetodologiaSemDuracao = false;
            while (!avancarEtapaMetodologiaSemDuracao)
            {
                foreach (Funcionario funcionario in listaFuncionariosContratados.funcionarios)
                {
                    funcionario.DesenvolverProjeto(projetoAtual, perfilSelecionado.perfil, etapaAtual);
                }

                // GAMBIARRA: A ideia é que por não ter tempo para concluir essa etapa deveria funcionar de modo diferente
                // projetoAtual.progresso = (float)(metodologia.indiceEtapaAtual + 1) / (float)metodologia.etapas.Count;
                projetoAtual.progresso = 1;
                eventoAtualizarProgresso.Invoke();

                yield return(null);
            }
        }

        metodologia.indiceEtapaAtual += 1;

        if (metodologia.indiceEtapaAtual >= metodologia.etapas.Count)
        {
            metodologia.indiceEtapaAtual = 0;
            ConcluirProjeto();
        }
        else
        {
            eventoAvancarEtapaMetodologia.Invoke();

            // MUITA GAMBIARRA
            // A etapa de conclusão não tem uma interface para comecar ela
            if (metodologia.ObterTipoEtapa() == TipoEtapaMetodologia.Concluir)
            {
                ComecarEtapaMetodologia();
            }
        }
    }