#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Скрипт для проверки размеров шин в оптимизированном файле
"""

def check_tire_sizes():
    filename = "generated_tyres_optimized.ini"
    
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            content = f.read()
    except FileNotFoundError:
        print(f"Файл {filename} не найден!")
        return
    
    # Ищем несколько конкретных размеров для проверки
    test_sizes = [
        "220/200/240", "220/225/260", "220/250/280",
        "300/350/300", "300/375/320", 
        "380/500/360"
    ]
    
    print("Проверка размеров шин:")
    print("=" * 60)
    
    for size in test_sizes:
        matches = []
        lines = content.split('\n')
        
        for i, line in enumerate(lines):
            if f"NAME=" in line and size in line:
                # Извлекаем следующие строки для получения WIDTH, RADIUS, RIM_RADIUS
                width_line = ""
                radius_line = ""
                rim_radius_line = ""
                
                for j in range(i+1, min(i+10, len(lines))):
                    if "WIDTH=" in lines[j]:
                        width_line = lines[j].strip()
                    elif "RADIUS=" in lines[j] and "RIM_RADIUS" not in lines[j]:
                        radius_line = lines[j].strip()
                    elif "RIM_RADIUS=" in lines[j]:
                        rim_radius_line = lines[j].strip()
                
                tire_type = "Street" if "Street" in line else ("Realistic" if "Realistic" in line else "Grip")
                matches.append({
                    'type': tire_type,
                    'width': width_line,
                    'radius': radius_line,
                    'rim_radius': rim_radius_line
                })
        
        print(f"\n🔍 Размер {size}:")
        if matches:
            for match in matches[:1]:  # Показываем только первый найденный
                print(f"  Тип: {match['type']}")
                print(f"  {match['width']}")
                print(f"  {match['radius']}")
                print(f"  {match['rim_radius']}")
        else:
            print("  ❌ Не найден")
    
    # Подсчитываем общее количество секций
    total_sections = content.count('[FRONT_') + content.count('[REAR_')
    thermal_sections = content.count('[THERMAL_FRONT_') + content.count('[THERMAL_REAR_')
    
    print(f"\n📊 Статистика оптимизированного файла:")
    print(f"  Всего секций шин: {total_sections:,}")
    print(f"  Термальных секций: {thermal_sections:,}")
    print(f"  Общий размер файла: {len(content):,} символов")
    print(f"  Размер файла: {len(content) / 1024 / 1024:.1f} МБ")
    
    # Проверяем диапазоны
    print(f"\n📏 Проверка диапазонов:")
    
    # Проверяем ширины
    widths = set()
    radiuses = set()
    rim_sizes = set()
    
    lines = content.split('\n')
    for line in lines:
        if "NAME=" in line and "/" in line and "Street" in line:
            parts = line.split()
            if len(parts) >= 3:
                # Ищем часть с размерами (например "220/200/240")
                for part in parts:
                    if "/" in part and part.count("/") == 2:
                        try:
                            width, radius, rim = part.split("/")
                            widths.add(int(width))
                            radiuses.add(int(radius))
                            rim_sizes.add(int(rim))
                            break
                        except ValueError:
                            continue
    
    if widths and radiuses and rim_sizes:
        print(f"  Ширины: {min(widths)} - {max(widths)}мм (найдено {len(widths)} размеров)")
        print(f"  Радиусы: {min(radiuses)} - {max(radiuses)}мм (найдено {len(radiuses)} размеров)")
        print(f"  Диски: {min(rim_sizes)} - {max(rim_sizes)}мм (найдено {len(rim_sizes)} размеров)")
        
        # Показываем все найденные размеры
        print(f"\n🔧 Все размеры ширин: {sorted(widths)}")
        print(f"🔧 Все радиусы: {sorted(radiuses)}")
        print(f"🔧 Все размеры дисков: {sorted(rim_sizes)}")
    else:
        print("  ❌ Не удалось извлечь информацию о диапазонах")

if __name__ == "__main__":
    check_tire_sizes() 