// =============================================================================
// TudadaSDK Constants
//
// SDK 전역에서 사용되는 상수 정의
// =============================================================================

namespace Tudada.Internal
{
    /// <summary>
    /// SDK 전역 상수
    /// </summary>
    internal static class Constants
    {
        #region GameObject Names

        /// <summary>
        /// jslib SendMessage 대상 GameObject 이름
        /// </summary>
        public const string GAME_OBJECT_NAME = "TudadaSDKHandler";

        #endregion

        #region Storage Key Prefixes

        /// <summary>
        /// 로컬 스토리지 키 프리픽스
        /// </summary>
        public const string STORAGE_KEY_PREFIX = "TudadaSDK_";

        /// <summary>
        /// 클라우드 스토리지 키 프리픽스 (에디터 시뮬레이션용)
        /// </summary>
        public const string TUDADA_STORE_KEY_PREFIX = "TudadaStore_";

        #endregion

        #region Callback Separator

        /// <summary>
        /// 콜백 데이터 구분자
        /// </summary>
        public const char CALLBACK_SEPARATOR = '|';

        #endregion

        #region Log Prefixes

        /// <summary>
        /// 로그 프리픽스
        /// </summary>
        public const string LOG_PREFIX = "[TudadaSDK]";

        /// <summary>
        /// 광고 로그 프리픽스
        /// </summary>
        public const string AD_LOG_PREFIX = "[TudadaRewardedVideoAd]";

        /// <summary>
        /// 가속도계 로그 프리픽스
        /// </summary>
        public const string ACCELEROMETER_LOG_PREFIX = "[TudadaAccelerometerSensor]";

        /// <summary>
        /// 에디터 로그 프리픽스
        /// </summary>
        public const string EDITOR_LOG_SUFFIX = "(Editor)";

        #endregion

        #region Default Values

        /// <summary>
        /// 기본 SDK 버전
        /// </summary>
        public const string DEFAULT_SDK_VERSION = "1.0.0";

        /// <summary>
        /// 기본 폰트 크기
        /// </summary>
        public const int DEFAULT_FONT_SIZE = 16;

        /// <summary>
        /// 기본 스토리지 제한 (KB)
        /// </summary>
        public const float DEFAULT_STORAGE_LIMIT_KB = 10240f;

        /// <summary>
        /// 기본 메뉴 버튼 너비
        /// </summary>
        public const float DEFAULT_MENU_BUTTON_WIDTH = 87f;

        /// <summary>
        /// 기본 메뉴 버튼 높이
        /// </summary>
        public const float DEFAULT_MENU_BUTTON_HEIGHT = 32f;

        /// <summary>
        /// 기본 메뉴 버튼 상단 위치
        /// </summary>
        public const float DEFAULT_MENU_BUTTON_TOP = 4f;

        /// <summary>
        /// 기본 메뉴 버튼 우측 여백
        /// </summary>
        public const float DEFAULT_MENU_BUTTON_RIGHT_MARGIN = 7f;

        /// <summary>
        /// 기본 메뉴 버튼 좌측 여백
        /// </summary>
        public const float DEFAULT_MENU_BUTTON_LEFT_MARGIN = 94f;

        #endregion
    }

    /// <summary>
    /// 에러/성공 메시지 상수
    /// </summary>
    internal static class Messages
    {
        #region Storage Messages

        public const string SET_STORAGE_OK = "setStorage:ok";
        public const string SET_STORAGE_FAIL = "setStorage:fail";
        public const string GET_STORAGE_OK = "getStorage:ok";
        public const string GET_STORAGE_FAIL = "getStorage:fail";
        public const string REMOVE_STORAGE_OK = "removeStorage:ok";
        public const string REMOVE_STORAGE_FAIL = "removeStorage:fail";
        public const string CLEAR_STORAGE_OK = "clearStorage:ok";
        public const string CLEAR_STORAGE_FAIL = "clearStorage:fail";

        #endregion

        #region TudadaStore Messages

        public const string TUDADA_STORE_SAVE_OK = "tudadaStoreSave:ok";
        public const string TUDADA_STORE_SAVE_FAIL = "tudadaStoreSave:fail";
        public const string TUDADA_STORE_GET_OK = "tudadaStoreGet:ok";
        public const string TUDADA_STORE_GET_FAIL = "tudadaStoreGet:fail";

        #endregion

        #region Auth Messages

        public const string LOGIN_OK = "login:ok";
        public const string LOGIN_FAIL = "login:fail";
        public const string CHECK_SESSION_OK = "checkSession:ok";
        public const string CHECK_SESSION_FAIL = "checkSession:fail";
        public const string GET_USER_INFO_OK = "getUserInfo:ok";
        public const string GET_USER_INFO_FAIL = "getUserInfo:fail";

        #endregion

        #region Device Messages

        public const string VIBRATE_SHORT_OK = "vibrateShort:ok";
        public const string VIBRATE_SHORT_FAIL = "vibrateShort:fail";
        public const string VIBRATE_LONG_OK = "vibrateLong:ok";
        public const string VIBRATE_LONG_FAIL = "vibrateLong:fail";
        public const string SHOW_KEYBOARD_OK = "showKeyboard:ok";
        public const string SHOW_KEYBOARD_FAIL = "showKeyboard:fail";
        public const string HIDE_KEYBOARD_OK = "hideKeyboard:ok";
        public const string HIDE_KEYBOARD_FAIL = "hideKeyboard:fail";
        public const string SET_CLIPBOARD_DATA_OK = "setClipboardData:ok";
        public const string SET_CLIPBOARD_DATA_FAIL = "setClipboardData:fail";
        public const string GET_CLIPBOARD_DATA_OK = "getClipboardData:ok";
        public const string GET_CLIPBOARD_DATA_FAIL = "getClipboardData:fail";

        #endregion

        #region Lifecycle Messages

        public const string EXIT_MINI_PROGRAM_OK = "exitMiniProgram:ok";
        public const string EXIT_MINI_PROGRAM_FAIL = "exitMiniProgram:fail";
        public const string RESTART_MINI_PROGRAM_OK = "restartMiniProgram:ok";
        public const string RESTART_MINI_PROGRAM_FAIL = "restartMiniProgram:fail";

        #endregion

        #region Ad Messages

        public const string AD_LOAD_OK = "load:ok";
        public const string AD_LOAD_FAIL = "load:fail";
        public const string AD_SHOW_OK = "show:ok";
        public const string AD_SHOW_FAIL = "show:fail";
        public const string AD_DESTROYED = "Ad instance is destroyed";
        public const string AD_NOT_LOADED = "Ad is not loaded";

        #endregion

        #region Accelerometer Messages

        public const string ACCELEROMETER_START_OK = "startAccelerometerSensor:ok";
        public const string ACCELEROMETER_START_FAIL = "startAccelerometerSensor:fail";
        public const string ACCELEROMETER_STOP_OK = "stopAccelerometerSensor:ok";
        public const string ACCELEROMETER_STOP_FAIL = "stopAccelerometerSensor:fail";

        #endregion

        #region ShareForReward Messages

        public const string SHARE_FOR_REWARD_OK = "shareForReward:ok";
        public const string SHARE_FOR_REWARD_FAIL = "shareForReward:fail";

        #endregion

        #region CheckFeature Messages

        public const string CHECK_FEATURE_OK = "checkFeature:ok";
        public const string CHECK_FEATURE_FAIL = "checkFeature:fail";

        #endregion

        #region Error Messages

        public const string SDK_NOT_LOADED = "tudadaSDK not loaded";
        public const string INVALID_CALLBACK_DATA = "Invalid callback data";

        #endregion
    }
}
