#!/system/bin/sh

LOG_FILE="/data/local/tmp/optimizer.log"
APPS_LIST="/data/local/tmp/gaming_apps.txt"
MODULE_PATH="/data/adb/modules/auto_game_optimizer"

if [ "$(id -u)" -ne 0 ]; then
    echo "This command requires root access!"
    echo "Please run: su -c 'gameopt [command]'"
    exit 1
fi

log_msg() {
    echo "[$(date '+%H:%M:%S')] Manual: $1" >> "$LOG_FILE"
}

check_file() {
    if [ ! -f "$1" ]; then
        echo "Error: File $1 not found!"
        return 1
    fi
    return 0
}

case "$1" in
    "perf"|"performance"|"game")
        echo "🔄 Switching to PERFORMANCE mode..."
        log_msg "Manual performance mode activated"
        
       
        if [ -f "/sys/devices/system/cpu/cpufreq/policy0/scaling_governor" ]; then
            for gov in /sys/devices/system/cpu/cpufreq/policy*/scaling_governor; do
                [ -f "$gov" ] && echo "performance" > "$gov" 2>/dev/null && \
                    echo "  CPU$(echo $gov | grep -o 'policy[0-9]*' | grep -o '[0-9]*'): performance"
            done
        else
            echo "  ⚠️ CPU governor not found at standard path"
            
            for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
                [ -f "$cpu" ] && echo "performance" > "$cpu" 2>/dev/null && \
                    echo "  CPU$(echo $cpu | grep -o 'cpu[0-9]*' | grep -o '[0-9]*'): performance"
            done
        fi
        
        
        if [ -f "/sys/class/kgsl/kgsl-3d0/devfreq/governor" ]; then
            echo "performance" > /sys/class/kgsl/kgsl-3d0/devfreq/governor 2>/dev/null
            echo "  GPU: performance (Adreno)"
        fi
        
        
        for mali in /sys/devices/platform/*mali*/devfreq/governor \
                   /sys/devices/platform/*gpu*/devfreq/governor \
                   /sys/devices/*gpu*/devfreq/governor; do
            [ -f "$mali" ] && {
                echo "performance" > "$mali" 2>/dev/null
                echo "  GPU: performance (Mali)"
                break
            }
        done
        
        
        stop thermal-engine 2>/dev/null
        stop thermalservice 2>/dev/null
        echo "  Thermal: throttling reduced"
        
        
        service call vibrator 1 i32 100 i32 0 2>/dev/null
        
        touch /data/local/tmp/game_mode_active 2>/dev/null
        echo "✅ Performance mode ACTIVATED"
        ;;
    
    "bal"|"balanced"|"normal")
        echo "🔄 Switching to BALANCED mode..."
        log_msg "Manual balanced mode activated"
        
       
        if [ -f "/sys/devices/system/cpu/cpufreq/policy0/scaling_governor" ]; then
            for gov in /sys/devices/system/cpu/cpufreq/policy*/scaling_governor; do
                [ -f "$gov" ] && {
                    
                    if grep -q "schedutil" "$gov"; then
                        echo "schedutil" > "$gov" 2>/dev/null && \
                        echo "  CPU$(echo $gov | grep -o 'policy[0-9]*' | grep -o '[0-9]*'): schedutil"
                    else
                        echo "interactive" > "$gov" 2>/dev/null && \
                        echo "  CPU$(echo $gov | grep -o 'policy[0-9]*' | grep -o '[0-9]*'): interactive"
                    fi
                }
            done
        else
            
            for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
                [ -f "$cpu" ] && echo "interactive" > "$cpu" 2>/dev/null && \
                    echo "  CPU$(echo $cpu | grep -o 'cpu[0-9]*' | grep -o '[0-9]*'): interactive"
            done
        fi
        
        
        if [ -f "/sys/class/kgsl/kgsl-3d0/devfreq/governor" ]; then
            echo "msm-adreno-tz" > /sys/class/kgsl/kgsl-3d0/devfreq/governor 2>/dev/null
            echo "  GPU: msm-adreno-tz (balanced)"
        fi
        
       
        for mali in /sys/devices/platform/*mali*/devfreq/governor \
                   /sys/devices/platform/*gpu*/devfreq/governor; do
            [ -f "$mali" ] && {
                echo "simple_ondemand" > "$mali" 2>/dev/null
                echo "  GPU: simple_ondemand (balanced)"
                break
            }
        done
        
        
        start thermal-engine 2>/dev/null
        start thermalservice 2>/dev/null
        echo "  Thermal: normal"
        
        rm -f /data/local/tmp/game_mode_active 2>/dev/null
        echo "✅ Balanced mode ACTIVATED"
        ;;
    
    "add")
        if [ -z "$2" ]; then
            echo "❌ Usage: gameopt add <package.name>"
            echo "Example: gameopt add com.mobile.legends"
            exit 1
        fi
        
        
        if [ ! -f "$APPS_LIST" ]; then
            cat > "$APPS_LIST" << 'EOF'
# Auto-detected gaming apps
com.mobile.legends
com.tencent.ig
com.pubg.krmobile
com.dts.freefireth
com.garena.game.codm
EOF
            echo "📝 Created new gaming apps list"
        fi
        
        
        if grep -q "^$2" "$APPS_LIST" 2>/dev/null; then
            echo "⚠️ Game already in list: $2"
        else
            echo "$2" >> "$APPS_LIST"
            echo "✅ Added: $2"
            log_msg "Added game: $2"
        fi
        ;;
    
    "list"|"ls")
        echo "📱 GAMING APPS LIST:"
        echo "===================="
        if [ -f "$APPS_LIST" ]; then
            grep -v "^#" "$APPS_LIST" 2>/dev/null | nl -w2 -s': '
            count=$(grep -v "^#" "$APPS_LIST" 2>/dev/null | wc -l)
            echo "===================="
            echo "Total: $count games"
        else
            echo "No gaming apps list found!"
            echo "Use: gameopt add <package.name>"
        fi
        ;;
    
    "status"|"stat"|"info")
        echo "📊 MODULE STATUS:"
        echo "================="
        
        
        if [ -d "$MODULE_PATH" ]; then
            echo "✅ Module: Installed"
            if [ -f "$MODULE_PATH/module.prop" ]; then
                name=$(grep "name=" "$MODULE_PATH/module.prop" | cut -d'=' -f2)
                ver=$(grep "version=" "$MODULE_PATH/module.prop" | cut -d'=' -f2)
                echo "  Name: $name"
                echo "  Version: $ver"
            fi
        else
            echo "❌ Module: Not installed"
        fi
        
        if pgrep -f "service.sh" > /dev/null; then
            echo "✅ Service: Running"
        else
            echo "❌ Service: Not running"
        fi
        
       
        if [ -f "/data/local/tmp/game_mode_active" ]; then
            echo "🎮 Game Mode: ACTIVE (Performance)"
        else
            echo "📱 Game Mode: INACTIVE (Balanced)"
        fi
        
        
        echo "⚡ CPU Governors:"
        found=0
        for gov in /sys/devices/system/cpu/cpufreq/policy*/scaling_governor; do
            if [ -f "$gov" ]; then
                cpu_num=$(echo "$gov" | grep -o "policy[0-9]*" | grep -o "[0-9]*")
                current_gov=$(cat "$gov")
                echo "  CPU$cpu_num: $current_gov"
                found=1
            fi
        done
        
        if [ "$found" -eq 0 ]; then
            
            for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
                [ -f "$cpu" ] && {
                    cpu_num=$(echo "$cpu" | grep -o "cpu[0-9]*" | grep -o "[0-9]*")
                    current_gov=$(cat "$cpu")
                    echo "  CPU$cpu_num: $current_gov"
                }
            done
        fi
        
        
        current_app=$(dumpsys activity activities 2>/dev/null | \
            grep -E "mResumedActivity|mFocusedActivity" | \
            grep -o "com\.[a-zA-Z0-9._]*" | head -1)
        
        if [ -n "$current_app" ]; then
            echo "📱 Foreground: $current_app"
            if [ -f "$APPS_LIST" ] && grep -q "^$current_app" "$APPS_LIST" 2>/dev/null; then
                echo "  🎯 Detected as GAME"
            fi
        fi
        
        
        if [ -f "$LOG_FILE" ]; then
            lines=$(wc -l < "$LOG_FILE" 2>/dev/null || echo "0")
            echo "📝 Log entries: $lines lines"
        fi
        ;;
    
    "log")
        echo "📋 RECENT LOGS:"
        echo "================"
        if [ -f "$LOG_FILE" ]; then
            tail -20 "$LOG_FILE" 2>/dev/null || echo "Cannot read log file"
        else
            echo "No log file found at $LOG_FILE"
        fi
        ;;
    
    "test")
        echo "🧪 RUNNING TESTS..."
        echo "1. Testing CPU governor write..."
        test_file="/sys/devices/system/cpu/cpufreq/policy0/scaling_governor"
        if [ -f "$test_file" ]; then
            original=$(cat "$test_file")
            if echo "performance" > "$test_file" 2>/dev/null; then
                sleep 1
                echo "✅ Can write to CPU governor"
                echo "$original" > "$test_file" 2>/dev/null
            else
                echo "❌ Cannot write to CPU governor"
            fi
        else
            echo "⚠️ CPU governor file not found"
        fi
        
        echo "2. Testing log file..."
        if touch "$LOG_FILE" 2>/dev/null; then
            echo "✅ Can write to log file"
        else
            echo "❌ Cannot write to log file"
        fi
        
        echo "3. Testing app detection..."
        test_app=$(dumpsys activity activities 2>/dev/null | head -5)
        if [ -n "$test_app" ]; then
            echo "✅ App detection working"
        else
            echo "❌ App detection failed"
        fi
        ;;
    
    "help"|"--help"|"-h")
        echo "🎮 AUTO GAME OPTIMIZER - HELP"
        echo "=============================="
        echo "Commands:"
        echo "  gameopt perf      - Switch to PERFORMANCE mode"
        echo "  gameopt bal       - Switch to BALANCED mode"
        echo "  gameopt add <pkg> - Add game to auto-detect list"
        echo "  gameopt list      - Show gaming apps list"
        echo "  gameopt status    - Show current status"
        echo "  gameopt log       - Show recent logs"
        echo "  gameopt test      - Run diagnostic tests"
        echo "  gameopt help      - Show this help"
        echo ""
        echo "Examples:"
        echo "  su -c 'gameopt perf'"
        echo "  su -c 'gameopt add com.example.game'"
        echo "  su -c 'gameopt status'"
        echo ""
        echo "Note: All commands require root access"
        ;;
    
    *)
        echo "❌ Unknown command: $1"
        echo "💡 Use: gameopt help"
        exit 1
        ;;
esac

exit 0