Example #1
0
    private float decidirRecursosExploracion(ref int puntosDisponibles)
    {
        if (puntosDisponibles <= MINIMO_VIABLE_EXPLORACION)
        {
            return(0f);
        }

        int asignacion = 0;

        //este rol se ocupara de explorar
        //su prioridad se basa en el numero de recursos que conoce y la localizacion de las capitales enemigas
        //si las conoce, movera poco y no empleara todos los recursos

        //si no hay exploradores, creamos uno
        if (jug.Exploradores <= 0 && GlobalData.COSTE_PA_CREACION_EXPLORADOR <= puntosDisponibles)
        {
            if (partidaActual.GetTurnos() <= 2)
            {
                puntosDisponibles -= GlobalData.COSTE_PA_CREACION_EXPLORADOR * 3;
                asignacion        += GlobalData.COSTE_PA_CREACION_EXPLORADOR * 3;
            }
            puntosDisponibles -= GlobalData.COSTE_PA_CREACION_EXPLORADOR;
            asignacion        += GlobalData.COSTE_PA_CREACION_EXPLORADOR;
        }

        if (StageData.currentInstance.GetPartidaActual().Jugadores[StageData.currentInstance.GetPartidaActual().JugadorActual.idJugador].posicionRecursosEncontrados.Count <= 5)
        {
            puntosDisponibles -= StageData.COSTE_PA_MOVER_UNIDAD * (5 - recursosConocidos);
            asignacion        += StageData.COSTE_PA_MOVER_UNIDAD * (5 - recursosConocidos);
        }

        //ajuste de la asignacion, la exploracion no debe superar el 50% despues del segundo turno
        float definitivo = asignacion;// / (float)puntosAccionIniciales;

        if (partidaActual.GetTurnos() < 2)
        {
            if (definitivo > 1)
            {
                definitivo = 1f;
            }
        }
        else
        {
            if (definitivo > 0.5f)
            {
                definitivo = 0.5f;
            }
        }
        return(definitivo);
    }