public Projeto GerarProjeto(float dificuldade) { // TODO(andre:2018-06-10): Uma possibilidade seria implementar uma // reputação do jogador com os diferentes tipos de empresa e usar isso // para decidir quais projetos seriam sugeridos // https://stackoverflow.com/questions/9956486/distributed-probability-random-number-generator List <DescricaoTipoEmpresa> possiveisEmpresas = new List <DescricaoTipoEmpresa>(); foreach (DescricaoTipoEmpresa descricaoTipoEmpresa in descricaoTiposEmpresas) { if (dificuldade >= descricaoTipoEmpresa.dificuldadeMinima && dificuldade <= descricaoTipoEmpresa.dificuldadeMaxima) { possiveisEmpresas.Add(descricaoTipoEmpresa); } } DescricaoTipoEmpresa tipoSelecionado = possiveisEmpresas[Random.Range(0, possiveisEmpresas.Count)]; string tipoEmpresa = tipoSelecionado.tipoEmpresa; // TODO(andre:2018-06-10): Permitir gerar nomes e descricoes aleatorias string nomeEmpresa = tipoSelecionado.nomeEmpresa; string descricao = tipoSelecionado.descricaoProjeto; float pagamento = (float)System.Math.Round(Random.Range(tipoSelecionado.pagamentoMinimo, tipoSelecionado.pagamentoMaximo), 2); float multa = (float)System.Math.Round(Random.Range(tipoSelecionado.multaMinima, tipoSelecionado.multaMaxima), 2); int tamanho = Random.Range(tipoSelecionado.tamanhoMinimo, tipoSelecionado.tamanhoMaximo); float experienciaUsuario = Random.Range(tipoSelecionado.experienciaUsuarioMinima, tipoSelecionado.experienciaUsuarioMaxima); int pontosDesignEsperado = Random.Range(tipoSelecionado.pontosDesignEsperadoMinimo, tipoSelecionado.pontosDesignEsperadoMaximo); int pontosTecnologiaEsperado = Random.Range(tipoSelecionado.pontosTecnologiaEsperadoMinimo, tipoSelecionado.pontosTecnologiaEsperadoMaximo); // Prioridades prioridadesDesign = new Prioridades(); // TODO(andre:2018-06-10): Gerar variacoes nos valores bases com base nos demais parametros // prioridadesDesign.coletaDados = tipoSelecionado.prioridadeColetaDadosBase; // prioridadesDesign.estudoDominio = tipoSelecionado.prioridadeEstudoDominioBase; // prioridadesDesign.documentacao = tipoSelecionado.prioridadeDocumentacaoBase; // prioridadesDesign.legibilidade = tipoSelecionado.prioridadeLegibilidadeBase; // prioridadesDesign.qualidadeSolucao = tipoSelecionado.prioridadeQualidadeSolucaoBase; // prioridadesDesign.desenvolvimentoInterface = tipoSelecionado.prioridadeDesenvolvimentoInterfaceBase; // prioridadesDesign.testes = tipoSelecionado.prioridadeTestesBase; // prioridadesDesign.avaliacaoCliente = tipoSelecionado.prioridadeAvaliacaoClienteBase; // prioridadesDesign.implantacao = tipoSelecionado.prioridadeImplantacaoBase; Prioridades prioridadesDesign = new Prioridades(tipoSelecionado.prioridadesDesignBase); Prioridades prioridadesTecnologia = new Prioridades(tipoSelecionado.prioridadesTecnologiaBase); Projeto projeto = new Projeto(tipoEmpresa, nomeEmpresa, descricao, pagamento, multa, tamanho, experienciaUsuario, pontosDesignEsperado, pontosTecnologiaEsperado, prioridadesDesign, prioridadesTecnologia, tipoSelecionado); return(projeto); }
public Projeto(string tipoEmpresa, string nomeEmpresa, string descricao, float valorPagamento, float multaAtraso, int tamanhoEmpresa, float experienciaUsuario, int pontosDesignEsperado, int pontosTecnologiaEsperado, Prioridades prioridadesDesign, Prioridades prioridadesTecnologia, DescricaoTipoEmpresa descricaoTipoEmpresa = null) { this.tipoEmpresa = tipoEmpresa; this.nomeEmpresa = nomeEmpresa; this.descricao = descricao; this.valorPagamento = valorPagamento; this.multaAtraso = multaAtraso; this.tamanhoEmpresa = tamanhoEmpresa; this.experienciaUsuario = experienciaUsuario; this.pontosTecnologiaEsperado = pontosTecnologiaEsperado; this.pontosDesignEsperado = pontosDesignEsperado; this.prioridadesDesign = prioridadesDesign; this.prioridadesTecnologia = prioridadesTecnologia; this.descricaoTipoEmpresa = descricaoTipoEmpresa; this.dicaProjeto = ""; }