// =============================================================================
// TudadaSDK System Types
//
// 시스템 정보 관련 API 타입 정의 (SystemInfo, WindowInfo, DeviceInfo 등)
// =============================================================================

using System;

namespace Tudada
{
    /// <summary>
    /// 플랫폼 타입
    /// </summary>
    public enum Platform
    {
        ios,
        android,
        windows,
        mac,
        devtools
    }

    /// <summary>
    /// 안전 영역 정보
    /// </summary>
    [Serializable]
    public class SafeArea
    {
        /// <summary>
        /// 안전 영역 좌상단 X 좌표
        /// </summary>
        public float left;

        /// <summary>
        /// 안전 영역 우하단 X 좌표
        /// </summary>
        public float right;

        /// <summary>
        /// 안전 영역 좌상단 Y 좌표
        /// </summary>
        public float top;

        /// <summary>
        /// 안전 영역 우하단 Y 좌표
        /// </summary>
        public float bottom;

        /// <summary>
        /// 안전 영역 너비 (논리 픽셀)
        /// </summary>
        public float width;

        /// <summary>
        /// 안전 영역 높이 (논리 픽셀)
        /// </summary>
        public float height;
    }

    /// <summary>
    /// 호스트 앱 정보
    /// </summary>
    [Serializable]
    public class HostInfo
    {
        /// <summary>
        /// 앱 ID
        /// </summary>
        public string appId;
    }

    /// <summary>
    /// 시스템 정보 (통합)
    /// </summary>
    [Serializable]
    public class SystemInfo
    {
        /// <summary>
        /// 기초 라이브러리 버전
        /// </summary>
        public string SDKVersion;

        /// <summary>
        /// Tudada 서비스 버전
        /// </summary>
        public string version;

        /// <summary>
        /// 디버그 모드 활성화 여부
        /// </summary>
        public bool enableDebug;

        /// <summary>
        /// 사용자 글꼴 크기 설정 (px) - 호환용 (고정값 16)
        /// </summary>
        public int fontSizeSetting;

        /// <summary>
        /// 호스트 앱 정보
        /// </summary>
        public HostInfo host;

        /// <summary>
        /// 접속 환경 (prod/dev)
        /// </summary>
        public string environment;

        /// <summary>
        /// 호스트 서비스 플랫폼 (kakaotalk/kakaopay/house) — 게임이 어느 서비스에서 실행 중인지
        /// </summary>
        public string servicePlatform;

        /// <summary>
        /// 디바이스 픽셀 비율
        /// </summary>
        public float pixelRatio;

        /// <summary>
        /// 화면 너비 (px)
        /// </summary>
        public float screenWidth;

        /// <summary>
        /// 화면 높이 (px)
        /// </summary>
        public float screenHeight;

        /// <summary>
        /// 사용 가능한 창 너비 (px)
        /// </summary>
        public float windowWidth;

        /// <summary>
        /// 사용 가능한 창 높이 (px)
        /// </summary>
        public float windowHeight;

        /// <summary>
        /// 상태바 높이 (px)
        /// </summary>
        public float statusBarHeight;

        /// <summary>
        /// 안전 영역 정보
        /// </summary>
        public SafeArea safeArea;

        /// <summary>
        /// 디바이스 브랜드
        /// </summary>
        public string brand;

        /// <summary>
        /// 디바이스 모델
        /// </summary>
        public string model;

        /// <summary>
        /// OS 및 버전
        /// </summary>
        public string system;

        /// <summary>
        /// 디바이스 성능 등급 (Android 전용)
        /// </summary>
        public int benchmarkLevel;

        /// <summary>
        /// 언어 설정
        /// </summary>
        public string language;

        /// <summary>
        /// 테마 (light/dark)
        /// </summary>
        public string theme;

        /// <summary>
        /// 디바이스 방향
        /// </summary>
        public string deviceOrientation;

        /// <summary>
        /// 플랫폼 (ios/android/windows/mac/devtools)
        /// </summary>
        public string platform;
    }

    /// <summary>
    /// 창 정보
    /// </summary>
    [Serializable]
    public class WindowInfo
    {
        /// <summary>
        /// 디바이스 픽셀 비율
        /// </summary>
        public float pixelRatio;

        /// <summary>
        /// 화면 너비 (px)
        /// </summary>
        public float screenWidth;

        /// <summary>
        /// 화면 높이 (px)
        /// </summary>
        public float screenHeight;

        /// <summary>
        /// 사용 가능한 창 너비 (px)
        /// </summary>
        public float windowWidth;

        /// <summary>
        /// 사용 가능한 창 높이 (px)
        /// </summary>
        public float windowHeight;

        /// <summary>
        /// 상태바 높이 (px)
        /// </summary>
        public float statusBarHeight;

        /// <summary>
        /// 안전 영역 정보
        /// </summary>
        public SafeArea safeArea;

        /// <summary>
        /// 창 상단 Y 값
        /// </summary>
        public float screenTop;
    }

    /// <summary>
    /// 앱 기본 정보
    /// </summary>
    [Serializable]
    public class AppBaseInfo
    {
        /// <summary>
        /// 기초 라이브러리 버전
        /// </summary>
        public string SDKVersion;

        /// <summary>
        /// Tudada 서비스 버전
        /// </summary>
        public string version;

        /// <summary>
        /// 디버그 모드 활성화 여부
        /// </summary>
        public bool enableDebug;

        /// <summary>
        /// 사용자 글꼴 크기 설정 (px) - 호환용 (고정값 16)
        /// </summary>
        public int fontSizeSetting;

        /// <summary>
        /// 호스트 앱 정보
        /// </summary>
        public HostInfo host;

        /// <summary>
        /// 접속 환경 (prod/dev)
        /// </summary>
        public string environment;

        /// <summary>
        /// 호스트 서비스 플랫폼 (kakaotalk/kakaopay/house) — 게임이 어느 서비스에서 실행 중인지
        /// </summary>
        public string servicePlatform;

        /// <summary>
        /// 테마 설정 (light/dark)
        /// </summary>
        public string theme;

        /// <summary>
        /// 사용자 설정 언어
        /// </summary>
        public string language;
    }

    /// <summary>
    /// 디바이스 정보
    /// </summary>
    [Serializable]
    public class DeviceInfo
    {
        /// <summary>
        /// 디바이스 브랜드
        /// </summary>
        public string brand;

        /// <summary>
        /// 디바이스 모델
        /// </summary>
        public string model;

        /// <summary>
        /// OS 및 버전
        /// </summary>
        public string system;

        /// <summary>
        /// 디바이스 성능 등급 (Android 전용)
        /// </summary>
        public int benchmarkLevel;

        /// <summary>
        /// 클라이언트 플랫폼 (ios/android/windows/mac/devtools)
        /// </summary>
        public string platform;
    }

    /// <summary>
    /// 메뉴 버튼 위치 정보
    /// </summary>
    [Serializable]
    public class MenuButtonRect
    {
        /// <summary>
        /// 너비 (px)
        /// </summary>
        public float width;

        /// <summary>
        /// 높이 (px)
        /// </summary>
        public float height;

        /// <summary>
        /// 상단 좌표 (px)
        /// </summary>
        public float top;

        /// <summary>
        /// 우측 좌표 (px)
        /// </summary>
        public float right;

        /// <summary>
        /// 하단 좌표 (px)
        /// </summary>
        public float bottom;

        /// <summary>
        /// 좌측 좌표 (px)
        /// </summary>
        public float left;
    }

    /// <summary>
    /// getSystemInfo 성공 결과
    /// </summary>
    [Serializable]
    public class GetSystemInfoResult
    {
        /// <summary>
        /// 에러 메시지
        /// </summary>
        public string errMsg;

        /// <summary>
        /// 시스템 정보
        /// </summary>
        public SystemInfo systemInfo;
    }
}
