示例#1
0
        public IEnumerator GetContainerInfo(string prefix, Action <StorageContainerQueryResult> resultCallBack)
        {
            yield return(null);

            if (resultCallBack != null)
            {
#if ENABLE_WINMD_SUPPORT
                if (this.gameSaveProvider != null)
                {
                    var query      = this.gameSaveProvider.CreateContainerInfoQuery(prefix);
                    var resultList = new List <StorageContainerInfo>();
                    query.GetContainerInfoAsync().AsTask().ContinueWith(
                        queryTask =>
                    {
                        var gameSaveQueryResults = queryTask.Result;
                        foreach (var resultgameSaveContainerInfo in gameSaveQueryResults.Value)
                        {
                            var containerInfo = new StorageContainerInfo
                            {
                                Name             = resultgameSaveContainerInfo.Name,
                                DisplayName      = resultgameSaveContainerInfo.DisplayName,
                                LastModifiedTime = resultgameSaveContainerInfo.LastModifiedTime,
                                NeedsSync        = resultgameSaveContainerInfo.NeedsSync,
                                TotalSize        = resultgameSaveContainerInfo.TotalSize
                            };
                            resultList.Add(containerInfo);
                        }

                        var status      = (GameSaveStatus)Enum.Parse(typeof(GameSaveStatus), gameSaveQueryResults.Status.ToString());
                        var queryResult = new StorageContainerQueryResult
                        {
                            Value  = resultList,
                            Status = status
                        };

                        resultCallBack(queryResult);
                    });
                }
                else
                {
                    var errorMessage = "An Exception Occured: Game Save Provider hasn't been initialized yet. Initialize needs to be called first.";
                    ExceptionManager.Instance.ThrowException(
                        ExceptionSource.GameSaveManager,
                        ExceptionType.GameSaveProviderNotInitialized,
                        new Exception(errorMessage));
                }
#else
                var resultList     = new List <StorageContainerInfo>();
                var firstContainer = new StorageContainerInfo
                {
                    Name             = "Container01",
                    DisplayName      = "Display Name 01",
                    LastModifiedTime = DateTime.Now,
                    NeedsSync        = false,
                    TotalSize        = 1024
                };
                resultList.Add(firstContainer);
                var secondContainer = new StorageContainerInfo
                {
                    Name             = "Container02",
                    DisplayName      = "Display Name 02",
                    LastModifiedTime = DateTime.Now,
                    NeedsSync        = false,
                    TotalSize        = 2048
                };
                resultList.Add(secondContainer);
                var queryResult = new StorageContainerQueryResult
                {
                    Status = GameSaveStatus.Ok,
                    Value  = resultList
                };
                resultCallBack(queryResult);
#endif
            }
        }