Beispiel #1
0
 /// <summary>
 /// Загрузка уровня с сервера или из кэша, если уже был скачан.
 /// </summary>
 /// <param name="id">Индекс уровня из <see cref="Summary"></param>
 public static IEnumerator GetLevelJson(int id, HandleLevelJson callback, HandleApiError errorHandler = null)
 {
     if (levelsJsons.ContainsKey(id))
     {
         callback(levelsJsons[id]);
     }
     else
     {
         Debug.Log($"Loading level {id}");
         activeRequests++;
         yield return(Net.Get(FormUrl($"/l/{id}/json"),
                              (string text) => {
             activeRequests--;
             levelsJsons[id] = text;
             callback(levelsJsons[id]);
             // TODO: Error handling
         },
                              (long code) => {
             activeRequests--;
             var errmsg = $"Failed to load level {id}: error {code}";
             Debug.LogError(errmsg);
             onError.Invoke(errmsg);
             if (errorHandler != null)
             {
                 errorHandler($"Network error {code}");
             }
         }
                              ));
     }
 }
Beispiel #2
0
 public static IEnumerator UploadLevel(string author, string json, HandleLevelId callback, HandleApiError errorHandler)
 {
     activeRequests++;
     yield return(Net.Post(FormUrl($"/u/{author}/upload"), json, (string text) => {
         activeRequests--;
         var uploadInfo = JsonUtility.FromJson <UploadInfo>(text);
         if (uploadInfo.success)
         {
             callback(uploadInfo.levelId);
         }
         else
         {
             var err = JsonUtility.FromJson <Error>(text);
             var errmsg = $"api error: {err.error}";
             Debug.LogError(errmsg);
             onError.Invoke(errmsg);
             if (errorHandler != null)
             {
                 errorHandler(err.error);
             }
         }
     }, (long code ) => {
         activeRequests--;
         var errmsg = $"Failed to upload level: error {code}";
         Debug.LogError(errmsg);
         onError.Invoke(errmsg);
         if (errorHandler != null)
         {
             errorHandler($"Network error {code}");
         }
     }));
 }