import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:provider/provider.dart';

// [C] 공통 서비스
import 'package:service_api/service_api.dart';
// [A] 공통 UI 셸 (인트로 화면)
import 'package:feature_common/feature_common.dart'; 
// [B] 순서 기억 게임 (로비 화면)
import 'package:feature_game_sequence/feature_game_sequence.dart'; // 👈 [신규]

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // MobileAds 초기화는 앱 시작 시 한 번만 수행
  await MobileAds.instance.initialize();

  runApp(
    MultiProvider(
      providers: [
        // 1. ThemeNotifier (테마 관리)
        ChangeNotifierProvider(
          create: (_) => ThemeNotifier(),
        ),
        
        // 2. SessionNotifier (로그인/세션 관리)
        ChangeNotifierProvider(
          create: (_) => SessionNotifier(),
        ),

        // 3. PuzzleService (랭킹/게임 시작 API)
        Provider(
          create: (_) => PuzzleService(),
        ),

        // 4. IdentityService (유저/레벨/랭킹 이력 관리)
        Provider(
          create: (_) => IdentityService(),
        ),
      ],
      child: const MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // 테마 감지 및 최적화
    final themeData = context.select((ThemeNotifier n) => n.currentTheme);
    final darkThemeData = context.select((ThemeNotifier n) => n.currentDarkTheme);
    final themeMode = context.select((ThemeNotifier n) => n.currentThemeMode);

    return MaterialApp(
      title: '순서 기억 게임', // 👈 앱 이름 변경
      theme: themeData,
      darkTheme: darkThemeData,
      themeMode: themeMode,
      debugShowCheckedModeBanner: false,

      // 🔽 [🔥 핵심] IntroScreen 다음에 SequenceLobbyScreen이 표시되도록 지정
      home: IntroScreen(
        nextScreenBuilder: (context) =>  SequenceLobbyScreen(), // 👈 [수정]
      ),
    );
  }
}