/// <summary>
        /// Initialize the GameFoundation . It need a persistence object to be passed as argument to set the default persistence layer
        /// If the initialization fails, onInitializeFailed will be called with an exception.
        /// </summary>
        /// <param name="dataPersistence">The persistence layer of the Game Foundation. Required and cached for future execution</param>
        /// <param name="onInitializeCompleted">Called when the initialization process is completed with success</param>
        /// <param name="onInitializeFailed">Called when the initialization process failed</param>
        public static void InitializeAppSettings(
            IDataPersistence dataPersistence        = null,
            IDataSerializationAdapter dataFormatter = null,
            Action onInitializeCompleted            = null,
            Action onInitializeFailed = null)
        {
            if (m_AppSettingsInitializationStatus == InitializationStatus.Initializing ||
                m_AppSettingsInitializationStatus == InitializationStatus.Initialized)
            {
                Debug.LogWarning("AppSettings is already initialized and cannot be initialized again.");
                onInitializeFailed?.Invoke();

                return;
            }

            m_AppSettingsInitializationStatus = InitializationStatus.Initializing;

            if (dataPersistence != null && dataFormatter != null)
            {
                LoadAppSettingsData(dataPersistence,
                                    (data) =>
                {
                    InitializeAppSettings(data, dataFormatter, onInitializeCompleted, onInitializeFailed);
                },
                                    () =>
                {
                    InitializeAppSettings(null as ISerializableData, dataFormatter, onInitializeCompleted, onInitializeFailed);
                });
            }
            else
            {
                InitializeAppSettings(null as ISerializableData, dataFormatter, onInitializeCompleted, onInitializeFailed);
            }
        }
        static void InitializeAppSettings(ISerializableData data, IDataSerializationAdapter dataFormatter, Action onInitializeCompleted = null, Action onInitializeFailed = null)
        {
            bool isInitialized = true;

            try
            {
                AppSettings.Database.DataFormatter = dataFormatter;
                AppSettings.Database.Initialize(data);

                isInitialized = true;
            }
            catch
            {
                isInitialized = false;
            }

            if (isInitialized)
            {
                m_AppSettingsInitializationStatus = InitializationStatus.Initialized;
                onInitializeCompleted?.Invoke();
            }
            else
            {
                UninitializeAppSettings();

                Debug.LogWarning("AppSettings can't be initialized.");

                m_AppSettingsInitializationStatus = InitializationStatus.Failed;
                onInitializeFailed?.Invoke();
            }
        }
Exemple #3
0
        protected override IStorageHelper CreateStorageHelperForRemote(IDataSerializationAdapter serializationAdapter)
        {
            IStorageHelper storageHelper = null;

            if (!m_remoteStorageInOneEntry)
            {
                storageHelper = serializationAdapter.GetSerializableData() as IStorageHelper;
                if (storageHelper != null)
                {
                    storageHelper.StorageHelperType = StorageHelperType.PlayFab;
                }
            }

            return(storageHelper);
        }